From f9e2581f0eefa77aa2322e8a37f7135b819ad302 Mon Sep 17 00:00:00 2001 From: Alexandre Adomnicai Date: Thu, 14 May 2020 16:34:18 +0200 Subject: [PATCH] renaming some skinny and romulus implementations --- romulus/Implementations/crypto_aead/romulusm1+v12/LWC_AEAD_KAT_128_128.txt | 7623 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/api.h | 5 ----- romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/crypto_aead.h | 13 ------------- romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/encrypt.c | 383 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/romulus.h | 69 --------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.h | 15 --------------- romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.s | 1706 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/api.h | 5 ----- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/crypto_aead.h | 18 ------------------ romulus/Implementations/crypto_aead/romulusm1+v12/opt32/encrypt.c | 367 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/romulus.h | 69 --------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.c | 107 ----------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.h | 95 ----------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.c | 368 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.h | 39 --------------------------------------- romulus/Implementations/crypto_aead/romulusm1+v13/LWC_AEAD_KAT_128_128.txt | 7623 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/api.h | 5 +++++ romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/crypto_aead.h | 13 +++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/encrypt.c | 383 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/romulus.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.h | 15 +++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.s | 1706 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/api.h | 5 +++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/crypto_aead.h | 18 ++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/encrypt.c | 367 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/romulus.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.h | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.c | 368 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.h | 39 +++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc/api.h | 5 ----- romulus/Implementations/crypto_aead/romulusm1v12/armsrc/crypto_aead.h | 11 ----------- romulus/Implementations/crypto_aead/romulusm1v12/armsrc/encrypt.c | 738 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ romulus/Implementations/crypto_aead/romulusm1v12/armsrc/genkat_aead.c | 161 ----------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny.h | 8 -------- romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule2.c | 3027 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c | 2898 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_main.c | 4687 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/api.h | 5 +++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/crypto_aead.h | 11 +++++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/encrypt.c | 738 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/genkat_aead.c | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny.h | 8 ++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule2.c | 3027 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule3.c | 2898 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_main.c | 4687 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v12/LWC_AEAD_KAT_128_128.txt | 7623 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/api.h | 5 ----- romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/crypto_aead.h | 13 ------------- romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/encrypt.c | 261 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/romulus.h | 68 -------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.h | 15 --------------- romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.s | 1706 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/opt32/api.h | 5 ----- romulus/Implementations/crypto_aead/romulusn1+v12/opt32/crypto_aead.h | 18 ------------------ romulus/Implementations/crypto_aead/romulusn1+v12/opt32/encrypt.c | 270 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ romulus/Implementations/crypto_aead/romulusn1+v12/opt32/romulus.h | 68 -------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.c | 107 ----------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.h | 95 ----------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.c | 368 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.h | 39 --------------------------------------- romulus/Implementations/crypto_aead/romulusn1+v13/LWC_AEAD_KAT_128_128.txt | 7623 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/api.h | 5 +++++ romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/crypto_aead.h | 13 +++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/encrypt.c | 261 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/romulus.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.h | 15 +++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.s | 1706 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/api.h | 5 +++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/crypto_aead.h | 18 ++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/encrypt.c | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/romulus.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.h | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.c | 368 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.h | 39 +++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc/api.h | 5 ----- romulus/Implementations/crypto_aead/romulusn1v12/armsrc/crypto_aead.h | 11 ----------- romulus/Implementations/crypto_aead/romulusn1v12/armsrc/encrypt.c | 540 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ romulus/Implementations/crypto_aead/romulusn1v12/armsrc/genkat_aead.c | 161 ----------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny.h | 8 -------- romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule2.c | 3027 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c | 2898 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_main.c | 4687 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/api.h | 5 +++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/crypto_aead.h | 11 +++++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c | 540 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/genkat_aead.c | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny.h | 8 ++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule2.c | 3027 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c | 2898 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_main.c | 4687 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadm1+v11/LWC_AEAD_KAT_128_128.txt | 7623 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/api.h | 5 ----- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/crypto_aead.h | 18 ------------------ skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/encrypt.c | 201 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.h | 16 ---------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.s | 2137 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinnyaead.h | 39 --------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/api.h | 5 ----- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/crypto_aead.h | 13 ------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/encrypt.c | 298 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.h | 17 ----------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.s | 3426 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinnyaead.h | 40 ---------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/api.h | 5 ----- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/crypto_aead.h | 18 ------------------ skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/encrypt.c | 197 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.c | 190 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.h | 177 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinnyaead.h | 32 -------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.c | 368 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.h | 39 --------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/api.h | 5 ----- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/crypto_aead.h | 18 ------------------ skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/encrypt.c | 293 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.c | 202 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.h | 125 ----------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinnyaead.h | 32 -------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.c | 464 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.h | 72 ------------------------------------------------------------------------ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/LWC_AEAD_KAT_128_128.txt | 7623 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/api.h | 5 +++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/crypto_aead.h | 18 ++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/encrypt.c | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.h | 16 ++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.s | 2137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinnyaead.h | 39 +++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/api.h | 5 +++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/crypto_aead.h | 13 +++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/encrypt.c | 298 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.h | 17 +++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.s | 3426 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinnyaead.h | 40 ++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/api.h | 5 +++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/crypto_aead.h | 18 ++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/encrypt.c | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.c | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.h | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinnyaead.h | 32 ++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.c | 368 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.h | 39 +++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/api.h | 5 +++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/crypto_aead.h | 18 ++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/encrypt.c | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.c | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.h | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinnyaead.h | 32 ++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.c | 464 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 150 files changed, 60490 insertions(+), 60490 deletions(-) delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/LWC_AEAD_KAT_128_128.txt delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/api.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/crypto_aead.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/encrypt.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/romulus.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.s delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/api.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/crypto_aead.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/encrypt.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/romulus.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/LWC_AEAD_KAT_128_128.txt create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/api.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/crypto_aead.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/encrypt.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/romulus.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.s create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/api.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/crypto_aead.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/encrypt.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/romulus.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/api.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/crypto_aead.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/encrypt.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/genkat_aead.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny.h delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule2.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c delete mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_main.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/api.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/crypto_aead.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/encrypt.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/genkat_aead.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny.h create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule2.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule3.c create mode 100644 romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_main.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/LWC_AEAD_KAT_128_128.txt delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/api.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/crypto_aead.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/encrypt.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/romulus.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.s delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/api.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/crypto_aead.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/encrypt.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/romulus.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/LWC_AEAD_KAT_128_128.txt create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/api.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/crypto_aead.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/encrypt.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/romulus.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.s create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/api.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/crypto_aead.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/encrypt.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/romulus.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/api.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/crypto_aead.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/encrypt.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/genkat_aead.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny.h delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule2.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c delete mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_main.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/api.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/crypto_aead.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/genkat_aead.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny.h create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule2.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c create mode 100644 romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_main.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/LWC_AEAD_KAT_128_128.txt delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/api.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/crypto_aead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/encrypt.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.s delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinnyaead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/api.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/crypto_aead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/encrypt.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.s delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinnyaead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/api.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/crypto_aead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/encrypt.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinnyaead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/api.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/crypto_aead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/encrypt.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinnyaead.h delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.c delete mode 100644 skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/LWC_AEAD_KAT_128_128.txt create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/api.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/crypto_aead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/encrypt.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.s create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinnyaead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/api.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/crypto_aead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/encrypt.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.s create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinnyaead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/api.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/crypto_aead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/encrypt.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinnyaead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/api.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/crypto_aead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/encrypt.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinnyaead.h create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.c create mode 100644 skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.h diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/LWC_AEAD_KAT_128_128.txt b/romulus/Implementations/crypto_aead/romulusm1+v12/LWC_AEAD_KAT_128_128.txt deleted file mode 100644 index 24ecfd7..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/LWC_AEAD_KAT_128_128.txt +++ /dev/null @@ -1,7623 +0,0 @@ -Count = 1 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = -CT = 1866911F9E436083F788BBF27C62180A - -Count = 2 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00 -CT = 111C6F780802BB6A6E8686408FF08D6A - -Count = 3 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001 -CT = E2D3227EB942543A4988C59C16B696DD - -Count = 4 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102 -CT = 08FECA98C7581ACFC042AA3CC5CD5408 - -Count = 5 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203 -CT = 60E45A18AA85AC51E74AF13DB36308F5 - -Count = 6 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001020304 -CT = 74A33F25C1AE488B07190F868E3421EB - -Count = 7 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405 -CT = 86D53E9861FE1DB8277CF50801100EBA - -Count = 8 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203040506 -CT = 3518A21D26C30E8CBADED094B5ACA042 - -Count = 9 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001020304050607 -CT = 2135BA52B0149CDF777D08B5F04BEF0A - -Count = 10 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708 -CT = 93C4A4AF1910FAA1F5342C14551D2FC2 - -Count = 11 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203040506070809 -CT = 744ACC075CECF6A1A1E1B2DABDA34987 - -Count = 12 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A -CT = 65166EBBF08569C2A1C996AE79034419 - -Count = 13 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B -CT = 109D49FFFC203DE880126A9B1473EDFC - -Count = 14 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C -CT = 27337EB7055C8657599BFAC630D35C6E - -Count = 15 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D -CT = 6BA056F320349BAC9594761A9C0C0A75 - -Count = 16 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E -CT = 80B644B84609B497FF568AE3C098AA94 - -Count = 17 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F -CT = 57E3E2A18ED55AD98985FA605F0E0FCB - -Count = 18 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 2C3AD5CF835E9F421941BF4B091F4D34 - -Count = 19 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 08B703395B691DA9C8BC97EA4A6291DA - -Count = 20 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = B254818D0F5BC9D4BEAB28205168B495 - -Count = 21 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4A9759BD7CD841FF07B1EE49EEC0538C - -Count = 22 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 4A2D5D6E78CA57A018A3E764694D5528 - -Count = 23 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 5C561DA38DE44FD650E49E87FD9E7AB1 - -Count = 24 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 507AC27E02F1E7205D39D0AD05353BAE - -Count = 25 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 61DEBA7A6AAC4A8169D4F96834373969 - -Count = 26 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = D51A0C104B90A6A0C3BE54692FBD2265 - -Count = 27 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 2C5CAEA5D2942CEC970FFBE0B939B558 - -Count = 28 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = C0CEC1425764810F09E6CB9452DE3C10 - -Count = 29 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = C57C2765B00216FBF5F0B4020095F054 - -Count = 30 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = DAFC784AF1090DD7E7295D32304250DB - -Count = 31 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 9CCD6981AFEA2118FD62C0EFA090483B - -Count = 32 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 5F588E7A5925ABBF3C715D1E6143323C - -Count = 33 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 54060E93F5733CBE709EA1F12E203BE6 - -Count = 34 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = -CT = BE8291743705C8BDE2D0BD5725D31FF045 - -Count = 35 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00 -CT = DE7F7EBE417335CB5A33413834769E8C13 - -Count = 36 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001 -CT = 5AB470885A182486B85CD7B8D7FFDD005C - -Count = 37 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102 -CT = B76B85778627FB371A9F2CCFBFEF6FFE1C - -Count = 38 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203 -CT = 5F36B380E3B43CF0C03AE079E7DC41FDA3 - -Count = 39 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001020304 -CT = 80AA1348466930003C89C22A6DA94763DB - -Count = 40 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405 -CT = 3D2E15FFAE9B18948BB130E43EB6F73DB7 - -Count = 41 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203040506 -CT = 0E4948B96A314B623A6BB43DC2011027CB - -Count = 42 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001020304050607 -CT = 665986EC404C2AE1B8E14F0F005B02BC22 - -Count = 43 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708 -CT = 23A55991578C354221D816C8EFE92F1E99 - -Count = 44 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203040506070809 -CT = E691EC26BBCC5577FD8B63FD12DF87D63E - -Count = 45 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A -CT = E26A46BBBDF45898D6381C867BD4F2638A - -Count = 46 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B -CT = 57D4DFAE7876EA0CF0B9AE0C09DC67643D - -Count = 47 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C -CT = 64444F7536FB24788C9B4B4A6F62A43571 - -Count = 48 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D -CT = 728BE459D195830EB45B0DD4BF0C4EF0ED - -Count = 49 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E -CT = 1E3B87A4B0EB36BBBB02B3E43D278B6511 - -Count = 50 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F -CT = 2C738F2F926BC61AF03510269B4BB4FEBD - -Count = 51 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = B24DDCB567783BB641AECDA7D5A0D0F88C - -Count = 52 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = A7AAF5AAA0419EA54AAC1F6C839AFFAB18 - -Count = 53 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 790ECA0E742B0DF8AAAFA3CCA05B743696 - -Count = 54 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = C661EB47B8FF0D361F7C06DA2DAC347448 - -Count = 55 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = DC9C74F367971E1D5E365B3691779719EA - -Count = 56 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 514F4354EE83B5580F44CFD7ED7096C815 - -Count = 57 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 4B442169B930AD35E09C9A8039CA19D4AD - -Count = 58 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = C2E1BC1A2B115CD68C9A4164B00B29F139 - -Count = 59 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = A84FB3DE1AFA66C4C0456606E72E2EBD2F - -Count = 60 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 8B0554D00C4E7C34ADBA3FDFA1D4E78465 - -Count = 61 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 6BAF7085DC27B1F26C8B02066C4BC2D8F3 - -Count = 62 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 3782782251FF07FAC7C014713E217B1F33 - -Count = 63 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 77FD8D8B7748FFEAF2D870AAC859B43C8D - -Count = 64 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = B5C0A52FD541B67C4A3B5CB6E0110C0C79 - -Count = 65 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 4D445A9FB60A2A8BA51191FEBC7304DE64 - -Count = 66 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 510F1974FF3E635493C5DDEFCC4FFCFA58 - -Count = 67 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = -CT = 9145C38D138AE14EF990D9764F21DADCF9E1 - -Count = 68 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00 -CT = A08D2A742EEA81932BCCB7BFFFA1E5973448 - -Count = 69 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001 -CT = D2E9C4C1D8086447746ED12C7C67431343AA - -Count = 70 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102 -CT = 4E61124FED01E2B532D24D4565F152CB13D3 - -Count = 71 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203 -CT = 105D090DA529ABC8E05CDB562CE8D6E30A50 - -Count = 72 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001020304 -CT = AA63CFCC46215F2FC5B7DAD4C86CBCFD816A - -Count = 73 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405 -CT = DE3BDCD09480939D1C0D41841C6AD718BE7B - -Count = 74 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203040506 -CT = 87E0CB7729C4E5785882B7A10C5CBDD5093F - -Count = 75 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001020304050607 -CT = 9DF41431805E053AD2BBDAA9461B403A3BC5 - -Count = 76 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708 -CT = 1EAD6425C8B8DBB6DF0F945A3CDA39003F35 - -Count = 77 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203040506070809 -CT = 04B69D6A746BDB459B3A988FD06D0EAC833C - -Count = 78 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A -CT = 849F663D6768A4E12AD1F0CC245AFCC3C9FF - -Count = 79 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B -CT = 5DD42CCEA55A3C02487FDD52CEF4AC34BC54 - -Count = 80 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C -CT = FB5BE429DF3540365A4C9F0B41EAD3E8B83C - -Count = 81 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D -CT = 8589780FE636BF46AD9EFBD07CCEACD44492 - -Count = 82 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E -CT = 30C09C4708A6146BB8E5021C53E16702D706 - -Count = 83 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F -CT = 4F4E73BDEE492E821C0C3764909D5A4F8E33 - -Count = 84 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = C83106933C1BE63DAF1F53FA3C2D14DDDE72 - -Count = 85 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 13F32B1E085CEA7B61F89FA7F6D93872D5C5 - -Count = 86 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 5EF95AB5580C0EDE339B69F817F743FC11EB - -Count = 87 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 14BBFAC7B55EF98BDC3EB99A77C6BC787FD8 - -Count = 88 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = EC649998DA26A01903EA309D3A6ED31ED34D - -Count = 89 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = F34A897960EED48EFAD7F65EB203E204FB64 - -Count = 90 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 0D2497730BD17DD2F94C0B250BB7245EBEF0 - -Count = 91 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 54998778D0CF45036A5B7067802681A17A81 - -Count = 92 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 449AF852D84E15F42B57C9BB633FFBA81051 - -Count = 93 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = FD6B33BE4B9838779A9832BD6476DAB34FF4 - -Count = 94 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 910AA2387C8A3C9F2EA16D823D76F2236ECA - -Count = 95 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 5CC4B9B394D5917BF8EE902172B2E8965BCA - -Count = 96 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 4A7E4078E9C50B5C876EBE5760C8BBC40EFE - -Count = 97 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 912ECB572B81B51D5BB9E1EEE18FDD663E30 - -Count = 98 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 8499D56D8229870F105531F5B09F23AFC56B - -Count = 99 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 0049FAC9401CC458CAE9F2963DB475C733C3 - -Count = 100 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = -CT = 1F9CC58CA6ADA5640D42ADC3BEA0C8A02C3770 - -Count = 101 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00 -CT = CED387058D20377F9E3E4B52CCDC3646EC8FFB - -Count = 102 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001 -CT = A7190537E398103EB9BD2A2E5A631028914DA5 - -Count = 103 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102 -CT = A5AE33040B2F8A92A80104F63AD270C322C445 - -Count = 104 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203 -CT = 349ADB83A847F2CD9C6DC8945679B2EB8559C8 - -Count = 105 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001020304 -CT = E9F6362578F03054AA8A4B0797BE3634E39BF8 - -Count = 106 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405 -CT = E59E0E5624695996B61CEDB3B72A28B3F22674 - -Count = 107 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203040506 -CT = 40FB811547A168CC2F259349638C24531BAE42 - -Count = 108 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001020304050607 -CT = 01603729FAD23B7C3F20892AE36181E0B83B21 - -Count = 109 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708 -CT = 889344A705B5D3D8A875E038CBB9B325B79B4E - -Count = 110 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203040506070809 -CT = 62E2B16006FC76BC528E67BC9EC703CFD31D86 - -Count = 111 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A -CT = B2D7F8C11A12002DFAB9F76797AE2398313884 - -Count = 112 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B -CT = 2E083EA4726C3CC002364E698676FD90393A8A - -Count = 113 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C -CT = CDCCFC09FB902F2203C49F617F3615D317C087 - -Count = 114 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D -CT = 78265933C8F04C935B8B4F8CB31E62BF54185E - -Count = 115 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E -CT = D6ACD80CF8A77A3B425FD6B818A43F8B481A55 - -Count = 116 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F -CT = 7362F95E2CFD58B37E7C973A62AE2817B86A58 - -Count = 117 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 0DAD3DE636CFBAAD428366D5CCE437658D87CD - -Count = 118 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 0B8AEA03CEB2EC21BB8A361A70119DE18E759E - -Count = 119 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F77AD020F72D4CDCAE3EB4187F318556557844 - -Count = 120 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22EAB85725FE7DBB4ACE5BAA4A5DD161B9D1ED - -Count = 121 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 6876FAA5798052969D2A3575C435849CBCDAA1 - -Count = 122 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 4E723B024D913E886B0B2D966BA790DE10ED3C - -Count = 123 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 5CEB2D35F4694708C46BA39E5E25777D18F2D0 - -Count = 124 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E3A37D66523AA7128C48C5F5A3F2A09E380649 - -Count = 125 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 18A1A8ADFE1F8A3D1133B1D2B60E2515E12CC4 - -Count = 126 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5453A60186713304E5360212E415DF759C4864 - -Count = 127 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = AB0F4BD15A7D32A1943A7F6C21CA396F988CC0 - -Count = 128 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 7B68957B2358E17F79D02A2340F2F0D0287052 - -Count = 129 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = A286A5452A74AC9B176DBB0AAEF20D707BB809 - -Count = 130 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 48164B35EE4D16BECB4C435E0C70439B172F1E - -Count = 131 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 9EE4690D356E15188E16DAA6A46B9340BC5FCC - -Count = 132 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 86C8328858D597DF070FEB18BACE174BD8BD8B - -Count = 133 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = -CT = 52F8B8B389D7EA60E553BD3815C0BCB02678F75D - -Count = 134 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00 -CT = 7792D2B8BF9D4842F7361C5692C2C81A08D01F61 - -Count = 135 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001 -CT = A950D1B265AC89779916BB39A4DFFC447F458A2F - -Count = 136 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102 -CT = 8E9AC9091ABD41C246A435776E42607AFB72D2C8 - -Count = 137 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203 -CT = 30B51FDAEF4F976076299BD1E876323A58E2CC89 - -Count = 138 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001020304 -CT = A848C61C995A81EA34359C6E1AC0988DB4C02828 - -Count = 139 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405 -CT = 582C0A1622ECD65DFCE4AD5246CB9AABC05F1927 - -Count = 140 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203040506 -CT = 3E8C31FF15E979822B7AD2EEB0C0B42F4C892035 - -Count = 141 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001020304050607 -CT = 29C56C408E5EB79E281147233754DD9ECA3281C2 - -Count = 142 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708 -CT = 30050F7623EBB8AE7B1D8AA8D4B2EE54C2D482F5 - -Count = 143 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203040506070809 -CT = 4297B6C49D71E4455B8AD4D6A516EC02E0D562E2 - -Count = 144 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A -CT = E1D2D846A23FDAC10172B1E5506C7D0F2B5B7AAD - -Count = 145 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B -CT = E3CBF370C48C4550A07CA5007172A9FB3CCB700A - -Count = 146 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C -CT = 6AD38CEDD18A8A7BF3E08FFE4286A5D376C63211 - -Count = 147 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D -CT = 08FA27B58394D5C7C0C859FCAF19F9C6453AA0E7 - -Count = 148 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E -CT = 57969EF1F480906DE807A4A8081A5535FC3EB4C6 - -Count = 149 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F -CT = CD6C770125FF572E8974885C8D20E41C60E720C6 - -Count = 150 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = FDD39CBE20BFAD461973C137573E7866B5B1F31B - -Count = 151 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = F234ABD0C0DB6F17A54F007E752FB7C46A00EAB7 - -Count = 152 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = B0B7B1ABB1952BD5C53EF23A868EE02DC51F00C2 - -Count = 153 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4E7A4C2587E214FA918C967CDDFD45F81AE24A20 - -Count = 154 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = C3EC1A08266CBCFE3757D64D828CCDD771277374 - -Count = 155 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E66BF84F0415EFD391DDD47F70DB9F9D2D736B1B - -Count = 156 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 6D676EFDC9CBFC49F5D43172A340B267721892E9 - -Count = 157 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 5C9647B5333FE0C97114D7033EA125BBBB732CAA - -Count = 158 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 4AC6B18AF1D24341583B2A17112376657987344F - -Count = 159 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 130D9D8B0447B6B0B8659DFF6C31B8C223E75707 - -Count = 160 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 82D2F091558E3DBADEA5987C9CC68A76AAEABB1D - -Count = 161 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 082455375C773436D6AA28A7220198E0805C6854 - -Count = 162 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = C10516FEB4C47005CA6A411E121F61C1ED7F2CD2 - -Count = 163 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = B490384378915B2DC3B261B29A5D155EB81F8CA0 - -Count = 164 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 464635F56E2C6C120069883AF236EB07F0551BDB - -Count = 165 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = FC61E5D3226627035C91E7C4B327208C07ADEEF6 - -Count = 166 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = -CT = 668683BB1C3BA41F8349E43C58AB7BFE2D0524590B - -Count = 167 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00 -CT = A0E8B15DFC3F0DB2815424A51391D59A92FF7606D1 - -Count = 168 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001 -CT = 72B323F0214CE115F219514C09F632A5423F22B889 - -Count = 169 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102 -CT = 723E0DDD99C88B0B7212E0ADE60C74DFC2D9CFCA0C - -Count = 170 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203 -CT = 7CE2DBC1AF73BEDB29D49A11338922F8D3617D5B0A - -Count = 171 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001020304 -CT = B349A0E768838B0C588C3E9C36603BF4E6218D0E91 - -Count = 172 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405 -CT = C37DECC657708111DDA30E39E95FF2CAD438F2162F - -Count = 173 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203040506 -CT = 315C388D3761D32F3710B9F363A357CDC4CBEEE79B - -Count = 174 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001020304050607 -CT = 28EBC6F6E802676E53BB8923A0DD4C8F34762F0D73 - -Count = 175 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708 -CT = 0BBB1F77B64E4A1CE3CC912BF080B1CD3DD0B9D150 - -Count = 176 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203040506070809 -CT = 3634CC549D379CC61F2B9F6FA233BFB9988B541D76 - -Count = 177 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A -CT = DACD4B7B4E8920C2B5A81C445089465F882FC0A60C - -Count = 178 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B -CT = A6D65328BEF4A8F4F0B0639A3BF538AEE512C8A9FB - -Count = 179 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C -CT = 66840C7FA1026DAE7D30F04624BD0939371F048713 - -Count = 180 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D -CT = 92213F364C69746BBA2B49789BCE74C831E0771B76 - -Count = 181 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E -CT = 9063CD25D2730D6BF13C1F8BB9892BDAEE78C27820 - -Count = 182 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F -CT = FC7EE5F876EA35178A7E9CD53ED37EC205AEBCD8E5 - -Count = 183 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = D0918CD46793FC5BA18EE5134CD46D10F43B88B851 - -Count = 184 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = B5D9F315DFF7CA27D95975F2418A60877A375A0B8F - -Count = 185 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 2E16C86E5EA365E0FCFB6474DF73179739EBC45229 - -Count = 186 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 1198EB0732468AC2F26C25D0DE704AE992F8804F8C - -Count = 187 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 7B7135A83C3A853A7DE67F41B2AA1D97519673479E - -Count = 188 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = A294A6543F683929561B403CE56E41A4BA7239DBAC - -Count = 189 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 2654399A67AD4217B6EC9D5C6FD426C467317A2944 - -Count = 190 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 9B3F560FD44AD82060A1F351D2BDD2E00BCCA673EA - -Count = 191 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 442DBFA7B4B9BBFE9DAD9364114B9240476674FF43 - -Count = 192 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = B6BBF55DB33B277C39F6450073AE60D62FE139D2D8 - -Count = 193 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = C5710D63CFBBA0EEE6783BD205771A8B6181CB3E14 - -Count = 194 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = C35451F637A2F8BB7359B4F8E0ECA036537C8CD709 - -Count = 195 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D14CFE8CE8D02366E0E4A34BC7B0B450C9AB77C093 - -Count = 196 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 44B4327D69BD27ED907C659228F1B0648A98713CF3 - -Count = 197 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = FE5B58DDEE1F0D2C4839076860E12ED48528E8C759 - -Count = 198 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 45C5573B47720A3D07091F192C9E75E7FD0E9DC8CF - -Count = 199 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = -CT = B601801AB242B97DE6F81CAF00E5415C7D790C95E1BA - -Count = 200 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00 -CT = 9AC5FBD1C98A09D3AFB6E52BAB48678D408CE54C85F8 - -Count = 201 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001 -CT = 57CE537331ECB95A13128DBCEAE808D753EBCE3E1C32 - -Count = 202 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102 -CT = BDD19CCDBD35839CF47245722C6C3A7D4F74368C981D - -Count = 203 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203 -CT = 6527B2B1E055FFCC2129049A715F3C28997E2CB0BDD0 - -Count = 204 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001020304 -CT = 7AB42CBAAA7985A70DD4E0140A7C6138D294CE441635 - -Count = 205 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405 -CT = 87B180CD60FF68638EBCC7366482B7D909CC793C3B47 - -Count = 206 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203040506 -CT = 8186A2FE01278442C3498085B38ABAA28F7EFD481DDD - -Count = 207 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001020304050607 -CT = 11D04FD0BFE2152DE585872109059B23C9CE5E69E6DB - -Count = 208 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708 -CT = 45B1D346226B655632AA2738E69D24E4C30A866B3B30 - -Count = 209 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203040506070809 -CT = EC4B8EB711E689B277C2012D14C939C83CE25FEE7DCE - -Count = 210 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A -CT = 7EF628C8D41A5A2E8224B83A40AF02231E3503B85A11 - -Count = 211 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B -CT = CE4B380C6E8DD15EC797562A3A0A3A823FFF9BF5841C - -Count = 212 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C -CT = 3F4DE7CC1C3B0B4C7C23671AD513D3E91F9E279BA206 - -Count = 213 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D -CT = B3D8CE3BC3C29D18FDED15A5C6DFC84FADFF77008D69 - -Count = 214 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E -CT = D5C18093F54F0269D05318E5F0C6F780FE234DC7BCD0 - -Count = 215 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F -CT = AAB087EF4412209E47AF4D051EEB40CCED8E368C601F - -Count = 216 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = EBF9E2F644C60BF34E3BCECD4A2BD49BFDE857B1A307 - -Count = 217 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = B3E47389B37E4A72754756DE3C1C57A8B9B9A7D85AC8 - -Count = 218 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 69D874E0AEADA8964045B377B493B3602C62D03A62FE - -Count = 219 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 5F37BB2856D017512CCDC5C9BF779B37FD558393F68A - -Count = 220 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 655CB01A3970499157C4113D7CC50478366CF605C654 - -Count = 221 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 8F90E093417BF26101560F0B20ACFE394460A9303E9D - -Count = 222 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = DFD1193E5C2CC19B7D2564244158BCD111B4CF831446 - -Count = 223 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 7A6AC6649D7330F4BAE0C3C7633045BD6A180AF523E5 - -Count = 224 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = D0AA0E752389BAAEA6FE88A4AE63DF8A376DDBB10A40 - -Count = 225 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 99991751D8FE6C9F312C3E8DA0A9896F6EB671150899 - -Count = 226 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 2DDD2CB715E5CE8B6747ED8B344A0FECCD8DFB0178B4 - -Count = 227 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = CD23CDDF6EAC59D5CD2EA2C370DF8655E536B936AA0A - -Count = 228 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 1E30686EEA1CCE448E297901FAA7DDD3A71ABD79930B - -Count = 229 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 53EC287FF428603831A066715AEF0F7A4AD9BFF039EC - -Count = 230 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = F6D8DFEA6CC2A0B23900C4AE5FC4D9E32E53C94F0B37 - -Count = 231 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = F9AF95B65D16B69CE27FCE727B7EC237D69576113058 - -Count = 232 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = -CT = 80B77A443964F70CAB4E19C3C95B570E6FB7C566F2A8FE - -Count = 233 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00 -CT = 2D94005D91611D7AB6D96EAC7A7A3220625A049D8C91EA - -Count = 234 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001 -CT = FAA0BCFB5E305087F4B6313153EFB5CFCBC4EB68B99D96 - -Count = 235 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102 -CT = 208293D2A9BA26179C0D601247D12B57464BAD31347688 - -Count = 236 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203 -CT = DBE6D14215FC0F3C87DBFFC6930C237DE46241DABE153D - -Count = 237 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001020304 -CT = B434FC4F60DE7898AB4ABB8BF927F75B69FAC15CA507A0 - -Count = 238 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405 -CT = F274176FB6C70909D600D8B35F1F821E91570F284E8D90 - -Count = 239 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203040506 -CT = 85C5F80D67E07EAA56BE9354907297B7523F4E9CB9E878 - -Count = 240 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001020304050607 -CT = 75DE105677161C67068D7B0E5E08EFEF2C0B99CE0D7085 - -Count = 241 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708 -CT = E080D952A102342A3CF8674C37BA5F58EB3D16BFE2871A - -Count = 242 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203040506070809 -CT = F85897CFE56E388702428A05960DBDA9705BFE2A7DCAA4 - -Count = 243 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A -CT = 5B21E22E1BFD9349F8CDBF2DCD3CCDF8EBB99004BB2E91 - -Count = 244 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B -CT = 44EAF432478DEE05DF061164C6AF6A0DE633F5B94BDDEF - -Count = 245 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C -CT = FC99C2F09FBBD294BB3BD84EFC0D373294463C3B4F78D9 - -Count = 246 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D -CT = DF88C757C73AB3DF013EFD19C02DD6A48A76C535D42D2D - -Count = 247 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E -CT = 471FD774E2DAF55E73AA3B425944CEDFABA77B443E0194 - -Count = 248 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F -CT = 6689ABDE126B660C20EF6C3BAF8B0F9C1E855811353820 - -Count = 249 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 4EA6A82E266428BE4A835CED94343EAFCB6775BDBC27F6 - -Count = 250 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = AE26127556DB4580B11E24CABA083C0AE48BD0E7AF881D - -Count = 251 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F772EBB2AF94F4F43860679202E287E8A02850DF8EEAEB - -Count = 252 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 426D27EF11CFECCB49FCF63CB67B297E48EBC2E02D5AE1 - -Count = 253 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = EAEA48561C45F2D3BA92E3E715CF9AE814F9C735802CEC - -Count = 254 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 58DCC72E1EDB100F7DAEAADFD6A8A9E09555F6B14D6E1E - -Count = 255 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22BD7B6396B41E0E600997E22722165E55C7969BC0DF41 - -Count = 256 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = D14254DBB959C95EAC5A489CB64AFEABB0681BFB51F912 - -Count = 257 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 76735A1B28F97E2566463803DDF6E38B06838DC40F822D - -Count = 258 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 05C75C49522C09765DB5BD7CB2CAD5399ED633F1A282DA - -Count = 259 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = CB84E1D35E404717C7D21DC6DC444296C79F67F9F16907 - -Count = 260 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = F1952BF75C2A8BAFDF09A8346CE68F9C2B14272734BDAC - -Count = 261 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 19BA8AA196331CDD954987C25B354E0D646C12D6AF0D8D - -Count = 262 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 6ED1DF1380E32F24A01842B1E94CBCC4F796A14F3D3736 - -Count = 263 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 3AE914041DDF011B1CA0EF66DF6CEE9E529211A507EB57 - -Count = 264 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 6B6664889477990133AB3C052EC44C8E06B8D22D817AC7 - -Count = 265 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = -CT = EE55F50DFAAD7EB04E1037F108C966AC463136174A840B0A - -Count = 266 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00 -CT = 6A4BB5E586D8C83657ACCD14A90BCFA855C43330A49DFD97 - -Count = 267 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001 -CT = 29BE233A4F6CC964AAA1794F5186C1B4DD1DB86924CD3D11 - -Count = 268 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102 -CT = 1CEE79926AE087F4A5F11B78E49DAF64B28A02DB0F5AC6A5 - -Count = 269 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203 -CT = BC1CAC6CFAB3B4F14AF8A9EEF115F7239508A6FBA474174C - -Count = 270 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001020304 -CT = 323FBAB5FB96A9F1C22E0BC2E30E88D35DE06DF190E5168F - -Count = 271 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405 -CT = 649BC51F8399B1DE0BE9DB3608F53BA849BA7B5CEFC86213 - -Count = 272 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203040506 -CT = 2C6338B66C2319C1A01B0203A803FFF1EC6F915586266AE6 - -Count = 273 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001020304050607 -CT = B53F0A5FDF4258046EC677F00282955B0551E621DE957B2C - -Count = 274 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708 -CT = D5DCF61CD7BE7644153AF1B0F6E9366E43F2FFFFB2763C6E - -Count = 275 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203040506070809 -CT = 030481E435D0957CFEAF1249C3502CEAA94A7C80002DF893 - -Count = 276 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A -CT = FD6102CA26CDA445B3FB25F4241D7E09881E084C07A72449 - -Count = 277 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B -CT = 3138D1640651C5E3E339235F9163DC48AFE03367A56FA43B - -Count = 278 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C -CT = 17DBF78E0B3964C0C2B0DC580F53038E452FF895EEDAD827 - -Count = 279 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D -CT = EFF49B796890B5B65BAF95E70CFFE4397811971BAAAFA7BE - -Count = 280 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E -CT = BD23BDE6C3CA82CE4A4ADC63DF766A26952E1BC3D47B7664 - -Count = 281 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F -CT = B904C08FB78E0F5127765D113B79B16F3C99C9E9194F9672 - -Count = 282 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = FAA7AD47DA0F14DBB11F25E82F7EB62A6EEFE396D210BB68 - -Count = 283 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 7614791082ED8A1125AD0B7BD77D36A64F15EB06F7136641 - -Count = 284 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = B6B7EEB1F82882CB31FB3066CC2C55C29F315CF4C66FFCF5 - -Count = 285 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 582EF95BF4A5F5C727DFC758AE2A6B4242B133247C37923C - -Count = 286 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 3D43AD6F0D9EC4CE65F201C0DDF1371B522101F12211E8B1 - -Count = 287 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E54D09C265137201DF3A48674832296AB4CCAE3051D8CCF3 - -Count = 288 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 3F43F4C7422F2EE9386AF6322CE56455547A9C290DB3C9BF - -Count = 289 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = F299909625031D1BA42D71ECC8D8ED842B0142BE48B7D858 - -Count = 290 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = F0217F2510639DBCE85E9DA90276BEDC3C0E7CC89D97E148 - -Count = 291 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 3F58D34D3E260E328643F80EA58EB6A7426DE034AC1C8145 - -Count = 292 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = B35FB53B1F1DD719CF95D2F79506BA45061125F908F44752 - -Count = 293 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 53B8CC542D5141129C2899F2981B098C0AC3C98D78222FBE - -Count = 294 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 399E3E9A4336B2603638DD47B1A1E5C64E2A5E9C085C7358 - -Count = 295 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = F88C52F66DF7F7A2D6352B76DA12B9237350AADD57B4B60A - -Count = 296 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 928B4B6EEFAB400DF474614A88678135FE0ED2296A0D70DA - -Count = 297 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = CF1ED60D0F19CAD796344513786DBF029AE9A060E46A0E03 - -Count = 298 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = -CT = 19C02A457CE30C6EFEB42AA3995982EE812147DC3E8B17EA38 - -Count = 299 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00 -CT = 80A4574A9240E521A0CA008D7BB2A2786D0196C9C88EC4AC25 - -Count = 300 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001 -CT = 080358DB59F9BF0CAACDEDCC3C1A01B137B90C099A9C2E43A1 - -Count = 301 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102 -CT = B93F5C630F463D94F49790695E10A6B0888CCCD190AFCF2F53 - -Count = 302 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203 -CT = D7A797F2FA7CAEFFDEE002D032B54DFCC22EE687B721388CCA - -Count = 303 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001020304 -CT = BE24A8449E471BDE3AB49E7783ED2EDE0A81D14C3A8C024547 - -Count = 304 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405 -CT = 6AFE6C20C769621B61EBC350A8774A2C84069238169B3BDD3A - -Count = 305 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203040506 -CT = 9FFDB7A8FA0B31AE0F7F2387A801A9DEDE78EB075B7C1B224B - -Count = 306 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001020304050607 -CT = 697E26DB031FF1F0819B11959566060F874B4FAA70B0D1C6D5 - -Count = 307 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708 -CT = 636A54D781421661ADEA7986A5DDFDF1DCF6D5FD359D226FE0 - -Count = 308 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203040506070809 -CT = AE04E6677C9D082280A5D9333277DC809E6CEB6FA04F7B5D3D - -Count = 309 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A -CT = 7ACE5C33B96D05EEFA6336EE42AF0F5A6E8F24A91BBAC847A6 - -Count = 310 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B -CT = 76403E9A4B2A2A73DAE6368D13E6C93F05B2766532780B2C56 - -Count = 311 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C -CT = 7E8528048189CEC7389B15457CE71BE0D13C9A50CDC80AE7CA - -Count = 312 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D -CT = DC6A0BD7D4C76B80EC9850498393F35AC029C717B53D5F03B4 - -Count = 313 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E -CT = AED4F16BA1A52D70C07BD191CF0E3A36591E40D117F5B72E54 - -Count = 314 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F -CT = 8F87EA472F18EECBDF61664B377BDCC2B054ECA41F18BB54AF - -Count = 315 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 629E64255BAD63CF3D46848C6FDAE6ADD6ED47DD7774CE3807 - -Count = 316 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 91022B6AE49767C59CEDD5CA40F47E5E8F541BAC95EDE35482 - -Count = 317 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 4C653119E82C372E38905C1048371A9A5A2B38F10F4BFE7BCF - -Count = 318 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 9EC09EC5CB85CFB807BA0716BDDDA8753F5F07668AD1909157 - -Count = 319 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = A7406B37DB78B64BF3E96E2DE69CA4EE388AD4D73EAB56A2CD - -Count = 320 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 03C0F98A6A94DAC8A55F2EB7F25335AE6CDD895AA8FE49626D - -Count = 321 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 9B230F55504AB3DC0C15797429DBA602B0AFBE67D5A352970C - -Count = 322 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 8C48BD9DD82A7D097C0B4744318B2550715601AADE95B26D55 - -Count = 323 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 7F8ED5ACBC6246698E2AB9F943FCDD2C45901399B95AED94A2 - -Count = 324 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = FD1F1E12B2761C7E6F0FFEC29E478BD58803322C1F55D710DD - -Count = 325 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = F47CCFCB9904479F36224E3A03AB93574448AB9D3A19EFCD0B - -Count = 326 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = C6027CE52151812B908860A622C12FF03C5D1DDA2FD966407D - -Count = 327 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = F6A83DFAC3CEB517E9C30BD59CE9FDFA433F774FAE66D37853 - -Count = 328 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 61B440018BB84FC376EE8828DC3E8B7F1C79C67E1E235D7E24 - -Count = 329 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 1431626654D5EC84FB35ED83353921AFE40140F6A06AF5CCA2 - -Count = 330 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 102738C754BECBF2D456969B434BD8CD46221ADDAAA59C0950 - -Count = 331 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = -CT = 0ADB9BC4BE268A5FA1E06081CAED8BFB320B53DE6BC3FDC52E2E - -Count = 332 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00 -CT = 7840F13174B746AE025760C050A4A1C21158748FA133E8989B34 - -Count = 333 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001 -CT = 02C7FDFFE0F2B82167160C25CC9BA8C71908C66FC054E44DD27D - -Count = 334 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102 -CT = A980698548FF9E365AF628C5E802D5C30696401E5FA1D4C39B60 - -Count = 335 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203 -CT = 49446DBF7D6CCEB0456AA61E138D9C89A548AC34D13F23331FB9 - -Count = 336 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001020304 -CT = C0C0D00B5A48475A4412ADEAA142461F010655D9033D6167F27C - -Count = 337 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405 -CT = 8F505DA4EF2670B32E4C7FD1A3B994CBABA345483BEFBF6A7E29 - -Count = 338 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203040506 -CT = 8052132F05705F6169007CF079F990B585235EF0CC9300488881 - -Count = 339 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001020304050607 -CT = C3331C1B84151BE47436DCAF209868A940476CA632CC850C20EE - -Count = 340 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708 -CT = DA8DF765AA9936BA4EC7AC4415CF17555FAADA214F161A78D515 - -Count = 341 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203040506070809 -CT = 4B6345F582B5F23FEA255A319722399E98F61FA9BFE9F871F794 - -Count = 342 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A -CT = F98047FA416E88A0135524F716D35A5DA88828F68E89E84E2B69 - -Count = 343 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B -CT = 3DEF7707AE02F3DFBD9A619081FF4036D5FBB1EF01115D142DBD - -Count = 344 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C -CT = 4B472983691C8945FC594417D6E04571C0DEDF57502CD3B0A28E - -Count = 345 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D -CT = 16303690B8185745D5D9E24C0355608B9D1DA1C6D47DF9D62AD6 - -Count = 346 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E -CT = 1C31A767C094C010F095FA654E3A0ED96A60B8FBC94C5A13EBDF - -Count = 347 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F -CT = A76F64207C72E1D1593EFAC6A66F82BE0610350736A57F6B39D3 - -Count = 348 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 4B65F49C4FA01526E96F6A55263A9B2D1B5F9D41B4620FA234A6 - -Count = 349 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 7E8E2EFF4C292C15E1B4C874A971977031970E8E0BCA3CAD2B24 - -Count = 350 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 5D33068CF741CB3842DE4E2B44B3ED2D3B0C75677C1DC5AD7962 - -Count = 351 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = F74A7FA2F38990EBA26E7457AA4BEC1EC31307F15E056BA8D8FF - -Count = 352 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 30724D84EA86EEF3090F69B72ED273AB1E92F41494F889CC393F - -Count = 353 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 7FE80A53969E2EE729735D57632476AB8894E25EC57A76CEF833 - -Count = 354 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 4FCB65B89C96FD74421DAA7B1EAEC11FCE92A8CE55E07F654E9C - -Count = 355 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 638B724486A33A715FE2F9285FC0D41A543529A491DA6EB78D88 - -Count = 356 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = C4F7EE4F47601B77072B828B0595052ADBFA73E22282EC548212 - -Count = 357 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 3CFE4172BA0E0117E88374CE93C16A18A227A83DE21EB27695F4 - -Count = 358 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 2551C1B84CA0A2956E2D31738680A841710296ADBE2EB648107E - -Count = 359 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 2204CE867F0DB4365EA828B1A1744E8FDCC6BDBB137B73AF104C - -Count = 360 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 54BA6153B467E4695E619656E0D18965512EC8F685637CB60329 - -Count = 361 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 72B84D1D14FBCAF037EBFF68D3F8EC03AF6EDEBFACE16AFFF5AE - -Count = 362 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = F7F1B2333546F2485549B89D9E17545541C60C393ACC55C9CADF - -Count = 363 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 4656447CD3973FF12FEEDA227ADC4C9A0BAB014CC7E39FCD3022 - -Count = 364 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = -CT = ED9C82E3487E47022DAD8CD51C7E45C9DFADA5521125A36990E5BC - -Count = 365 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00 -CT = 42FA63A0EC2C7566718E7AC665FE82C62381ED1B72628C44F0BA52 - -Count = 366 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001 -CT = A066422CEE26018A590832FF12B8AD7390D60302C7B47F6A011A08 - -Count = 367 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102 -CT = C7AFC18D41B6167981E827D97D2B834FF213B460D1DC8A8E9EF92A - -Count = 368 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203 -CT = 1F6CF5308C32CB7AB63C340D47909391B2FE5BE966A3F36A9CE7AB - -Count = 369 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001020304 -CT = 8EA2858FA51CC2CFD6B8C5AD02F7B8704AA3502A998028509E698C - -Count = 370 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405 -CT = FA120AC9DFB57468D86C710C6A51A8738C8161CFA146FCAEAC6CF6 - -Count = 371 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203040506 -CT = B6823033B526472CC56693E1A68F4848531B0895D23C9C7399BC43 - -Count = 372 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001020304050607 -CT = 7B54C966E4027902954E8A857A08C3D45B1CFC1C29C0C5957E87BB - -Count = 373 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708 -CT = A052A31926CC95045B4EE319108A8617CBCF5AE2965E4292C7BD97 - -Count = 374 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203040506070809 -CT = 883303B7CF4376E57F949D476382D0B1FC91674E45E93FAEAA8D3E - -Count = 375 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A -CT = 1309BBCE222B2046A83C20F56DEDC85B9CBA7AD29109DFFA35F380 - -Count = 376 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B -CT = B1FC1FF58CA6DD3BCD33FB330AEDEA2ED60A56B1C6EE0CBEF7D1D7 - -Count = 377 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C -CT = EA587A7D3559E3B9D1431241516AE2D8FBE96147B97CA0B1F48C4D - -Count = 378 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D -CT = 8B4DD67A9F72004C26E2B573EF14F0398AC243F70668EE93CF7EF7 - -Count = 379 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E -CT = A3B9736A04CBFACEE12BF2BD6746FA48FF6603895AAC3E592C4ADD - -Count = 380 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F -CT = DD3F1651914C97BDF0D7CC7350645D9ECC8C9396BDAA2052C51952 - -Count = 381 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10 -CT = BD73EE0A454D06F1B4716734B74A8749BF0D5B1407499E75C9CD16 - -Count = 382 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 2ABB7D1EC52EB7F5F90B6AFC6AA899ED3A1F26A273E29164C90BE3 - -Count = 383 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E44F7764A37622B8173D20BDF2E629C75849BEC3A9CD845B17159A - -Count = 384 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = D5439DC2771B6EE42E7B12A8A2ABAE7A270E007918DA2914E55D72 - -Count = 385 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 9704D6AA5D4E8CE956BBFBE7E7B22A1DB610593FC05538A48A053D - -Count = 386 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 6F181AC89A5C4312E20C583A87020056F7BF941B3265DD5EFD91B6 - -Count = 387 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 42383E59CC38D5820FE1D3D7C437BC1518D36D2A8D901DEF574E7F - -Count = 388 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = A1A16F24A100C7A20FD0B3FE309BC20E191A13A9695BDBA1967896 - -Count = 389 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 8585D83508A5868001256E32D295587A301CD0470DD29909255CF8 - -Count = 390 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = C353DEC418F80E4BF6B166D98E128F272530BF478F7A9842C72AC1 - -Count = 391 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0D9E81FE27D9A785E2E6A4437D09B94844C5E2B38A5FD4329427A6 - -Count = 392 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 4E3A1C08743AAE44ADFDFBFB648F4FDC48818440F79A5C044CD801 - -Count = 393 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = ED3BC411110E280437D6C7EF3E65BAB23CB1B864D29F5C62A902E0 - -Count = 394 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 914D3382D241E82886A36920E79F093F71D5EBC4E13B32D7EBB06E - -Count = 395 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 8AACAD3693DB4940BBA07787A0A1F9B30459CDACF39AE20E1E1D62 - -Count = 396 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 179662F4A56A73301EF04FDFB88936D011AB3865A726631D34E16B - -Count = 397 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = -CT = 94E74750B3B4FAD25A8588810FC14AF7C562A65F1B05D6B3F948BC2C - -Count = 398 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00 -CT = FD62CC21242D778BB04228BB159EE386FB154FA96648CF8B950B9A6C - -Count = 399 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001 -CT = 8CC22DFCD992BCEC5FC5A8CA0F0E6A638626C04C590C632AACC306CA - -Count = 400 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102 -CT = 89A0E6A175A661BAA2D99ACA27693B2EBF1A650B72B2AB1A10783C88 - -Count = 401 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203 -CT = B5BA71F99D719B9B8EB39CBF367BD2FE57FB1F929EABCF2C2629D2AA - -Count = 402 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001020304 -CT = 0EC5A738408DD5DF050D87940E098C6D86965269A7F340D607414D4F - -Count = 403 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405 -CT = 268C439CF402396C2C68B6C8931C237D2FA4BA6AEAE9990853CF3BF4 - -Count = 404 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203040506 -CT = 5E497A951A144674BD8B025CFFBF771004C6D4020B8C0103D8D58E73 - -Count = 405 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001020304050607 -CT = FA00CCF57AD9824665CD0BBECABF3C909FBAB7FCC77C558974310F05 - -Count = 406 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708 -CT = 32F413324E9E403713C343CA39FC0A779669639C18AB55D24AE76FEB - -Count = 407 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203040506070809 -CT = 8019CDD284CA3FC097383927A2FB2AFF8A20EFAFD8E9328D1B6807A5 - -Count = 408 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A -CT = 6B96B92BF6D15110857FEA9C93F650235B2B02F12AC65112B2EB8454 - -Count = 409 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B -CT = 75FC41C36EFB607A180BE7AE361995171C61D13C29C4637715788967 - -Count = 410 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C -CT = 8BE186943661FBF4C58CFBF685D6C179AECF566A2D3A18556D9738A0 - -Count = 411 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D -CT = B1BA3B0B35546C573BE38EB59471B2E05EA0CCDA4C8930B02F2182B9 - -Count = 412 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E -CT = 860F661AB5AB59E82A0C578103A562323E23B5E2EA32BAE9E155FEE5 - -Count = 413 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F -CT = 3425DE14322CD19799F564C0383D05DEB85745465B33F0A79D8F6B5D - -Count = 414 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10 -CT = C8890081006AFF79D2AE03462CEF12DC7363EF5A9CD8EFBECBC10C35 - -Count = 415 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 36A574A8F69303C389FE8DC27BAA668656499BAB7CE82AC9D1DD3D3D - -Count = 416 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F414CC6CDBF647CA8397A79FD5414739F080A164648B802CE5B70545 - -Count = 417 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 12DA8BBAFCF5048C5257C065333CFDFF0EEE3058800D8B9B9F67E9C7 - -Count = 418 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E7A9C157E310BABB7048ACF95864D79CF1D189F1C13C05816CBD2847 - -Count = 419 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 94C961C204702E977F9258EF6FBF37135D4566A21F491FC981FAA6F1 - -Count = 420 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 749A9EC3DF8F4BB1C9F54A4CD3777D6DDA4D22FDCDB056009B3EA2B3 - -Count = 421 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = D8D0C931291F9CCD5F0F80B72275AA05696CBD8907984FE4924C874D - -Count = 422 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 602086A7670354AD01D199EAE1DFDBF731BEA0BE0756BE344AE4C42A - -Count = 423 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = FA874E3D2D48184F2A5D60AF46A436C91ECDA9FC717C37A1574AB229 - -Count = 424 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 7584DEEA1A1F8F4EF869B39D97E3D9A352D7411F97F0303549FCE8AC - -Count = 425 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 67658BDA4B3C2389F4922D2DE79DCD878629C7A11CCF790C46ABD533 - -Count = 426 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = C314C1F091F5461C7DF28F1921FB811FF6633ED0CEA364DCB5A82551 - -Count = 427 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = DCA056E3E6EAA245EE94E374F2C82F34839D870AA8892C1BA123D2C7 - -Count = 428 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 7D65C76C864697E6228FE5F69FDF0A136DC08F9647E3FFCFD83A2889 - -Count = 429 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 603ABC44A3350BA9A2ABD6B33C9235F97A1AFB0EB5267FA47E212510 - -Count = 430 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = -CT = 2E34D9583CB3936C955D590786273C207B67B2BC9FECBA21B3E9FE89D0 - -Count = 431 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00 -CT = FC61C14BF14488B79AD0AC2939BD0FEB5E3E7E705A029F5E77A4026528 - -Count = 432 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001 -CT = 3C44FDB8617BD6E8B10364A6E91BC0F49D54202F2E3D09D4F1A1ED92E6 - -Count = 433 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102 -CT = 5FBD044FA73DB912FE63782072B499CC598C62CD9BFF80DCEA6E7FC655 - -Count = 434 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203 -CT = BC1AE6E0F40F2F2FEA3661C60E2B2DC87BA5F1C767B81D7F3095500293 - -Count = 435 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001020304 -CT = F60E6D729D18BEBD21A86396472BD7263AA5C3017C8480C45A2F321D7B - -Count = 436 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405 -CT = 49A3758C3EE1E26A02938E0E0DFE357B2FE69FFC6B4BE926F565FBD4DA - -Count = 437 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203040506 -CT = 1473F62BED50C732373C47B8A45D12985CAA5E15DC661198B830EFC788 - -Count = 438 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001020304050607 -CT = D7FEB6C9DD78B0C35249F95714EF2B96E4F0B0FE1B949B2C299E6D00EB - -Count = 439 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708 -CT = 7E0DAC5D783CC0801222FB457813007AC10CFD0D85A42C7FE081181C96 - -Count = 440 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203040506070809 -CT = A8E5954953D6E4D3C844BE3839700865C75A9FBA0AD3199D13FCFCABDC - -Count = 441 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A -CT = 2DB2C0F9818EB070D3D35B9A43B9C491179645DDC6F28DC1F0A35B8A2D - -Count = 442 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B -CT = 99A813F103C59695BDDB007A6352DC6B3747B24B5541FF36BB6C6B0016 - -Count = 443 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C -CT = A5D502FE9DE9D7CABEC9028BDB7D2048917CB693F2331B48303E7F2133 - -Count = 444 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D -CT = 75B7AD1A1F5E1D84317E24A6314701DB0635C084F0B668715463F6561C - -Count = 445 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E -CT = 04BCC9C103D1531703582D24F22D44E7A27E800C64017FE05EA371519E - -Count = 446 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F -CT = 5D82E6D669F034B70678DD29BC0631ACE3A96F1B9CADD43879CB24926D - -Count = 447 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10 -CT = B5694B8589976888A9937EE6A914C0E9369F662DF67A8D7B00C6009E97 - -Count = 448 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = D3B4F37DAC2654EED7F6920EAB38D308F5C84722F8268F2AB2734CBB15 - -Count = 449 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 7FEAA58BFB956ED28CB45D6D5B579B0E58E99B51A423952C25ACE2AECA - -Count = 450 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = F9E8B0428E2C880840C8CF132E40BBB35E9347118B12A5BA6649770C17 - -Count = 451 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 6A78F1E711B5C869FF147242336941F2C806E419D843474FEBE9EAC6C5 - -Count = 452 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = BE8F15DD80480214DA4CA31F9E4BBC8B46CA4A6F237FF4F2578AA3B509 - -Count = 453 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 3D83424D57BAC7340F990E0AF45D7B1E0731B47D72DC2948E15A644A4F - -Count = 454 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 2A39E2246321085387F5290A6079F5632C1F15A113BB004711849847C8 - -Count = 455 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 4A4116C4ECB6D42C1520427FB7EDAA4ABB5ECDFCD0F66B8A0E33358AE4 - -Count = 456 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 8693B2C60FC77EA928536FAD8825C7519509E4B0B70235ECE403022031 - -Count = 457 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 9F2951F0F2797CA1C5E6FA7B9F0541BE0D03C0A4AC688D03313D773E33 - -Count = 458 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 1AE8870A1443C44BF23DA102C52BA99113255735372F5C42975F73610B - -Count = 459 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 40A89A9B02EBD9D64C5C83BA21A7F6E56D311B8F71763C0A67D9222F12 - -Count = 460 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 9A7D44F8BCE47DA7AE975D01626CF9DA41241DCB40F57B627DB2C041F6 - -Count = 461 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 1827BAA6407BF7176678067497F12FB8E4D4308AD145C9BDF08DA376B0 - -Count = 462 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 7C2292C443885042726CC2DAAF2A74362F5357120ADC440B77E07D01A2 - -Count = 463 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = -CT = 6A0037DDE95185558855A2BE11C2E42134D49274BBAC71EA7C30622D9C0F - -Count = 464 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00 -CT = FCFBEEDC8C1EA9663D31B0B1099DB83FCB756CA68D56835CCA4C27E4C2F8 - -Count = 465 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001 -CT = 0E2E8F30F0C391A4034208D1C996F7928650DCD1510FF7E1E4836A3E3BB4 - -Count = 466 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102 -CT = 575E8B0D5124FE1FB2ADD8B3B4ACEE7B0D72A712B72BF2AB847A0D50C4AD - -Count = 467 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203 -CT = B7B87F03895D737DE58D81735C66C55BD69CB4DAC86F358ABFBE8CD9F411 - -Count = 468 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001020304 -CT = 883200C322B6A50C78D11D4B9EE2A15269CC350CC46C2E840DD153F25B26 - -Count = 469 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405 -CT = B32B255C42EB056FA673CF76DF3E2C950586963F04F3626E3338978AE354 - -Count = 470 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203040506 -CT = E070F7A721BF3DAFBAC0F9407055ED095E29A818C2332D2590A5DA82E0ED - -Count = 471 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001020304050607 -CT = 9858EB2547202F0F4F2CB92E94D5AD5D03DCD0A917D6AB58B2C5A10BCA7D - -Count = 472 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708 -CT = 051C362CF017180E46C5E7140C63641978D3FF2F11D0A226209E614F64D5 - -Count = 473 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203040506070809 -CT = 7C89FABF7AC9D748F5D4F1F23EB00DEE5CF46A670F40EC13124EAD00CFDD - -Count = 474 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A -CT = E9E7805A5AD6973E1776BE51A919F819C1D36773522D6C0E8057AF9D9498 - -Count = 475 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B -CT = 437A96250084F91F2CDDD619CAE7FC2DA1F2ECEEDDACB0B3D3FC817952B8 - -Count = 476 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C -CT = F7EDEC7A5925AB5BE45C3D001E87FAAEED66E71ADD075F06799FF10E3E7F - -Count = 477 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D -CT = 981E132FCB6E05D97B4BFC27712A86A0AEDC542D7F1A425E76C97FCFE26E - -Count = 478 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E -CT = D75FB460D0DDD09649B6127CB23B47831ADC0EA6C28C8E6D28E6B562039B - -Count = 479 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F -CT = 3BA03A55E0A533C45551F57E137BE70FECC03CFBF1B26FFF107DD1B6E581 - -Count = 480 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10 -CT = D49379CDD92AF2E7106391ECEEC1D3E96814ABDDD54F675BA59621E74D5B - -Count = 481 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 0ED61625352A4F3F04366B0DBAC6CD03533936C2E96E3952D34BC7CBA735 - -Count = 482 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = CF7438ADB25D0B7A0AD38BD1FE95035B75446C132A9D193C36D3A34CE0D2 - -Count = 483 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4E6167E1A9C5A69913248D548C08F3F5EAA6A90A86332789CD129E49534A - -Count = 484 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = DC1C20DA81C6507FF04F37898873FD1191DA26D0BBE0BE8DBA5543847041 - -Count = 485 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E18C3DAEF7D94AB73C608ACD567F74967817C7DFF42982C6C22B4BFC7136 - -Count = 486 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = C7E0D5D310EA6EE24CBC8CF735DECE37D6910853A97161AB52C030A804A6 - -Count = 487 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = F870F5A0D5BDF885E3098BE5E6FDFD7F19398FD64387C8AC5AE158AC56BF - -Count = 488 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 8C8365A66AE21C1F85DBE288E2212B62B08DB2A5822ABFF5BB6A68657F09 - -Count = 489 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 56B1986DB3CC994B16A8DD77D3166143D0849C31E5623222C2EADDE8635F - -Count = 490 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 6816CC0E29DC9CF5EE3356AA2DC5DA952FFC3582252E036C86457AC9AB36 - -Count = 491 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = DA881562170087570755526093925C093D871298D29927435FDDEF6ED02C - -Count = 492 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 9585D0E243369D6747A3529DADD3A59921E80C091F165E1649C9F15D485B - -Count = 493 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = FCD6D40EEB4170F2166A02211A3207577F59730E28C6E5AF2A8FFDFE9689 - -Count = 494 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 747DED74E776EED785233E35A0A6B8D51FE450CA83A8DD0ED8E216953F54 - -Count = 495 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 94CE60ED5B8FEC3AB32C0C50C989ECCA82D53C1974BBAD94C66AE239642F - -Count = 496 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = -CT = C9D434E029AB94CCCD50CD556B536FDB928B58140D0CC974758C3C87B13E73 - -Count = 497 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00 -CT = ABF2737CB216E48C905368983AC7E21BB33F05B3E6047B8D5C52B5D6BC8435 - -Count = 498 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001 -CT = CD4152069F0CAB5811EB059D2750D436687D249CD1DCC738A043E7C8D7F4E9 - -Count = 499 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102 -CT = 068115A1A61EEE822161225498BBED2DDB1864F5BC9B56D1C016D6D566138B - -Count = 500 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203 -CT = 072704C1B2318F950FC1BD241CEC7577F6408E60D1D0CDBF82701183843989 - -Count = 501 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001020304 -CT = 2C77B946EC63D560E4AC86BF5B21F699F0EE7CA50920B31C55AC3D5F55B86D - -Count = 502 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405 -CT = D947444DFD94E9196DA53538BF2380A52540A8250E97834AD6BE51FD83D42E - -Count = 503 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203040506 -CT = 8DEF202572092D738D2EB08BBF16ABAA7D4A3E0B20A0653786B65CF4753506 - -Count = 504 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001020304050607 -CT = 8597E78352A4453F3A4E9A4E84C93603AB4AA42F3C109D58254CBCEBCE1BDB - -Count = 505 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708 -CT = C4C26879C7A42F1593C0FF36CD91E457605F16DDFBF6F30D3DED1498CB5B40 - -Count = 506 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203040506070809 -CT = CE14DA59ABD94EEBE3FBEBA9B1A51AE928B3B2D5F5B5D65CE669B52915E152 - -Count = 507 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A -CT = D335FAD7BFF7E7D171649417BDBF26049C86FD9197608D9BED741D21C78D9D - -Count = 508 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B -CT = A2DF8B426BED93B81D1ED02EB991DB8E00E42A80A171EA34604C8DF214A483 - -Count = 509 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C -CT = 80246D0F6225876A55DF221741F134586751B16F91154E39E5471D9633927E - -Count = 510 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D -CT = E83BBA40059B837AE6FCCFE5D189B5F10ACEB872B343C71E61B3BCA5077CBC - -Count = 511 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E -CT = 727A95D518B1397C612E5F58E5A67536D5456C3E532C52E02306DF9EE39F97 - -Count = 512 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F -CT = 87C05EBB2AFF3CBFB6B69784F5E3207B179D606BEEE40F884AFD955E322C00 - -Count = 513 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 3C7B6ABC78A1043B18A7F85807131EEEA5DFE4B4B3F2F689E7C3F71B748002 - -Count = 514 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 58F3F3033E1FE80689DAC957E20D6AA226D2165C419BF2736B73FDDC7035BA - -Count = 515 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = C0CD09D5755F679B9C40AF41C6C6ADE10E3ACF28A208489F1429D73F3667D7 - -Count = 516 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = AE125CFF191639364FDBC61474C5AF7DC1B0ADDBBC3DE46A9C5CB312F0F7A3 - -Count = 517 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 789A88EE9FB4442845E98B5FF1D7D3037056CFC4EBECD07CA44439ADC8D743 - -Count = 518 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = A0A368E9E620C757ED0B371C7732DF943D590DC8B2E14AAA6156A3AB1ECEE1 - -Count = 519 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = C3ADC17FA1554DF785EEC93A1DF194FEA8FE01C3DA09AC2F2517C5B732D0AA - -Count = 520 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 9A1CDEC82D7C835390FBF2ABEEE7924DA5B44A7EBE3D9A5E28ADBB9D60F327 - -Count = 521 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = BFC2F4DB5814B34FD864B31A3E35D1523617EC2DF109FDEECCE7B1140B775F - -Count = 522 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E393AD98AC53AAEA678E824C50B43E66091064079CFFFF5B6689F947DF4156 - -Count = 523 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 38F66465936D56E765BABD2601AE66D1674537046C27910D96DAE4EAE5D7EC - -Count = 524 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E4FFAB81BFB7C03FC981E78F0B85928F81950091B048161C1958C5C2C8A546 - -Count = 525 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 3B5271BD6E294939F33555E2828CF33302BF23BD4A6AF174B8DC318E940593 - -Count = 526 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = AA57ACCEA4325C5C91DA1EB41AF8BEF49C2D464F51344CA54BB25F40A71EC8 - -Count = 527 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 1A1F3D43B701B5291A91141BC2BC001199BEC48736F54A737CE18E8BE88834 - -Count = 528 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 5B7188EC3CF7D9936934C796F3849EEAD622CC438F3C9228FA223EB9CDFF2B - -Count = 529 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = -CT = EF0C294594429B657EA6CDD1476737EC4EA2F510FF840BE0862B266BD14864F9 - -Count = 530 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00 -CT = A4B170FA2C2FCF597D4A84CDE1E4CEEB7791137B8A211BE3D91D252F2F599804 - -Count = 531 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001 -CT = 97D7BFBEEE1842E9E042B52F5E01E7EE0D992D25B8B9BAB4E6413D38DB265BDD - -Count = 532 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102 -CT = 4F506F57FAE9E1DCA3B83F301C7D794C00AAC7970791400157F809902800F9EA - -Count = 533 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203 -CT = 30C64146F376E577AD040B20861564B45C00CD6BBEF057E4548212C923E9E8B1 - -Count = 534 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001020304 -CT = 2C06C3F9E54AB6F0DAE9B99C2C31C8FDA91C12FA81262B56C106906CA9C65D4E - -Count = 535 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405 -CT = 9D22ACBA0486F7C808FF9DFB4593829FB3371357304B1C0615CE384625C203DE - -Count = 536 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203040506 -CT = B838773C0770DA6ADB610B95A8E4A3E5C0A4A79C84C7413EF8AA7E6834F1607D - -Count = 537 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001020304050607 -CT = 4022B9A8622D623C58E58D821FBAC95DD93EEEC934811DB96D008634719BC748 - -Count = 538 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708 -CT = 573FA80904B97B47FFCA75B8B5EC2BBB2E1236B19E48DD7E5F14A93C14A3947D - -Count = 539 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203040506070809 -CT = 4CE3937187EBB73CF5B931A9B8B75CD05ADCABA1563DF3EB5BB03C3221ED8856 - -Count = 540 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A -CT = 6CB7321CEA1A021733BE841260DD6F593454376E9A24609510944903DE04C064 - -Count = 541 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B -CT = 6B63FC5EEA5D8150B6C4AF6DF1B1D66B42B82B134CC69D39620529656C5D5F8B - -Count = 542 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C -CT = 353FFD32013981E870D7B23A2FAB8DBE58F4CD6BCB9707BCE028FCCEBB078DF4 - -Count = 543 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D -CT = 61FA36866B10E0308C7BECEC6087CF213BE2E0809048CD6A29F196CE291AD799 - -Count = 544 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E -CT = 32EF3303B5803D24843E0ABC2206C585D9C32BFC66A28D110508F96272E04C82 - -Count = 545 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F -CT = 82965C77931E6C1632B0B78BEA9FFAC1E59B8CE9DD15C6F8653CF2EA459E519F - -Count = 546 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E1CB1ADAF7D5FB76A063EDC3B859530EF1D686E27A93EC2E05D50DD88D128935 - -Count = 547 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = FB4F1218C4AFA05D8B0C4509EF0AE1F5D1A7DEAAB36773244BFCD15BCA42D93F - -Count = 548 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = CBD59602AECECF8B98A9FBFE526383DC8FC7ACA5D63DF15AC72546923D5A5BAD - -Count = 549 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 67156AD4AE9841801C6B855D3FD58D334065112FA6304A194D51A22B2541BC30 - -Count = 550 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 4D31121A065EA817E54EA65E1A393859342785A85482844BDB1B6FFF9F616976 - -Count = 551 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 9CFDADC09DCE46B60CCE6D0B8A3A608FD267696C4F41AEE7B6DD7F041DC39B3B - -Count = 552 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = C58CAC9C556A202257D005519B6D2BDE0F6C74E84B1AF3A1E60BEF4E31B03B77 - -Count = 553 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = B9428714002B91756889E5C5B5E0B55C3B45CFC9375D7F735D808DBA9519C58B - -Count = 554 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 10911DDEBD95BF54501C37A978C243045E3EA6A0F5D3B8136849CBB1CC447976 - -Count = 555 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = A85A4E15F8A98AAA14937083964AF7F871D0C4D5B4190B34197B406EAA0FCEFC - -Count = 556 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = BA29DDE0961BD8DAD7302526578D877523B7CC50048770F4ED5B5E8768EC50FF - -Count = 557 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 00CA00DA0080C914DDADE7F18347730A9A8B2EBDDAA8377A067898C950D479F7 - -Count = 558 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E83A37FC819FE21252F1AC62538E63CB280FEF3DD53131B215209D2D880467EF - -Count = 559 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 4FDF901264652C05941033033AB37CC881A6B5FE32F608513BC50575C1C37A8C - -Count = 560 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 75CB85AE5F177F5FA32B125C73152018140D1B09C891236104D983B16FD02B80 - -Count = 561 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 5A376FE4E47C89D5DC8F43557F4FA0C7AED2FA1013642DB01A3612C54FAB0359 - -Count = 562 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = -CT = 88D982936E20E0CB1395A297ACCD1F814341BC5A7A3B3BDFF5A209562F5A6F1971 - -Count = 563 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00 -CT = 77044E500A97FC0E11D52704D436CEA22551CC887DC856EA5BF880D8063AE1A114 - -Count = 564 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001 -CT = 24BC2C0B966061F296F49E84C74F87591A244523E2398E24121C0360C9D30242C9 - -Count = 565 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102 -CT = 0504DBB1336C348B36F9D636614DDF998490A829305F40FCE7EF44C8D252FD8E4A - -Count = 566 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203 -CT = 20A8095E96EF31D877DB85EC661D1D800FDCE6A4BBFBBE5935A38044CE44026916 - -Count = 567 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001020304 -CT = 080E36DC84BA1A24BC7718B08A56C3FADE7B13C12D3E68354E9C014C28E7C19D29 - -Count = 568 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405 -CT = 01F3BFB8553C24AFE63CB18179D28AF0CC2872905A699C342EBA94A4DA3C0B1E95 - -Count = 569 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203040506 -CT = 7CCC05A01AC92BC130CB3D93EE83283C29F7BD1A3BC7B7D1390DB09158787764E7 - -Count = 570 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001020304050607 -CT = CCBED0C207AD7BB6366013E38C4526CC5F2DE663579EB22E94B05D5B715EAB392F - -Count = 571 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708 -CT = 0C46CFEC57BB5461EC2C0511D226BCDF27A6F05CA6C89060413C2B24B5D5C8BAD7 - -Count = 572 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203040506070809 -CT = 9F7DD7DB2E8F38C785F98FE547077C3AE05AAC5A2DDD3AF695CF44D08770EC8267 - -Count = 573 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A -CT = 2D4DE26EBBBAD0B80468AF94D3534DDDAA170F383E160EF4F9F1577E8F7A3D66C9 - -Count = 574 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B -CT = D22772AFDAEEC256E7CE46BDA73730F1D772751A555A7A85EAA306949FC0EEE714 - -Count = 575 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C -CT = 67F08FDEF881EFA34F8AD07E59ADBC210BE604B0E29665C462DC30C83459ECE321 - -Count = 576 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D -CT = E0617ADCF34A078765B2F23C4C168D82E17747EFB7635773B627417C6BADDAE2E9 - -Count = 577 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E -CT = 3AB04445E4BB764257E08AD83E55507409B58A5F9ED3D45C9A9E6CEF6C5D0CEADB - -Count = 578 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F -CT = E28C41F9AE0BABB296F2615CB50359EA9EE68F964EAB944C8611302134400F8B35 - -Count = 579 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 823DDF46B296F6D828090843BBDF8F63422025A86F4DED6C9664BC4B0154AFD5D9 - -Count = 580 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = FAAD68F5D151A09320348D5955F66D377F0226EC1AC8E8169C8FC44DC663683D1E - -Count = 581 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 8AF21480F9C48E8F99AF2EDA11F167D0C939E059B857503EA6313DB71EA904FF57 - -Count = 582 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 6EAF94B0B3AC2CE720957F90255CEF4AD94D2EB78E90CE1DCB440CFF1034116518 - -Count = 583 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 2D826B20205624ED5B0A31F06E9D26701D4D5653DE8A41150064D4487A9A648C34 - -Count = 584 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 05EBF9A8F632B6FA84B27F4DD0D0C5C3543BBCBE940201460CA7BFE8E25AD25608 - -Count = 585 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 8058BF6B432FE70FB1C1B9DDF242E3828141A86E4DB2767163F6C80630A3A638AD - -Count = 586 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 40030879A60CB9F951A78188F0C10733B787A26A5595AC0051E25F33692DD96C22 - -Count = 587 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = F160BD208E76FC5FF65403F75E6ABBEE3ECEAE2A4B5C471A90C0DE2B316EFCD5C4 - -Count = 588 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = C81D194816E26A85CE0BA3DCF2EFFE4D01878C6907EA85FD1DC9231A213EA0182D - -Count = 589 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 776CB287899526D1A024CA3D764C1D97FA5DC402E38956110202C82683DA75FEB4 - -Count = 590 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 47071FB03735958D7D77D6F1AF5229CE4E2EFFBB56B6EF7CEE83644D3673765DE4 - -Count = 591 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 04BBD029C6F15FB17E94F379D0CEC45DE41A1365E8E07466FFB20082313D6FF117 - -Count = 592 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 8CD0818681C761DBDFFA64E7E81D1201B6BBA00E0B216BADA595929CA2A456078D - -Count = 593 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 95DEB6242BB0997805DEED2F3631914700F675DEB2899948A312DCA5AB8DF6A855 - -Count = 594 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1B40AED7A8A928E94EEF54622A24C7BA4642C69B9BBE816E286AD4671E78EB0644 - -Count = 595 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = -CT = 41557C1A57DEBF7E3F0006AA85840BACDB5DEAAFF2278A66ACAF008D035E1102E6C0 - -Count = 596 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00 -CT = 1B48B1137612DD2FD753A24820F4EE6B4490A291C3298870A212CC4AB5C27CF0788C - -Count = 597 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001 -CT = 99DD62B7F4FD82C888A68697194D34F014D86C5C8F4682D058E8E92729E9E533EA64 - -Count = 598 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102 -CT = EF1D5A78F6EE79D321FA0F28763B08007FA3208F95C5BC3363D71471E42F6F9AFC33 - -Count = 599 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203 -CT = 16468A7835CFE6FDD0F2F72C608103176556B7EE6E221CA2FC51AC79BB184F646F7E - -Count = 600 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001020304 -CT = 283C9F6B14728410E9430611AD78EC7BDD8B450F5F8B5B3C6AE826DCFE5150A688F8 - -Count = 601 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405 -CT = 87FB9AC6130621DF0DBD6EFAB68DA1D301990F860006C73749E0D57166469C990ADF - -Count = 602 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203040506 -CT = 0545C8D9873F4A9678C428AD21BFDE0DA8E465C2C3C919B2B81169C369FCDC9C512D - -Count = 603 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001020304050607 -CT = F772E6B83E1946D6430566FE7AA27C1D191CAE6CAC8DB4FAAF1F2C5DC05AE7E99308 - -Count = 604 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708 -CT = D1B9E2312608BD2B54BE125BB287EB04272A50CF3B7A92E7851F0932FBA1100DE081 - -Count = 605 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203040506070809 -CT = 5F437486D08F236F1CB1028099F4D1E9A520CD57E91026C0628D9572D3E5E2F3ADB2 - -Count = 606 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A -CT = 6902AB55A82C9E1009A007F0D8EB93B92329EBDF1476C4D47D979100D5E28E9F15E7 - -Count = 607 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B -CT = DF78A10470C9F632E84076B1F50ECD78D0A6833CDA1D8B671078716032D0770761B9 - -Count = 608 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C -CT = 5693A1C52597D29D6F0BEC9709162EE53B092D28C52B235E4C1DA83951C2DC00E852 - -Count = 609 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D -CT = E6E881E7558BC9E28DAE9720403C88A56ED6DEF065E2AAE69D918E394377648A08DD - -Count = 610 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E -CT = 509C4896651D3820483268BA04619733C0A8CA9AD0413B320460A5A9568267862A42 - -Count = 611 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F -CT = 54E448C71819AE7F99E9A631C2E2269DB06E65B3A00696FEF8744DA5A5A02DBFC115 - -Count = 612 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = D98DAA4A1753FEFF7480BD4D1E3B8F0DA6D3DA83FAA02DD95F2478A869A1EF9494D0 - -Count = 613 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 9FF0AC96A387A518A3EA863CF1B3D7CBFFF5E623D1CEB32D1F7EA0625D6654D3669F - -Count = 614 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 389318AA18AAE97C4EB5A50D2A822E9745175D42003C95F182435D7C2A1E9E272B51 - -Count = 615 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 058B677CC520153EE68F59127406AD9E1B9BB5CC4B5E4808B83383D8845A6E640113 - -Count = 616 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 068C5C1749C631760EDACF4F678F8DF2E0C6DD27B87F4635B5A0275EBA620B6BC9D6 - -Count = 617 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 4E4E1A0B632E73D3CB118B8D559CEA4C5A072C686464922F7417E862912E006A1F82 - -Count = 618 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 088024DC216EA695B327F4A10ACC80C11D7BC04D4BC8C0AE0DA0D019BC35D10B125C - -Count = 619 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 1FDB21AECD0DE8C02D55B0674FBD15374C51951C704F5874F9FC4643AFC45244D4CC - -Count = 620 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = CC1A671769C4B79A6635FD5D5074051CD8C721B313042155027FD0EC30F0E4A4BC7A - -Count = 621 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 2385353A0E2E0FD6835200249081F5A472E6030F47B9E7A129111036679D87C18DCA - -Count = 622 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = EE6B0DDB538CA224A95AB38804A3243F95A98761813A116339F50E94DFA903E991C6 - -Count = 623 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 68182DE7567BD23CDD33EB2C20377E6DC72D77D7031AB13DDC4122BDE4C03936CD7E - -Count = 624 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 3AB3EA01579D1C2FBD63FA64EFF5DAC34677D6771EB45CDBD4D1C5C88C3D41F3A631 - -Count = 625 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 6F11FE06FAE20FB5B507CD30287C2FC3352B019D582B076F7FD724A78AC83BD3E0F2 - -Count = 626 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = D4B90DEE960A59EA789923E310516F67DD9C98152B7F17C6B23655A97F68F91E94AA - -Count = 627 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = DF9753D8A877963EAC53D043F03D769A20C317A52673DB25D21331075D6CFAF45072 - -Count = 628 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = -CT = CE05264AEC47DC78F4EF2BEB7E31EAA1BF76D1EE7C76D98308F7E84ECAC6DF82CE1C20 - -Count = 629 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00 -CT = 48BF5C358A68D93917ADEBFE8502A28BF0BE71FA176DCC9F036CD406B1F938836AC569 - -Count = 630 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001 -CT = 5E19A0433CD43034D88CDAA20FC5520DCB121896E2FA2EE8E3ED1D559EAE61ECB80C58 - -Count = 631 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102 -CT = 087B87FD8D943BE86C90678DBBBFDEE94B50F609E9B6F12CCFC06794991815AF829931 - -Count = 632 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203 -CT = D2046B38F77D9E313473C1E7038B3474648562AD862BBF37936CD89C5D9C8841825E46 - -Count = 633 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001020304 -CT = 7079694DCAE40F16CD56A3D26199FE71342A9FD985C7757C66FCFEC8F3A22E00E4DD7D - -Count = 634 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405 -CT = 4BFF2AEE7E5E91B0C87C3C37C405FCB21EBA70E66345F3AC94E9EE93A5BD167FFF3590 - -Count = 635 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203040506 -CT = 1BD41EFD231D8966B038D0FBEC6462ADDE0FEAAAC7F15F2B4B59A2F8D57393F0292770 - -Count = 636 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001020304050607 -CT = 4C87F09ED1F010B6ACD71C04E4AB40F4A8C06DAB5B5244F63B4DC76DB31A5CB9322DED - -Count = 637 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708 -CT = AB1F7ECD1AA5AE36A60DCF590EA06F6273EB7427B5E319CBBDCD938308F5A842F1E832 - -Count = 638 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203040506070809 -CT = 3F1C24737C44EA6214D70528A08D9E2E1E5A1937294EF60197E1794468168EB25E667C - -Count = 639 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A -CT = DD5EE071DE7C7D9631164ECAD095038FA6B1A7CB2EABE7BD192964337F54A4C9E132A8 - -Count = 640 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B -CT = 73A04C3645F4D52DDC5224574CC321E7ADAF98124505660A138AC1FEAB11E87AD6B11C - -Count = 641 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C -CT = FB1E2271B7B8D705FF9553B2B4B44B5E8FF60E0A0E5CA79061927FD4EA89B6B46C4CB5 - -Count = 642 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D -CT = 5CDBB5C8FC9677A96E203FD1526525A96C283325194EF02B32E1633D38D4CBEFE0484F - -Count = 643 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E -CT = ABA1A4AFFE2287BEFAAC434E1550574DDBED7D9701403845B9F50EB18A6EFADF815F5D - -Count = 644 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F -CT = 8B1A7787133F40FAE18F564509DE6A0F65827EACEB7600E44196BFD30E68AC1C84A176 - -Count = 645 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 71C9C149560ADF1AD807072128BCA26C767F5F6ECBFA2F27B5FDB92FE713FF57A22771 - -Count = 646 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = AB0B3BC1AE26FCC70C279AF1BA9DEC7A6085D4A152280E9DC00E2D22DBFEC4B6D12282 - -Count = 647 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F7546036EB94FFEAFA4F5EDF5BB37E21D64AB90C90AB1ED085A568E9F8C0F3EA13CD9E - -Count = 648 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 925674AEAA2107C33E78122622694FB0ECCE99A832823A54A217B488784339722C4DEA - -Count = 649 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 96674182CFCFDAADB0B98EE4A9FE9E23F2B9B276113747776BB77DFBBE18F8AD2A9408 - -Count = 650 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 08E43598469E933939A98AF2B0D5F3C5E45AB4FA40C8CBAC5409D35AE79489FE11C18E - -Count = 651 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = EB0E4202F4C050590709E4A8C66E2A8D2C0393C5252FDC06E8782951D9C2DE253213AD - -Count = 652 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 772C644B2FEA773442AEF412EDFD89B4E0765BE221913D5B610DFA03CC841FA9996A57 - -Count = 653 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = D9BA6750E1ADEEFB093C8EE5319CC48F0593A82570322BE63179A745CDB57E8E9C58AA - -Count = 654 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 83F2FCC9FC19D2918A930DA5D25E0A78271D05A6FC7C6A4CF247943778746391D9BB65 - -Count = 655 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = BDC7911CF4F575E096F5AC7B9CD8EDA13D23AF37FFD10E9D14AA448C6B467C47ED2D6C - -Count = 656 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 94F8699B09E9F9BE5C2255D4C12F1C6EBE69C35ABF4FB373649E2D8EEC01BBAFF2812F - -Count = 657 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = F6262B69F29843DD169B793F63BC11E70419F988EC4C1B4EA89BD7CA17B9D2C6089589 - -Count = 658 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 3CB59D747A84D5C68B6C76D367EEC2669A347E11AD4447DE4E8DFC033BCF469777672D - -Count = 659 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 0E4B288606238654BED0EC71EA4360593C64C8E5DDDF5E37F9520E44B03A564685F8CC - -Count = 660 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = DC06E8047545C3737C9EC3D65C68AFCE495FD9A4F32F82800DBBE5C325C4437F0EF85C - -Count = 661 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = -CT = 490A4E7E2886734863DF229603AD71852BEB0367258891B6F4302BFE84FE55C1C10281CB - -Count = 662 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00 -CT = 956021668B0360DB7793A62CDBA9611F6D92EC697F67A566411DA49C3AEED1954D77D665 - -Count = 663 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001 -CT = B3C806AEFDCB85578E4FD4FDD67FE3F87E9E7B4CB9376C71939A47871F58F5D1221DA140 - -Count = 664 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102 -CT = 335B195E259CF3D53763F05C2FDBD0CCBF7B1B28022FA81048556789784F011D8A758FB8 - -Count = 665 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203 -CT = D97B6785EF5E402E0413FD5666DEB70F9CB4722E65882BFFF60F5CEF1F53A175D20C02DF - -Count = 666 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001020304 -CT = C2BE5677887AA43E57016756FAE2B3FDDBE6AC849A6C885B583981DAFFBCC7D52D10BF2A - -Count = 667 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405 -CT = 52712DA11B4FA6DBF1DB41034480AC99F8CF6827B1E71124E80861C2AB906F76B990B4F2 - -Count = 668 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203040506 -CT = 817D27F98E2212FC1D2A6BE85C3442905BDF19F5CB11103E2826DAB124102C338E857DEB - -Count = 669 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001020304050607 -CT = A446D84307C0565F0C64EA9641AA576E14E2D91838A1F038392D286247D77A4CF7BB80E8 - -Count = 670 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708 -CT = 80316166310E8D960258CAC86BD54D9F2EC4D0C6807527A0396B641CE86E0AFC78D5713A - -Count = 671 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203040506070809 -CT = 980103AC4F2CF2B54C76D563774BF892BC0A149AAB0BF680079D416E987F2C521B3357C3 - -Count = 672 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A -CT = E5A0104787442B9BEC7A33B3C84BBB082F58A6C786D49927929778527A54E64983766D78 - -Count = 673 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B -CT = 2B51ABBFC4CF35CA824CDCBA83064183EF97B0A0D105D2ED16AED057AB3B482EB61CB51C - -Count = 674 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C -CT = 954EFDF6335CD7FB0E61E4C7EB375E415694D6543B71AB3B1FB3040FEAF1CBA65EE7E6D6 - -Count = 675 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D -CT = 5434F35A44576A2EFC10A752E43670DDE6F05C1D9AC75A2C3D78DAACD42BAD9BF1F62677 - -Count = 676 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E -CT = 4E861C486A30ECCD6D60F21C2413751C6532DAEC473A1313C3A686FF7DD5DA6BE9FD98C3 - -Count = 677 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F -CT = EA02A7DAB49BA00696B6FBC17782DF8EAFAD88A03BD9092900E9E9EAED641730F3593F35 - -Count = 678 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 79E1AC9D1BC556884696AC4B6D62B8C467C6BD18711C58C566182B8D66DD4E359A604E9B - -Count = 679 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 223A87D48DA7216BD16DAFC5DA810D18FF78E4307558636815466333BF11A0D06B421742 - -Count = 680 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 47EF322B4185B5B45EB0872B8064AAA7159E19BB7207A9DAC579BD4C4BD2EAD415544CF1 - -Count = 681 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 6781F9BBFB08259267F7B5409B5075FDDEA4536C1254CE3B2B7C9E23E9C42225F2495B92 - -Count = 682 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = DAF1C8E354CEE62DF2FA599CE15C4DB5EFFACE2D779B724B108A0E064022CDB85CB108DB - -Count = 683 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2B0E8DC409732CF38D86B3B038FD73854943CAE49D3124CE546E25696F050FD99FCD8650 - -Count = 684 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 88DE829B6C16D859EED8381CA0C90D69CAD039CE92F0F1EDDAD303FD176F50CAD430A491 - -Count = 685 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = AD9A221D48CF48EC5E4296B9818A18BDFF5D1AFFF1B774FB4F8EE48A6E8571B56B0371F4 - -Count = 686 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 69F63B718F1FC21D8CB98F307800680F7AD0FC9C256CAB536CE01A17E048F685B995E4DE - -Count = 687 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = DAE6A863AEE9A4655122AA218DA1F7B441F248F0AA7160E4BEB79734BEF1B4DBB6A9F184 - -Count = 688 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 56845422C4C39ADBDB4E6B49817AB15E87910270E6203DC218D495E849CD1AD60D4DFD71 - -Count = 689 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = EBEC5FD5D2850F6BCDAD1DF4140E15444F02650DC6A7FA91FD87F40FB25A5B522587DDBC - -Count = 690 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 2AFCD4637DA9139CABE4FEE7FA27D4000956BB26C4B37068233B315D101307CA3469AC4E - -Count = 691 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 08E7D60B9DE2E26566589FAAD4A5FBEB5D54BC0551B80F091E1E0CEF4D204FE45E882032 - -Count = 692 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 8166C48F3DF8DC41FC7EEBF45BDC9FBB07026516D3A714C980AC1F2C40852A5F7045CE7A - -Count = 693 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 56818624A6992013CA810A9F2846C741483478DFAFBF587BED1BF11F2A8BC447F3A4055F - -Count = 694 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = -CT = 6E42182BC0B5754F0782EC4EB03C42AF3549F1BF9F3A1540348A709CD8C6FA491164FD0567 - -Count = 695 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00 -CT = 447B5900DD8A1F1FC97B8E1D02BDE4C0081C2C32AA930AC870E54A21721AB01CB1532550E5 - -Count = 696 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001 -CT = F1AF3A25F300744B6529938B83EB72A5BF9232B7CB17A4BB2CCB7B306302754F5776BEBD02 - -Count = 697 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102 -CT = 03E13E320DF5C71CA04F4577DD1C0CAF16F67AA1EE6A028FB6F1BF2084EADE1A4C63574CE8 - -Count = 698 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203 -CT = BF87938AEE33EC2CB2E2ECC31520177146ABC4329F8D7827DC5F74DEBBDF4D2FD93E273320 - -Count = 699 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001020304 -CT = E0AD1EAF97A05A26AE6E2F929049CE326352C3F2E6D842C5A224EEB720622B727F1293AD49 - -Count = 700 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405 -CT = 47EE76BA3D98ABF9F6BFA2342888DC340DB97ED5C516E7D7C8A26087899182BF9317549229 - -Count = 701 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203040506 -CT = 9ADD3BBCC05A820D9B6EFE204A85F6BC2AA21F34FCCDD3405984D9A223D4768DFC224309FD - -Count = 702 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001020304050607 -CT = DF06F1E791A648BB59C9902821AC399D93153040DAFFC145EA6B2E5B83A97ACB83F002EC5C - -Count = 703 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708 -CT = 1844EF8F0B322B2340392A6FB34F3C608038949C8482A42CCAF7002FCFB4FA238B5F4E972F - -Count = 704 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203040506070809 -CT = D3F8EB37375E26B4D6F5D9CD41D8B2B20D34747E5C4F4E8B67DCB8436134F89E34869588B0 - -Count = 705 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A -CT = A1046D2563D762A0B536B90ABA205F1DA56A7233D878C61DFEE6686837E016B992AADE361C - -Count = 706 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B -CT = 036CC075D32F39D3E7AADC3BEB933D95B0C3E988A06B490FEECF8E08B581BAA08AAF1366FD - -Count = 707 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C -CT = 88DB65BB097DB7C7851E828F5179A32F55387569A0C6593C9592CE4A904F78248E922707C4 - -Count = 708 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D -CT = 14212A7C9A858C6924CE80B6BC364922C081F8C19D551F9EE8DA5FA7A8B9EB95EB5CA78C7D - -Count = 709 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E -CT = 5DF919C6C480633B4C6E1951F505BD32CD34F91B6840208E8B17D899575328B5AAD9C8E4CB - -Count = 710 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F -CT = 0DE47D8B15E29392580CDB622C7E996BB070909BB06DB059A81FCA15BC0031BFD38735E1EC - -Count = 711 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 75AD8248B3026FE87DB3221ECA5C46F6AB812E8A759C5066F476CA8262D3CC0B1AA1CDAE79 - -Count = 712 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 80E4199B18A9A6E947CEE980303556AF1DD86F1D989AB7185CC8D0AABF37651A6FC874B784 - -Count = 713 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E94F4B82E14B78B17CCB56982C3AA3DDBE1541DC4F425429D496F50CF56508707030F7332F - -Count = 714 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22298C97DF5F814D1F0F1D3D0356D8AA5029EC194AEA908A2E7104EDFE14F27A0BCE34B212 - -Count = 715 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = C133E00D95788CA3BE0C57825EF02421157A2036B6399B363654803000241DE93569B2855A - -Count = 716 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 5E063F06D6C5949E5A71CFC0A0D491D567F90C6E2D8F539BA1775475C3DAF47CBD1AA6C3C3 - -Count = 717 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 7C9E9E12EF9586A2089B0D0BA2B9180E60982D498894C36F927F854E889BD06AE16659B7FE - -Count = 718 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 711250CBF13451750B0CB51F1579D0E6FDFFDF65C19167CB84091EE8AFE1B410BE24D60F48 - -Count = 719 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = DA482AADE11333A3A784124B63DFCFA84B65189C802DE1BE48983CD6308203E0ECC122D97B - -Count = 720 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 3CA3EE3AAACF2D70461829E3673F90174EBE5A4B3BA4B7724A7774A92364747B3178A613B3 - -Count = 721 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 1AA6D1A58471F7B2409101C2F4F2824A39040F56E96FBD2BC0481906D71A9C5BBFAC0C99A6 - -Count = 722 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E29C055D186D684F7080A8EC33381DAC6902B653E881BA92962159D414AEF992C03BD69BAC - -Count = 723 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 287A386916BCBC61478FB49F7708CC306BC17DBB4B99E2993B9D12BFA0EF80B06C64C41781 - -Count = 724 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 9D50D834CFC921EA885E9228ADDC38E0DA20ED4F9F67F91E7B858D1F98E8E86A4FD6BF9E69 - -Count = 725 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 052AA063DB8A8F865B4228E40A9456901BFD0509F9147D2A2F681222E6D625E8A2C9C9A6E6 - -Count = 726 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = BF72CC915D3309D49CD00BF0C538FAE343839E82745D4280D4CF605E65519C43FA35B7A9EC - -Count = 727 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = -CT = 2EEBF5D2B590EBAC4AFA6343C6EB50A04F8C25E7719DE1A3DAE8AC075BA3EA0A3C6B9C8AB6FF - -Count = 728 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00 -CT = 094011114CC6619F4996B8263DCA6184A147B68FA32A4C3017171E9F6A3845350F3D45C4983A - -Count = 729 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001 -CT = 8913D6BC6205EFCA20F5D6C2DA99A844EA224F3D5F2C8D7A36DBCB6C327AB6CD86FAE1650060 - -Count = 730 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102 -CT = CB812D246E8C312101D9716D62ED6DEB20A154E77047659B6A271773C62B6BF3D8CF49B67B95 - -Count = 731 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203 -CT = 6C4D7BA3CBEFEC1C47849356B58038ECE8C257C5C3802F1B6DA38BB600FDB45B326F9118B43D - -Count = 732 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001020304 -CT = 367CBCD15C2EDA5C5AF1EAFA882D23BEF635B1BEF8F3D309BBD684DB9698517A7E19A9628B6E - -Count = 733 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405 -CT = 8A5DC05353397158FC2F11323AC55C09B3CE45E4CBFA221ADF54EC468A78A0F2B817B5DCAE0D - -Count = 734 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203040506 -CT = D64890AA62D3F7431AEF164F745B637A4DBB33F2544BCFE7D854085ECB721EC422E56B1CF81A - -Count = 735 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001020304050607 -CT = 3B358F8ED90E72B1FA67891C069A7E944F7EA245D1AF6A2DDDE4F0184F25ADCE0E440243E5E1 - -Count = 736 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708 -CT = 2E5F156AE85F6CC3900ACDF6199383A5CE88FFEA72B1C377B5FE3EAD767BF57FEE78677416E1 - -Count = 737 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203040506070809 -CT = 1092388469017807194389706CAA961C69F4DFA8138BAC2CA248491D8C140341CB271D82D5A0 - -Count = 738 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A -CT = 86DDC9C8F3D6D66915F5A0DB905E6BDB3B4F6F7A7FAF4FB773648DE1FA6B9FE4ADD6A6C6F25B - -Count = 739 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B -CT = 43E07D84B9BFDD918D16797A004CC0E1C69EABBA434A997DEA5C59D2B1E5651915BEC8D1527F - -Count = 740 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C -CT = 4C118B7C6AF5B9780233498EC00C11A50F0ED8D12CEA655B01D7D3D36DA85E52861E2185D298 - -Count = 741 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D -CT = 1129FB46229983009569BE51D0A47C3F90C38E9D0EC2A425A5C585C62ECC84C2330406FA497A - -Count = 742 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E -CT = 1DF32BBF88E42D5758982979B414788316BF4F74B79C55DC89DE290C8B1E458842C6EA7425DE - -Count = 743 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F -CT = D8F523E8E3D5D052FBFE737B507423604B28D34CCB21AFDE4ED010594C7F0493C38480001861 - -Count = 744 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = B8EF2648409DF3170E7DD883571CF599A41985E1702413731B197A46C13C4B911E6CCECC6CA0 - -Count = 745 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 6EBBCB0AC350D23C313958452F6DBE21C50B2DFB1996D08BD24AE70BACADA70917354C033B6C - -Count = 746 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 8C591987F3ADA292A5202AAC3D228624F4ED45D9F324F635B2D04BDF5C283B1318F526514A7C - -Count = 747 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 6B122135EAD8295462AE73198FFE410519A5EA0138848E49B6EB6075EC96C19E812434A2C5F5 - -Count = 748 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = EA5CDEB4EA23F2E987ADE3B2C37CB71B5AD3822D09EEFFBF39453D2EF633DA718AF595478E79 - -Count = 749 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 490AC1BA199C9D12F9EA069F0D62B3A8F71A5D01D9F2B35898B6770EBA233CCAC533B055EFE7 - -Count = 750 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = A6B9C649F3DF0B2B0A80515189C545DB13F19D8A78B1FC3C8966857F169DE68130916BD44448 - -Count = 751 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 8ED0AA3BC2AE2524F0916E5BF2A9C869FF6D29A202CAB3F73C1551E2EA10AD726FC1E047479B - -Count = 752 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = B10ADAAFC47DB344BEC8163CB26F43425A53D330CAF9C58E1E3D36160FA641DE99E36052E673 - -Count = 753 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = A516030137972F0B3CB18E9004E216FEEA6EBF81970279C7A08E72207273AB8483B70464D12E - -Count = 754 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 8197B7F71A1088CE3DE9FC3D4C23D5E522D808BD0B0BD4485586FED9346B790FA087D985E7BA - -Count = 755 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 42E94B2ED011FF5E030CA672968EF1244A7EDBC180ACFCF512C36425CD0B2FF049098B423708 - -Count = 756 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = EDE668393407A9640C5511DC14A9CAB88AECE27BE7D1EB51D7A5C0BA410725AB826804C8722C - -Count = 757 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = A1FD495DB04555CA2DE857C3C5811B4D223D82328332170FA7C9ED1F9B42170714F585CB0884 - -Count = 758 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = C8D13C94075526DAC76E7CB1346B0612668AA906FC033078A49AD9C5A39EB38F2EF61AD10466 - -Count = 759 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = B0DDF37AF7457D58F3D3F5ADC666D6C11DF0237668414BCD76B762F80B9D412CDDE27D122919 - -Count = 760 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = -CT = A4A9C5EE94E98A8B13D6EA5C1C2ED0407FBAD8FA52FFA2A3BCC620AAB685447453A60BBEBC14A1 - -Count = 761 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00 -CT = 2EFC5DD9329E33FBE1C7C7165EBB6725632A07E51AAE3C021AFDED4821007A7A5A024FCAAD53B8 - -Count = 762 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001 -CT = 3E11E140DD3B2C96E08332B34EA4450301D1E7A63C7611168C537540DDF4E2D332A21AE3CC0081 - -Count = 763 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102 -CT = 1EFFFE66004739445A2DF9E5F3F777A229222CF15A2E50575C616414D49BD1AB8E1241704CDBC2 - -Count = 764 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203 -CT = CE4281EA3844A66566AE1FD7B85910BAE650964B3B0684107A33D972E3501AE9310C1260620371 - -Count = 765 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001020304 -CT = 1F4580A2482AF4BF411337DD16B9A917A1E2C6E1B456CD0995F252F36EBD6E091A2AA25259BCAF - -Count = 766 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405 -CT = C4DADEA234E4668A00D1D8DFF1E99E86D121CF26A9560D3B657434E3FC6F90A8CB23A04895CB7B - -Count = 767 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203040506 -CT = 398467E91BA83110105BE189D4CED49C383A2E3891B5FD4879C6EF22CFE15DD9CD4A163346CEBE - -Count = 768 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001020304050607 -CT = 6A2CFA9151DA72318D610F3E9640A6405DDC62619509B8F96E08B28B3E54FD5BF4BEE78C53C6F4 - -Count = 769 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708 -CT = 9322CE5051C388DB9B513082B5C24236CE7887A05FBA7DBBE0431D6CA3A1B5680F78151E517C78 - -Count = 770 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203040506070809 -CT = 7E256F78989FCD7B00D912E4A81BA58BA12883CC3F9AF20E4074EB066F424F5541AFBC88848601 - -Count = 771 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A -CT = C21701C35E0E5FB450C66BD785B5E8A35426198531AD9BF1B30BB9ACC229A49C7C247BD28887DC - -Count = 772 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B -CT = 89D7DFC17B98897E84B11F0159DBD6445E671DBE2F5323522C2BA8AF02E074B7AFCC5487CE71FD - -Count = 773 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C -CT = 97B594C65278FDFF5DC5DE78872F7BB256B9A8A40A1D88AE5319A2C5CC6BDFF43ABA2B4E9A0231 - -Count = 774 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D -CT = F245BA07E7313C4D6DF2A7AD249934F9D623ADA17805B2AF60E486132BFD356075A9B8A8BDAB0C - -Count = 775 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E -CT = AF25B22EF43E3C43233801860542510677C09405A112E08BBC49711C226BCFDFFA024C1423DB5B - -Count = 776 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F -CT = 6350A0EF716237E8C673C80CAAECFD1CCA33EFD8620A0C47563D500B3F245273C122B3CFEFC6B1 - -Count = 777 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 4C7E93A2E700534E094C38FC1E15EFD0B38371076DEA78C0989346825A3A72243145AF9A0E3C5B - -Count = 778 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = B2E1F92143DE07005E38A3B4CB53405C956C98862723A2A1686E5AF192D56D062F53E57317DB04 - -Count = 779 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = FE83C5247C1F5555F5A72E735B064A78E165781169AF07D2F78FD54B294C403A90B1F4E65B2644 - -Count = 780 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = BF65111B5D2002CBB859FE63D53E7C3CE7643316B7C43F767ADDD554AFC2EC90140469C306434E - -Count = 781 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = EED3146322BB83F0B7D895480E4AEF71C8D6531DC7498271AA8F39110C1E3D7A7CB12BA47A9682 - -Count = 782 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = FB585EBA78EE2CA4B5A113B74FBDF72671FBA412CDB00BDD52644168248FE9932155EC718DE545 - -Count = 783 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 205FB1023DFD4162A2D9754908BE4292C1A0E2591CAF368B6D861FC137FDAC7EA9B7151D77DBA3 - -Count = 784 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 9B32D954A56EB24A2C1A830C71F47220BC36196EB6266DF038290F09D8AC8031582D675E24A7A6 - -Count = 785 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 1436612371EB40E2A9C6538A0398C0748CD58D0CDCD34F4F9AC3C0B0379146FC8D0A8565DD33B9 - -Count = 786 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 40974A76C99D02EDB4AE33B7BC43B1E4429C3746CCEDD2BAA7FFDC2F02F4F9A778B3BA0567EAE8 - -Count = 787 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 05056E1CCCD5B8E116154DD41834CA86B9FAA64D0EA73FB22516CFBD24C9308D1A4161994D6B8B - -Count = 788 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 216AED297F8EB030731AC7EEF3AF4245B58EB8F3793729C5D8FFD93D1317A8F0E379B4591A177C - -Count = 789 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = EA2EB6514225E107CBBDBEB9C18AF30A8BEC8DAAC73D3B32A37EA22C50BE11B49A626604C14464 - -Count = 790 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 29E880DAEAA07EF8893CAC648B5094FEDFE58CFB3AA7D0779E96987201A31B45C148CAE6BF09D6 - -Count = 791 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = F41088E8A014AEB8D5D64D7469C2FEBF859104321AC5431CFFB2A72FD65C63391573B409D1DF63 - -Count = 792 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 0668AC9999E590ADBD245FE6CBFF85CE11AB7A148EB006B759FEA17D6877B9AC6113630C987418 - -Count = 793 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = -CT = C000827D8D01B9B5CB952F7DC7B57B8182FA83A90D27B20C6E81CE63AAF16C1BB99DE1EC4944ABC6 - -Count = 794 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00 -CT = 0CA91C09E967E2BBA0ADE530602B05E88ACC43913B7C19E54BB93FB8A609C037C9A2B27679C16147 - -Count = 795 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001 -CT = A969B567D8890E29A74B7F26719303D2480269FC4EDC67C56BFCFC490D841975D91988D1FC91D442 - -Count = 796 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102 -CT = B6DFAB41870974CC35044253107AF44E6B9F6D03159FA3D1B71DDD6702C7E5A77075AD1663E4AD8E - -Count = 797 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203 -CT = C7F36BD6B93D58FA3EC0F813DC24F69B250996FE50929179D51D181236DE2AE6B1FCCB290E089FEE - -Count = 798 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001020304 -CT = ECE85A3C013F461931560D39EAB0A7E90F87EF4EE317FA92A54A372C95AF001F1108A4AF72D09D0A - -Count = 799 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405 -CT = B0F1708D4378E80E35A96D144C6FDDC849C3D0835FB349DEB70CAD18E11ABD770B56C83796706340 - -Count = 800 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203040506 -CT = 42D77D8C4611818BFA937AEB8F6CBE6E47A856849810D4CBD23AE820003CDC55B8AF5B8B3F58544D - -Count = 801 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001020304050607 -CT = 887D6CE43B5E0E82A9680DFDFCE69EE0248B085B27E7FA2ACC636F0B6119DC0D20E1AA85A53BA263 - -Count = 802 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708 -CT = 845216AA26F8BB4A891A66AD2F1B99113BA527F79BF46B2953BE0DB8D8C71FB987E37F0361BDFAE9 - -Count = 803 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203040506070809 -CT = 31057115C2F90BA169D2A4DDE2A857E4D94EE538159E886B117AC2C39DDD1BA637BB46078BC2BE54 - -Count = 804 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A -CT = 8BC592237EAA62FCB2DE12E813D88E685C8B8287F622DB18596C360524AD0E169EDE1FF79CD182B9 - -Count = 805 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B -CT = D24BE21ACA8351A249B3754E1150FEE6A2EEBCAD57D6AA1EAB294402BAF07466D32A411077F2ACB0 - -Count = 806 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C -CT = 6DDC1799B115C95F6D253FB5D311530C5B666F4C810F0E7FC2A42284BFC809EA54F9FF439E0B2045 - -Count = 807 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D -CT = 3625A6E8C166D102812703136F595969AE5406D034A532312E7F21EB18A1A63016012552EC6FFAC5 - -Count = 808 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E -CT = EC0AF560E68430C451AFE03E78162F737FD5F37F00309B7FB8FEF6C652940A90A8E6C12CA14047A1 - -Count = 809 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F -CT = 241B611643449CEDCABC0253D571A59BE92D678A8FCF31E4AC5464CF55C0A940D66CF20687699753 - -Count = 810 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = AE4E53BC1A28901D145237AE8AFCD15307EAFE52B66BA2FCAF8FAC873DA8472DA5A18A729FF2B3B4 - -Count = 811 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 926C98DC8106C4D6C383D777952E37D33E7F05D4DEBB8F48DA856F1ECE703B820F026B0FB84A0941 - -Count = 812 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = B9937D4AF0E88F8917E9F6AA9CF2D00F73A472C20FEAA29CB2497424C33A83F31844C6DD65E98A12 - -Count = 813 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 5961E61763DC4B55E9D04E3AB6625CC9DE674F1734F295ECCCF4B881A7F295201A85A3D79929E9B2 - -Count = 814 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = CE56FCE198EB2AF128BB01B57F3A22D8AACD993CEA4516F16B6E3F51BEA97919119A143F576F0B31 - -Count = 815 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 05A604FC68C16ECAEDC654BC0196CE65292CD43BEEA9B1E9BE9745924F6177A9D74EA6E19C2A1F6A - -Count = 816 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 6628258D3B248FCA51B301B3AAA2D75C35BE3089858CB1CDCA435A1ECBFD774B94F9FD53F9F28818 - -Count = 817 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 1F945CFE5099E97FE6961491A478DA682D5F96F538E7CF44CD08B7FB59F87DCCE3205A96C41CB364 - -Count = 818 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 08004F723EF18C9C782B583CA487365766B9729C48C91EDEC884A7821AD0ADBEDF5C3E8B5A566826 - -Count = 819 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 9C1211CDE325FF71286314242F5F6D16946F1669FBC142CEA0122AB9C7B9AE1102C5EAA9EC9DA33D - -Count = 820 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 77095DC22FD400471FFC7F3991036AE525F9A99F8E3ADB69D79EC1990E0AF56BFD23501D8BA1A832 - -Count = 821 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 4A98722B7CEA0BC6C86A17D7491EC2A38BC241E18F67C975D1F70AE58522950DF41E1B22F9FCEE23 - -Count = 822 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = EA2CF08FC028D934CAF48D973D6B6444D2F162CB14E5EC7BB4326213DE95EE2E8F13CCE3EC27C4BC - -Count = 823 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 032C015B0B314DFBD38A5455A7642E0D633554D3A29B0132F3E74C8FCA9454FA8608632FFFB9A37B - -Count = 824 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 8B8BF86B7481569287473A68FF15461D84B16F631AD5953B4317FF5DD27794C9087424BCA78F68F1 - -Count = 825 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 04FCBB9CC28981BC668125BFD22F8F54AE1911448C44FD40E3F596F087F7417F62040F20421C1763 - -Count = 826 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = -CT = C9170C2E811B227FCD6093B696772476529CF855C18066D9BF63A8580728075D65110E24685EE2EE0D - -Count = 827 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00 -CT = 1A6158B87336FF4646D44C8FCEC32A719E7343E14C4512D3204B71B3C7F0A47345E973F40A22C5045B - -Count = 828 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001 -CT = 95EFA1BB28CF6DBD16A39CB9A759882A6566C07BEAC190DDC59867FCA54331B38D877989C039B35102 - -Count = 829 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102 -CT = FD664F2BF2F326047E13083CC385FF001D67454320F4DE69B070CF341E4BA416132602C60EDB99CABA - -Count = 830 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203 -CT = 5F41C128A483AC43BF43F5E8745E781ED94010E1C8614E222C0B85A38F3DB4474A55BEE506C0D3AF14 - -Count = 831 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001020304 -CT = 853907274FB783663AB025E062AEF2403A13D6430F2A64A203B1FC453E239B9079178C4DAC0EDB424D - -Count = 832 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405 -CT = 3A321DF65897F34C699D3B4DF239FF44517D4DA03B0C27567D89758F992B031147CA6E79707ECEA704 - -Count = 833 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203040506 -CT = 413BD8B3E855CC5E039B352EEC28B4D49C7E1D272C78675BE7CB931FB475BCA67FAF1792C66A0EF147 - -Count = 834 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001020304050607 -CT = 3AED02B733B3F1AE8E1292BE87B7EE9A2F94D078463F5BF0E39ED90435F04B198388C0C3FE0D8F949C - -Count = 835 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708 -CT = 8FA954F8C28DFDD369D15E48B2ADB475A16BF4D268808CF74713D682440E822CC33D24188C9CBA663E - -Count = 836 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203040506070809 -CT = 738D3DABF87953534F89AA0232C3731DB5808A5855B0073E913EE5C385219C52F4F816C2B504AD3C14 - -Count = 837 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A -CT = 6E2DADFF6322E89DC12003F6D4DB8BD2A641B6F5FBAB545DDC64C93A66B60F911803F1697061F65AEB - -Count = 838 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B -CT = C6505EDE6EDD40F7F7B44579F59102A3EF96341EF64148CFD344B06EAD996906858E48D36580B58BB6 - -Count = 839 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C -CT = A57085ADD164FAC2D7F5CCBEDCAFEB19A1B64227A6EF0BBBF197D71D1A919F27390C796A15B658AF94 - -Count = 840 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D -CT = 1355A5DC8DBCE7741582B7AD08CB84C9390527781863DEE2F6AAB6A74489FEB2E8A45E4A1C9DBC3AE7 - -Count = 841 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E -CT = FC0150146EBB88814ECA874CA64F6C97692226C337FF5BA8271AFBD7FA3DC075D99E7945E69F5899E7 - -Count = 842 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F -CT = F62FF55B93241141AF10B2EE32E56544B31B3D47937817D6EBDD20E8898F6F4EAE2E8E5F9D055F5151 - -Count = 843 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E12FAA314954AE0FCFEAC615CD836F5845885C6AE3EA874BAB53DDC81BD8CDE368283EA17AA8AF3673 - -Count = 844 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = CF04AB29FB84BD52C4CEFDDBD5EA3D13946C552CF99E4EA28C452E858904D74712859D748D1E632724 - -Count = 845 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 6F1D7E2A516F10A88AF3119CAFD876A118ACB3ECB15FBC13CE9D077D91FF0BED6751D3BC795BC49C15 - -Count = 846 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 334D531BFF5182B6F333DE077566D8D9D3632ABCC350A78EB6787540BC1DB21FB941290B769537A2BF - -Count = 847 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 153D88758D542B5C2611F882AA6E5ACBCE7FD31ACA3BF964A853F7E52E03367C9F6FD7C73F50B9B24C - -Count = 848 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 079C2F46C630E65A21F442EC8E6F839B98C334BE3AECB266272503B163B8256BA06DD33B8C12BDC03F - -Count = 849 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 8C9B88D0ED43D65EE82415738B81EAA5D0322191380EBBE80F303F520B1BBA3C8F4C5FAAF073ED4962 - -Count = 850 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 5C3738344DB426A22B22D7AF3A265276FEC4AEE8359D3BAB3E9E03F400A19594A3BBA661FA796925E2 - -Count = 851 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 37F373E3A77A0900F8F3C8AD27FF24812F4759F6ED2F54B12B26C2C8D989846BEBFCD63D7528525ACC - -Count = 852 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 02966CDC3666415CEB1F74683DA6A957F113B710BD281F6D962CDBF2EF661A4C4329527E534F58F243 - -Count = 853 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = A90B952DB395DE1901B3854BFF722127722A116F7C1F3D5CAA60CBD4524BD7743A2E8D4F375C4C7BC7 - -Count = 854 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 8144BAA7CBB58B7CBA55EA5C1CD273FE72472C5D9521F2E512BA92CD4C4C0124411BC90C1E883D1F68 - -Count = 855 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 1BFD03AD6763BBA807B3C16E0566F9D465B3764639ADAA17FD47C0870570E093B759EF0C233AE033B2 - -Count = 856 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 20BCEA542DFB8899A3EE1EFCA08A1E7A978DF163B0619630ACD82A60C8386AC6F30895E5A9D3189358 - -Count = 857 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = FE75FCA4BE34EE220177EF51603647CACEDAD888396527B5B9D70C11DE33C9DDD33653A358C2E7AF3F - -Count = 858 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 5B158DE40EF52648B3FEB44F73291DFFF5F3E3DB5FF224183ABA576846F08086F6052704CE39358565 - -Count = 859 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = -CT = 419A816D395121A9482755987BFBAB9E275F17126AF4651C8835116F660AAA0012B605C91BFBE1F4D5D7 - -Count = 860 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00 -CT = 20F5472F60355295AA31EE25CB256B2EAD273E91A55BA3FFE96F578FA1528132BA0A738043A701C31487 - -Count = 861 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001 -CT = 1730702CD7218BD416D1ADE3F44924B06849659611DA6866B88CABBD2ADB366021BBF7271E2858446D3C - -Count = 862 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102 -CT = 9AA77143D9E7F100470CBCA1743D65238665760683BC82CEC1DB2A2BCD9D579BF8F9A5099114C32FD4E9 - -Count = 863 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203 -CT = 58F90AD5D9A0905E362A89384071D5ABA81E0660575E419DEE23364A7662D7EF4FED8E1854A33BAC68E3 - -Count = 864 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001020304 -CT = 67F2D0A4B463C49AFC3D044D6AD18262E43F2EFA279886122731A7ACD6E579332544AA0585C1B2036CF0 - -Count = 865 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405 -CT = 9F4D35491C5D59552BB65F58022A759CA6BE2F89CEE2B4ECFDAC53E0F3ABD9A9AE54F726BF3B93501B18 - -Count = 866 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203040506 -CT = 215F6F14CFCBEDC210BA79AA04C040294F66603BC57AC12196261056DFBD318DBDCDC6227962D6050E0A - -Count = 867 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001020304050607 -CT = ED920833489FF813FE43D786D8FEDC286540F61BD05A840813B1977C6D2FB3CD2927A0F19B635D8E550B - -Count = 868 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708 -CT = 2953F41BB669963509A5A179DB2F8ECFF157D2EFA71E4AC7F14CF7723DC2C9196C9C4ADC7FAF71A7C466 - -Count = 869 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203040506070809 -CT = 40C7D68B830F80FEAFBE426680402C84E5E6032F7D850B4D0A4C85C7D512AAE61467632E95FB2510E2E3 - -Count = 870 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A -CT = B9D5E2C01D9373287530B262BE1929857BF0B3FD0C70EF20391D4620FF7159635C5D8E5DBBA4019462AF - -Count = 871 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B -CT = 80773800F9D9FD812B90B29A952F923B371ACF311E2A6256263E953CC612E4C337C06961F447666E3C76 - -Count = 872 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C -CT = 4B545651763C2125F6D70A82EC1F1B8CEC40B4774610A27AEF21FA64653B05DDA347DCD9175E70EC774B - -Count = 873 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D -CT = 9A46E7D0ED9467E13609C9DC6B57FD2C073105ADF9E013C4FA9979FC3DB6BF954E66F09BE83E6DD7E483 - -Count = 874 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E -CT = DC0A3D64F0101A354C5E09B9E88FD869FA04B419288D8E0B8952770BD132C8D1761AC6DF757FAF205DF6 - -Count = 875 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F -CT = 7E07DC89779C365A87B73A3A32E4D6AA0885524CC23B8266DDE48A31C1806EF9320090FBBF4AEC257D49 - -Count = 876 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = D89692073EC99EE6BAB2E4E5953C8AAEBB02DB0EBDF0048835013AD3781A7A3B00781574E48845F40372 - -Count = 877 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 4ACB2196062983C474184A500F221525EDE764F35E725CD2DCBB6DBA2781CA23A3A939F141A890B830E7 - -Count = 878 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 7608B3540DEE7EEB0D07E68ACCDD5BF8D94C6BD4C4141C049F6C576C6B9AF6BD3E22711C37E8D45C51C9 - -Count = 879 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = CC3FA47F7667B09C40AA0D1C168D3C180A3ADB9A9BEE3A00620563BB63E299AB4D32F47EA65C61662397 - -Count = 880 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 48198078D1A4C96CC87732659FA12795EB1369680567C74661C23B4B5512B28597FF427E7BC412BAEFF0 - -Count = 881 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = F421DF62F8B729EDCA7D3FCFEF7EBD6218160CB08AA5455ECD410C117FCD6AADE20A98B99B33F3BD1606 - -Count = 882 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 817DEA984D5DEEC575D5C34111734D1FDDC531465E82F487ED0D44A09A9797E7F186368340DAB30EF216 - -Count = 883 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 54B488DEA696AB95944D1CA6CBB493B09DFFC77591FD4F76A2E3984CA8D4BE63CBD101D5C98545621E47 - -Count = 884 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 61F38F2EA0D5B188F007FCCCCC5A0BE47A6BD38498A08EAB42F4383E333B4BE111CC7F973C7E81CD8EE5 - -Count = 885 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = FD20037A1BDBCE3B5CA3F19D081D8F53727D31F0EFD156AB2D7CC92803A6E8BF6E6E0DC365CF88BC614A - -Count = 886 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 6B233034B356D13D4AA190D349FE71C7BAC975B870BA5C2307E8654E8B61EF2143E88D4CC0395FC90E0D - -Count = 887 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 36E4E1C14D057C36DFF3AEC43A0038087E9B5B6CB7A90876D0622EFF442AB536E7DCC841E9A31BC43D29 - -Count = 888 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 8FF0C9F01EB2474B92C6D9C080595CB38BC2B796E767C6BB5C7CB40FBAE44303C26DEFBD605EB8D4B56E - -Count = 889 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = B9F40B184D6A9F8F687777AE14EA0653F7DFCF479564A20EE7B6C52B2C9293A3AAFA84C0C114284764D9 - -Count = 890 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 4D0D8A0675DA4E6C2945AD2D5A3A60DCB2C46EC5BB08DA1EDC210968F2950F317E490A34FDD5FF5C1C86 - -Count = 891 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 51B00DE55EF93FA3D636E19DBCEC81D9D79EFDB37FA99CE6ED2CC88BA65068DB6A0C25409B2838ACD6BC - -Count = 892 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = -CT = F2E21C8F7FCA30DFC73A8EF3089568A405C1CD2D1E0659ABD5DF5F28228E4F12631D50C429A62A5A186103 - -Count = 893 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00 -CT = D193DB059A883B840F0C10D24286BED3CC3AE43D456DA94F85C5C40BB93882CADE3F83B31D1D6312280DE6 - -Count = 894 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001 -CT = 0600545F11F2A96019159E3F37F262ACAD959E97BEFE57C3945AE38A4A5CEC4EF82A45ED9CBFB4FD46DADC - -Count = 895 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102 -CT = 71D12E18CACF651E3EEB3553222E36E8944F8F6F55F7915C3C2CAB5C1BEC6A99AC5AFE32768AEEC74CE9BA - -Count = 896 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203 -CT = 723D5B69C542D808EEABEB34771977AB9E07CBDEBC367E2076248BD0D8B0340C1CE3F2876512D510692ACF - -Count = 897 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001020304 -CT = 2F42B21BD65E18A7B67EDF2DEEDFFF9F153C8D9CDF785243DBF4046067E0BD3C98B6A220BBFF8BF11750A0 - -Count = 898 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405 -CT = 4D2B120D2CF0C9CCAB90A0A8380F66E2D5103AAB66CA02C03B6EC1B47A3C28ED2B1A2932DC22D742F3CC0B - -Count = 899 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203040506 -CT = D9CD13E58093FB45EA1C0B1B3ECBDF631E06B543718E9EF70E9D528FBFB610F31B3CE48D1C124AD597BC59 - -Count = 900 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001020304050607 -CT = FD642CBE3CD82141394C87D6874729E9AFE5AF623206F738E045D41523698469150FF6ED595EF3CD0D5338 - -Count = 901 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708 -CT = C617BCC3DE1FA3524B9019FFFE05CD9C4B243830B2231E2B01330FF152FB37C002B85CDCCC2BB707778E68 - -Count = 902 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203040506070809 -CT = A76A99F5C213B1FB4B02B6FFA408A47F2CA840C95B9D37DC04686B11085808BA64AD2CEF2893E8E784C520 - -Count = 903 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A -CT = C7C892C0ED0CFE339F40A67330899D19EE5CDDC4562A251040B3C79F855FA7916794B89E9C052A8EF0A491 - -Count = 904 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B -CT = 0E49FDFDFDBF3C9A39960B13E0AD74BCC08B68B13B3B34B106CEE7913CE9D586E9677632DB387EDE306F09 - -Count = 905 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C -CT = DB9F186CC4FA64549078A7348460807E751122F19F643F86DE2ABF03F6CB35157AD3FD856F52F30B308D3B - -Count = 906 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D -CT = 47B1AB9D977E7F389C73166A2FEBD053CA96FDC7ABA12E0612B84E2E3500BD766D9D4E7424CE85D0E51634 - -Count = 907 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E -CT = 101074C03F9CB3B42C8DD7F572A49A093B1E2A5C017993A3F726B60D936B538D253CE84A8D29E1E85B40EB - -Count = 908 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F -CT = 155C7AD1876C3DA5678132730422E48C3B73942F1051F782DB84B5F1C70DE1122D4E1BBB4CB227EEFA6955 - -Count = 909 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 6C3B27FEC386CF119988F2D17F4AC4CFF73AEADA18F5E4CAB4BCAE79DD67F473A2A7643A608BD45364456F - -Count = 910 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = CE3CE9F1F1C09ED6319E557ADD4BB0E505FFC4F21862FC983CF4FB76B7651280C712C08514CFDD39381674 - -Count = 911 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F815F8CABF46B20027886E5E1D843C63CB59D575EB4A70A581C855CA76C9FA2064A7EFD7D26C0C64B03165 - -Count = 912 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 969DD4AB3363AD45593CDB09F5E897064CA8E694D4333689684013112139B6EFCC419F5B2695EC173F2AC4 - -Count = 913 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 5642072157E26636092F8B30CFD109ACF18A1E8167DFB0DA5EC26E63B089CBF3F07E07C3EC7A51C142D2F3 - -Count = 914 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 0F15F6DA00C966B57FC572EB42DA8181852307D89EB3CDCF975C9362F1BE79B2900167471849078111DEE4 - -Count = 915 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 9F90061E714F9FC973166EFD46025C8321DD06EDDBA649C9F2059789A189C07E32B77D1EA23E89C1A63214 - -Count = 916 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = CE886499D31DC40CFF0E9797AB3F894FD0DB32F7A3EB049BA9519514FEB2DB3FB3D6CF7993F3AE42170A20 - -Count = 917 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = FC183C633855953E29AC3BF745A1BDB55015522A86DC0AE734B6BB620A044C33EC922976346D94D37ED9FC - -Count = 918 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 01F1F4D719B18B3A40C930D4B613BD6BC2F950FEA9962200CA3EF73CBE0003E46411437C063DE31B13FEDD - -Count = 919 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = F7D4BA9A3B57DA489E154D97405861F10F8CF4B00F6C477487E1B318F2E111D176A323C760122B17D40E8A - -Count = 920 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = EE36D428BAD6E3901FFC7E4120D767C160E638A1A2590EA336164648112BAA0CEBEB655285A46DD96E99A7 - -Count = 921 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = CF96D84E70A1C5ECF18D96397216B6612F7E12EF26F7DE79E538D4043370C37A99A33FE952261B242FFF2D - -Count = 922 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E1707B9CEB74857EC13A0EB3190C05C90F6D797673D4818B009FE8F1FEDD3F7B1C6B18E0AE0E22AF386F5F - -Count = 923 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = BF5AECC86F81A7B24B3856B335E4107E86D99F2BE4C3B56352D82953EB5F9F25A473B02935597F46A7B93F - -Count = 924 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 4581AB92CDFD5A97745915AF2D8C604599B836C7265B534C294D315FF9A4F27219103F5E189F7BEFDFC3E0 - -Count = 925 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = -CT = 89DCD6C69995B8269D08E4A958B0DF061001B88CA48DA3C7212D6D0A8C24111BF44D9BE6279708C990F8D5FB - -Count = 926 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00 -CT = AE5F84185561E0DB43EB3FE10E2FB008148D2D99DCABC1FA80F424B13E8838804D9AF5A0CCBDF561D704B0B8 - -Count = 927 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001 -CT = 58CA96439F3DB11518C22EE7A0F541E77E762B6A2C73559A76771FB1D7BA18225AC37DD0CD53EBB6120C596E - -Count = 928 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102 -CT = 665703649040E56059B60368BDFA0CB2DF652790A0149994885035F12827ED1EEB4CC502C6CE94A287FFCD7C - -Count = 929 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203 -CT = D2A088F6A0D0D6A6AB4F31915A123CEE93AE8CC0DFE7094BF51D62F45B5E3522B8BF4704B8B60915DBF11BA3 - -Count = 930 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001020304 -CT = A4433A764D6BE41F1968EF46B98AC675669B2E983A3B48B44CF578C5BFCE510C16FB3193ED3629AB246C2C88 - -Count = 931 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405 -CT = E5C649AB224A7BBF5E18265E312ACA291992BCA73D95E3C4AD11C3B817455112FE02107028E31CEDAB0FE1D0 - -Count = 932 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203040506 -CT = 7EE2B53675EE57515C36DB3A6CCD567BD3ED5687BB0457EF4AF23865BE7154803969E39EFA08400B5C7D77D2 - -Count = 933 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001020304050607 -CT = B59BE789C1E2EC4A535D4C5123F353C79E5B927488622AA07D0F0D8C49E54B90DD6FAE2744B587C5ABBE9853 - -Count = 934 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708 -CT = C3DD58FF0913A7395A6D43AA254C8DD93A3E9407D803FDFA0F412FF12E9F9461E1C9A7CB0ABA7ABC804EAC3F - -Count = 935 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203040506070809 -CT = 5212A4C796E6E3CD2A71798D82FE62CE5D098391DC5D69B136648B1FC0E9438BF085BF8015ED3679E32C69EB - -Count = 936 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A -CT = FD2FF2C2EC29F1DE683D31EF7FA5813A156FF3748C6EC86CD1AAB941F576F2274B5CB53B9DF592CC306C5DA6 - -Count = 937 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B -CT = 6271A11D4624EECD2CE39AE1243F03B004E81AD809200A09196B907FFD785AA89D21B16574329AAC91C3C1EF - -Count = 938 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C -CT = B361733657C17FACC8BC674E2145063F181FC0A272CDA24B689E69921D88D6083F355DB8FE6CD069B7168302 - -Count = 939 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D -CT = 1D544D1067B9E42FB6317B9DA8DD7C9891F531144D459B85DE83BA941A9D20B2F8F4B76BBD7C6831A60F69F9 - -Count = 940 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E -CT = AEEA0F96149FB2368333A831164FDD91AE90C54F29D7B0140816A0C6F8AE944FBC6E5BC9790A0B3B452739F2 - -Count = 941 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F -CT = 36F11412AA07FE0BD0FE930CCEF1EF4CB7DE5F168274D4C60B48496D663636ADC3A7A885194084E209820649 - -Count = 942 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10 -CT = CE5EEA17D07A107634C7AEB06969FBDE926A58314B9089F323692D985613172B4B76C3214D8128ADCB15F2F1 - -Count = 943 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E16D0167C21A223FDCBFBCCE44624708F80EA4DEBA18217AAC790EBEC5A27C493DF18CF11542B8AB18FD5CE2 - -Count = 944 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = CCC7E5B42427A0B697E4FAD60619A6DF95DB0695EE456A1995CDF56E9394330E02F48E6815B7DCB7EAEF3990 - -Count = 945 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = D9448B255E8A84EA4DB91A1BCFB0FB306585F6A392B50FA42EA53BC56649EB93C80CC6C5EE658D01977B5234 - -Count = 946 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 597E8BDFEB15536D7C79F9ECD0311724B10439BA94823E709871F206BBE449D7E9A5C032A06422C101C88188 - -Count = 947 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = F96ABD9CC3AA699D8E5EF1BCE6EF9589D9C1B158343F540C97162C645432D8F89BAE08A94EAADFA41135ACBE - -Count = 948 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 95DEB425618EE095DA36DBC4ABF304DDDB2897B4766C5725AD6FB6C544EAD4C84590023F3DBA0BAD95359848 - -Count = 949 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 7E884D82165A741294B49CB7805CA7333E28DFCAF36F897D91D1D278710D77A472C637CD2B78FF4506A70493 - -Count = 950 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = A268197F83A85A3A5969C724A1FD154A143EB3E56B81EB4BB0FEE9B3CE01369976EB98A9D732D164CD09386B - -Count = 951 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = A3CBC69F29FCE5E2FF1F289C446D041CABFB7D290AB6BA39F6E04935E36537B22E241D620A62799125001B62 - -Count = 952 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = B555961F952D7F2606C1D4358B6E287A7D3EB016DC0607EE06D4674F2E3BA0C2F454A2C48A8474CFE54D125B - -Count = 953 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 5DC536822D8B2B935CB56E2A2BBC088312E65186ECB8ABC1750EDF6B9BDD48C9823B4AD42BA44E292BA078B7 - -Count = 954 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = F70B5102CB608E74DF3B04E2069D17D4E2EE9DBA1C46C95CBA703DBE53FD2B222871432DD9E4066875811040 - -Count = 955 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = BDBF2A734F116257CA6779060F59A1013733C9328E7D83D732ABD902399023F4768947472BCE6D35F75B5B9E - -Count = 956 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 0ED340023E426B2DA909C5FDD6FC0D28387D495B1B59B441D67078375F9446A539FF8F0EBB8A05F3E5CEA70B - -Count = 957 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 4FC88AC68DC354CC75BC980927EAC6BC6845B73040E46036D0C911CAC2B1230B3AF6EC03103047F45F5211FC - -Count = 958 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = -CT = 5BECB8F1C73A85B3B3F4E27BBA3267E73C49507B96AB415FF03CE369FB19AC5EF9178D34B69875A8E64AABA695 - -Count = 959 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00 -CT = DC20D4969955BFDF400A3E3C65D53F17126786ABDD42621D43193D2A952E4CDE49728903D1FE7FD259722C3C6D - -Count = 960 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001 -CT = 89801DF7D0C8511EA4D33FCC9F41D352335240EE9E7344D23992BEA729316492011BAB6F1A584BA8E5B23EE24B - -Count = 961 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102 -CT = A535779595181AA7D271DB96EC0167976DFDC783EFBF3E6197E7A219E80007A1D6D6777C91FF991810C9FE83C5 - -Count = 962 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203 -CT = 34416EE41ECC9D585BF0BF0131357FAAE399AED0C6AA6B744D68F5694C0209E9EB74971723AE554C1A9A114EAB - -Count = 963 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001020304 -CT = AC205AFF748D9EDEDF908044A496B2CEBCA4C0EC032ED9151250B7A6E989FB4B13249B3A0BBC47618DFD8875F7 - -Count = 964 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405 -CT = A11D3F46C0C00DA1B1B39178D7170E48FD5398F4F50C59A87209B3A783E849A14FF242AC024290B6C68B8C9B33 - -Count = 965 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203040506 -CT = 933449C60326706449F9DDBA5ECF3B97BFD3D41F9A7F08B1ADB96FE34265583D8C7A3027163705218251D989FF - -Count = 966 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001020304050607 -CT = 8F0C040AF77EC955C8D386607895FD548F1D5FF6C8F2F50101BCBEAB4FCFF4A7345A43E5AA3415B250808475D4 - -Count = 967 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708 -CT = 8F63EE79DAC276FA245B11BDCF103DCE431AD99893218DF023F38367335D3B9F60678888053A028A385021553A - -Count = 968 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203040506070809 -CT = AB608713FBE23EFB7D8B5D0FCD7F93F4286344340FF51B245FA06B44193C28548491C6FA4FD1B48D883EFE19C7 - -Count = 969 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A -CT = EB8E6075CFD228B29B8B0EBCD0670FA17D971D8B29CBCC9CA4A923654E56EFC0D389EC5B5D4CBD89A757B83A8A - -Count = 970 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B -CT = C7C5974345FFC8158E7A86390E7ADA67E32EA8DBFF7FCCD04DDAC2D5D7C762CF4C8C43DCD4E047C2E382EC6EEC - -Count = 971 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C -CT = A67916E06996BE652ABB9D463CD406E149E166FDD5930A8C8463FE87B527CDD97689DF6C5A0D74374B64EBED19 - -Count = 972 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D -CT = D02719BDE52A6E0BE03AEEB020C5E94AFB5BC175CC5D8A90D16397BBA1DDF8290331344037C503A5D754F8B263 - -Count = 973 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E -CT = 04E4DB7FB0CD5E82DC510EA1C018D807FFF7A5E05B47CDF1B9BCAA54AB7DD6B24DA74BA5A4ED41D57665C1C0D1 - -Count = 974 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F -CT = 4E54BA0EC07B188A1510BA1FB47D58B05A2A28746EDD40F141C65C53646D77CA15662EA0B47045A06DA6B439B0 - -Count = 975 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10 -CT = C2D9703A91A09CBDF03FA8D5E1D3491D12EFEFB78952B8F99BD13E0CEFC7A2381A79ED49951A1BF02772221785 - -Count = 976 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = D583D8F6B7283BE885DA6AA7FD035AE3F4DCF9F77935B1D17DE8D5C7C3D1EAF729BE90D2E1713319375A6D75D8 - -Count = 977 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 61FDAA3BFB1F53A142ABF43A0AD887F41D62B8DBACE075BCE17C92DAF7F7AB22AA58D2A32F154B14BA0CAD97A3 - -Count = 978 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 13614E426D15B41022825840BD6293F6D1C53786EDEB307B93A24A6BFF92465895CF60A51B3848531E455A5ED7 - -Count = 979 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 35E62D092ABF45438909C842BEC93E0C5A7477EFCDA8CEAA007A0B2839F81DAFD0E58F74DF305FC4433238853D - -Count = 980 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 1F5433AE3413FF0AFB39CBC3530F4C7A9206EB40506F4D2A1A0074FF31530A01A7CF8B89851E29A9FDC02E3076 - -Count = 981 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E330230E92AD51FBC4BC065A51F972E83E6C21952F243C5042B9D72D89E3DE4729A8EBFE846BCA81EC7F36A0A9 - -Count = 982 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E053C3CCD93606672243446746B136CB1EA9D727E34A85D1311C1F300BCF1D3FBF5717DC284595171A18851361 - -Count = 983 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 7614FFF72AFF37A06AAD7614A9C86557A2C06E15FAF8B1FBAA13D735B981A0F61C56A04B5C7727B6DC6E2BF521 - -Count = 984 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = A9A35CC93AA2EA16BE0B4764B2778BDF5486A480F54B3D7DCD22C26A14EE4892384F8E6BE7727F7061FDA779A0 - -Count = 985 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 070E4AE6E7A50C554F4EB193A8CF343D8996679E79E594F305D4C968CB83D433978A047F4B407F004C74C249C7 - -Count = 986 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = D91335D6B8C0FC089A0ACC1F6C3B826BABB4B0F52037A482B13D8D315C009D40832A7111C834D0B5ED00453F73 - -Count = 987 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 16072473B039F9D516B857F7435B6D0DC286862BA7D929285C9D4084B7E1CC1B0DF879B7C05A63385C59B75D79 - -Count = 988 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = A5F8D9E8F762AA0E90750C6CA7183E669AB7046E27DA7033B2A2A2511A702FD8462DF15199E26D81D3BB8E6EC7 - -Count = 989 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = D3AEA0D48F11EC1DFDFAD2D4E93B2D7406B788B5B8211B454D007A8E142E65A03C043A1AC914A596FA5EF61EFF - -Count = 990 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 8FB96D82A57BD284F00D36BD47F0A1B17AC10ABA8FFE2A5BBA8861A67AB10414DF9DF848658C9911CD4F8179BA - -Count = 991 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = -CT = 2370658D0C95EB0D1A5D8775900A8BDDF0062505CE2E63BBE9B89423492DF8EB52410E29EF641F126D67691E05FC - -Count = 992 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00 -CT = 8206456FBEA6CFF4A9C31B9452CDCBE46347C09DB83D461C26CEB16733AC613D31F4591997BA5B514EE24A4F9845 - -Count = 993 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001 -CT = 433BAF8509EA4E4F24E310C97872E8452CE6E3F6799FB7E0F332E84954558088DF04946DF6521584AE4AB7512D94 - -Count = 994 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102 -CT = A25E179FE7702845DACADA152BC52699FAE1C592AEAD30C2E5598D036DD2954AB6EDE22D32A8B48E9BBF6876E586 - -Count = 995 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203 -CT = 435C9C3A51A23A7B74108A1D0151A40C6F6553FD05BB171BC284D8B53D524612CAB0B5A642236218FA04E5746120 - -Count = 996 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001020304 -CT = 986E25CC3D38DFF8F672AD26E1B8ECE6F291755C654DAA3B4082E38FE459523E374E95E54346B739C52D927D178A - -Count = 997 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405 -CT = F21161DD1E41023A2D2B9DA4F81F1574EFAE2F620828DF02B0AAB78633B41EAA496FA9B277295FE038C94197E172 - -Count = 998 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203040506 -CT = CF63CA01DA92C8FD16B684ADEC2926FC60115924DF04A8BBFA5D249A709271630627676175C4FF3C1EAB933DDFDD - -Count = 999 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001020304050607 -CT = 5A4038541B99E0A2E2E0018146FCE081B087F60CC9C7FEB87A372A3B71F43BF0CEDFA4FFE13CC2D4E1B74BDBFDBC - -Count = 1000 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708 -CT = 87A910C11201684B6CD7EE14AE85DDFFDD1E58185D8F0FA5853DCAA6E742F91D88104F0115792871626D0ADBD851 - -Count = 1001 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203040506070809 -CT = 53EF5B5F921D084AF23873F0D03F1220700E5E73A7289D86392E030279C4625718F3A9FC2929204F4804AA4B988A - -Count = 1002 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A -CT = 32B1289769BEB0756CE996B2E9E637B10E5B97DBD080B5B21B3DF1E998D6A2A5C153FA01B5CA5B3798DDBC892BF4 - -Count = 1003 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B -CT = 333E89843F69B1188CAF741DD08B3BD452194D4625C8099696DF87502F3512C771E0A9884914869A0C4B39FB70E5 - -Count = 1004 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C -CT = FB179E5964ABBFF3D671AF5008F2148891ABF5BB5CD83B1889C2E144FA525972EB6AB9BBE948B06A726B11D50BD7 - -Count = 1005 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D -CT = CFC7D53931CB0F11E79C5ECA4BD13F50ACB7099B260F22AC7E6D28D27B05EB376246388A169B36CDDE369C0106C2 - -Count = 1006 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E -CT = 247855303B112571885102345CC45E3C2D227D6C5B12100A9930775FCEDAAEA1A300FE98FCEAE7803186206D69FA - -Count = 1007 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F -CT = 65E31C7A893BF7D505FFE1F61BAD96B7C0376466B6DEE44D8744FD7C53E77352A335EA70E499AECA0853C734BC8F - -Count = 1008 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10 -CT = CBB31E9C67A9E2550CA3460425446C3B26A735CFA25B7FD2EB641527E6343CC8D67326C2FE98BA106B819988F14D - -Count = 1009 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 69D2BC1C40E9BA13A05A95972E152FFDAF9D660F99D0B57ACC2649C5A6E3AA570B4DA9E0C531D9E3ED01F4B299A0 - -Count = 1010 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 3F23E6A2757545AE2558B2F6776420B489E1AEFBB65AD9B872F7ED5E96740E8363AE01C173FB45A5450BD0A09121 - -Count = 1011 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4E0A6E3AEB356944E94DCF0ED42CAB56FC284C6B69E1E15173839FEA52C5D665BA1E90725712BF011FCD11B936BF - -Count = 1012 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = AFA973D22E7D7EF3C717F33C941DAD4ABF01899A522027BCC3E18D990FB4D2E2B556ABCD0A732A9F45B35917185F - -Count = 1013 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = DEF758DC420B46CB389B56F69E0A9BEE0245C19A632355F90DFE7140C8495E9CCC30269305700CE2EC9F5133E111 - -Count = 1014 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 466C7C9D09CB300C6F24B1AF814A0B6A96EBDAB8A4D8C882C47DDCD29A0EE6DFA381EF52CC5B338DE5AE4222FA2F - -Count = 1015 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 847CDC8CDAC1624BD209CC99FE3A3D378B0082F3EDAA018D39658B29E705F31EC86FCA03BE0D6378A56B1CDF7078 - -Count = 1016 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 452A05DDFA0239DC6850C38DFB3BFB60044C96EBC45716257053B7740489EE673B42F55053122371B9071F3D88B4 - -Count = 1017 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = FE638EFF673E9B19424507DEE2B95966F499CA2472E9E60D45B5F28475681F119ABE44B3F4B0444C653EB3C77DB5 - -Count = 1018 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 3034696BEC1DCFBD83F7E431EB999CBCC615FA4F214C455E400013165056384018D6EF6A49909323FADB1E1E878D - -Count = 1019 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 00A1F250619ECE02A1588F7B9F545E9CFA53CE90B3833ED85B0942D4D314948706B4E2F42188E54323E96D193528 - -Count = 1020 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 725224341C6E30657A7CA51FBF9A63FA85667FB64FD80056F68AEB101B4F74D9507A0D908700D5728AFDDA90B275 - -Count = 1021 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 7FE5D3AFD2D314A2CC1B6F8FB39752EAB85B924FA66010E3CB3A01AC3B403DC0E547B7B9E5B4507D36EB5E97E8AE - -Count = 1022 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 302239E8F9AE8FF616F6E914EAE077D841E7FDC8A9D536295655E8C89A227924AA17B06E786175C2E5AE63A1E272 - -Count = 1023 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1CA222752CB92A1BE8AD1D25751E884B2C39B8B8E37E0E9AEB8AB79113EB3994FF9EA22FFEE053E1101EBE48F34C - -Count = 1024 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = -CT = 1939803835F71AF5F76A26ABFE5B4ED950AF5FF5CC06BF3D68992C1AA14C0BC0DD187C2EED9B7AAD51F7E139122303 - -Count = 1025 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00 -CT = 53EFA83F4F1E582CD951D13AE7CF8DAD819AA7F99C49EF6C08EC01D305A03EDBE927E92DFD222D545C6D35C0E79ECC - -Count = 1026 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001 -CT = 7F0A097597C2A620A4F374EE495F3376158883C881C80961DCF04610B5B415AAEC63AA53E6ABFEFD1447A42D15CF14 - -Count = 1027 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102 -CT = BE2F0EB9EEAF732D5BEE9174063A3944DF2626E667028DA2ABD1E17D22BEC836BCBD1017BC7859F4689435A86FE4FC - -Count = 1028 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203 -CT = DC8EA97E2D99363B8413BBC26558570AC3BC01075C7ACA010E734CD22250157AC2CC0BDFD1DEF951B5B8412316FCD6 - -Count = 1029 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001020304 -CT = E8022E170269D19802C006700AB6F51AA6ADB76C0D0C7101F4CC228FE7A8E557FF167F5C4E69A80A419EE91BC346B3 - -Count = 1030 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405 -CT = 612194DDBBC85EA3115F1D2026CF3CFB98B1517EA6AE59202D2BAF55320B9C978D795D50D4474A97D19E925C6BAA86 - -Count = 1031 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203040506 -CT = 65157E2B120EC6FE8A8A61BE932AB88104DBABDFD1F9A134A130A713D8D93EEDE6997A5505C63730B0AEB75DEB7DAC - -Count = 1032 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001020304050607 -CT = 32E15DA07CE98F7F8A3B99A015B55F614A6D99F5F267611E2C14E2A5FB4403F771F42C822A939A4CB264AE484799DC - -Count = 1033 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708 -CT = 2E5371FEED954F526DB7CE729C6FF44C5652B03B5E696B05C2E141C6448955520FD957D7BE5F19860C10301C568DE0 - -Count = 1034 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203040506070809 -CT = DBAD2359B40ABFF16F1DB33B29B2106055E4ED013365F96693676D5A2C07DB7B1E853D8083C2CDBF340D037A9CF347 - -Count = 1035 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A -CT = E02C8A1DF26EC5687CA56974909CD997AF0D5C44606C9DBD513C84A250CA58C247AB50F877AB93358869BA79D316A3 - -Count = 1036 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B -CT = E36E4A8FA2305C1B2FD7FE363E09E57A1CECDB389BACD8C8E119C89048E6D6B6BFD21113F5D8A1C22AC0DD43CDCDFD - -Count = 1037 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C -CT = FC506BB221FA62F90A27A33FD4E654DAFFAD145A002B9DCE1C1A8D815007E2975324F3AC1845D80AE137334DF123CC - -Count = 1038 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D -CT = E772C5DCBF8291B194F236E866BC643DB0E13D981EBEFAC29055B932BBD095A4A0A2D424228FBFE1BED08AD6E6F85F - -Count = 1039 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E -CT = B4A919DC5F838BDA077D4DB5776BCD952C795ED4BD3604F8598F4571EDBAD6C3CC9B6F3E3C55456D9DD5C894B356A1 - -Count = 1040 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F -CT = 70B2A8ED2593B3B6315A15914E148BAAE58B6303341F0BA95CC5A16E9C5DAA4BD0CFE41C196B57994D816629894FA2 - -Count = 1041 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10 -CT = D122CEFD796992D02A737272AA00E9E3B778E3F151F1E651A010E047325AC37A1CD7E41DA1017763CC6213BA1081BC - -Count = 1042 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 8C0A25D9B41AAEA7F27EB1B16F48AF7AD8E8A17AB7578325596D6E733EECFB4E37296832A1E019DF399921BC54A600 - -Count = 1043 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 2B1EFAE9C6165951C0EA91ADB4F7268ECD612BC84E375C40D396679AC27BF630C090E1BD0DAE062EA9BA59FF279AD3 - -Count = 1044 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 5ED6DF1B25E5820A8432DCF91EFBF4570BC6EF5E2404F9C0E228BD497CBB71F6F8FE3CB5688CEE5F4FCAE8BCBFC128 - -Count = 1045 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = A879D7A0A1C97A5E6BD5578D96B1ACA0A2A0C7F64D9CAF2F721D30C4CE651DAFDEF1E95914FAA7DCBF86EF17483F58 - -Count = 1046 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = C5C4B461D0BF049006B2E3B22B7AFD85E84967EA97DA45C0C2C39D5C634DFB3E8783E8CA0B0F3A49D71A1EF4AB61EC - -Count = 1047 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = B47397120FEE8341A297582A0EF8ED0AEF0D7B7BBC973535CE4D26C8DDD52ECE1E51C43E20B946774B1E9F2D6C7C01 - -Count = 1048 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = AF80FD34D7CDE8D535E60C2B215144D2A422AF88AE08AE9AB5F237D8BC80DE61E58D80D8B8E6E6C8DA096E574309DA - -Count = 1049 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 8EDC54382B037B3F4EDBD439DF514A32E7EC6849871089B1934594FCDE2D390F5EAA2BC60B1A54D590FFDC47E4A80C - -Count = 1050 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 9008E8E6CF4D68D387F3FD79869981C6EDE8E3FB5AD232CAF7B39098696C2F5404386C81B29304F98838C852981CF6 - -Count = 1051 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 9EC1EA974935503E608D67E669E672C5F2D013E43DD14768FE0A47FD2E835FB62247964E75C1E9C0661E6C33F4F1E0 - -Count = 1052 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = EDCD94F4D44169F04FF807C1DCDDECCDA63B34158B6C68BFF1AE842184279A6D729BE79F0F26F4147D5841E8C0939D - -Count = 1053 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 5FA0A4E138DBC93D9B23E3AA8F3DBE6382A9B467AEDE53BD81350527B88EAF8B392DA0893B5B9D02412CF0F7D50350 - -Count = 1054 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 1040BBF069791D0C5C80E535604879651EA5ECF6CCF64E8F7F6D060832A260A8A0275443939E08DB233F0B1314CE85 - -Count = 1055 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = F8E14234D6E1F3CDC8FC2EB2D735B14B49758990E2703BD44061659C0AEBA1AB5C94F00B216C8FCCEFDF265BE661C7 - -Count = 1056 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = DAC32E172659EA149589F2593EC44124E951DF9FE2373DB651D3AEAE74F1CEBB53C2E33CB423FDCEFA44EA20A52C7F - -Count = 1057 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = -CT = 42494509C7406E43F61FBF06F885CDF4F2C2D87430736130FFF7907E71C7CA384E16C54C859F0E17CFF78E92FAB564C5 - -Count = 1058 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00 -CT = CB5A29175C2CF4B0EF917C3C56D65BF46677F5E0BE2AC00A098E69B5BD0B2A9E1C0B5FC3F18F79415CEF03C670D34B11 - -Count = 1059 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001 -CT = 6AFEA5365BA595A03F75EE28CF127AF76A42D5C5A2347C3A355481445A9B842BA769FE62FAC06C0EF3540624C5A76936 - -Count = 1060 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102 -CT = E27AF5BEB783F21124A2EF6DD75BA94B602A333ECCEA3EB043C04C9EF99926307231CBBE492B767A0CF2AAE19F4A0548 - -Count = 1061 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203 -CT = C2733CCE8416CEFB175501253408F6767C412536649751D63D758EC809AEEE72933CC4F62962A37C3EDA915C7CB0B10D - -Count = 1062 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001020304 -CT = 09D5A115BC8E30DCE572250709B93F11412939F2738BD7B3A51109EDB0D1CE92D961F58697735D2CAF1791AAEF88AA15 - -Count = 1063 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405 -CT = D76C5F8FA6CDF860F36A0BD80C1A010EC5493A1697C91DA17D47C7293EDB85793435CB82E02217E236A4268A90E3ACD4 - -Count = 1064 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203040506 -CT = 1DC180F09D7001563379865F014987917BE39DE70C2A8A714750C86ED3A1967F03B4C4E7674617B8E274B169F4BFADB5 - -Count = 1065 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001020304050607 -CT = FE93F5A11132479F2FC8082FFE87917379AA6291752B62C6EA12CC6AB8A67FCC45645BE7EBB8AA9B7A3177D72760B597 - -Count = 1066 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708 -CT = ED2C0C3418B6033DB5F70C4CC587E69BEF0FAAF72DDC4CA87180A1C8DD238107C63F336C39BB2D0002506382B35ED53B - -Count = 1067 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203040506070809 -CT = 63ED601B27EF5C4D5262CE556D4D9E06B0473FB6C19A7BA27100AB25F776731AD3CC461EDF2DB5BB5A00B8E72E4791F8 - -Count = 1068 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A -CT = 3241FA626E6DB0BFE9C0B2BB77C84E6B5D89D065C7F875E7DD53F5E9FD584396DB24AB26764C015AB49B634DE6820904 - -Count = 1069 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B -CT = C20C08CF78FFD6E6E98B62DE938C328B8D7800ED7D83EED5F667A95B55E00E17DAE827F1F8A0B319F6B87E14C1AC3CF8 - -Count = 1070 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C -CT = 69A3E5A023459BBB606552E822FD273BD82B66E74E7F4F58871B777ABF266313D44ABD1808B13566ED442D0DE0377530 - -Count = 1071 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D -CT = 524741D704105F3BEE700B5AEE3E2D25473486EFA3FC1FF0E8FAB427F971A818C529714322399778C1F5573F011C6D0A - -Count = 1072 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E -CT = 3B750FDF94272134EDA14AA019E0F720DB3ECBC57C3564CFB3BB786436D0D895165353EF53B8F707A723EFC42F8CF711 - -Count = 1073 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F -CT = 68B710D7B16974580DE1B71602947CAEF8897A5D0A0719DDF614D1853B314183B9491762858F2820C11A4CF6EC023D70 - -Count = 1074 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10 -CT = A1F56278B46E18D4F3EBD7981824798CAF8056C20E8C70394320361C50BBF812ECB9E07A81E26741DAA8FAEB7DDBFE00 - -Count = 1075 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = DB9BDEA0A80CC6DFDC9FD20C6EAE4D5229C5673748265B358A09FE50A63B8DC4C204AF80B3927FCC2D511952C22DEDE5 - -Count = 1076 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 92001B02F3E79F07D50D7CF8220A78FD1D31AC28F315431D53BF854108FC37709A42A64A2592C99A62B54E36C52A57BD - -Count = 1077 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 34FB1217BCE173AE129F86BE52C95E6D04F5923057016187C0A363CDF6BB30D4A4C4E96B651E88FE5377DF8112E5C281 - -Count = 1078 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 60B8203504EB09A7AAC923B3100448F11B1ABAF0D428B74C94185455284ADE98A669F7EB8C63ECB721D05C017349066C - -Count = 1079 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = BF9A6EAB965AC9FCC02138B17AFE018CA53D611B2FB3BD46B8415B6511489886EDA6D3B86D70CEC5D0EB6B3839E39FFB - -Count = 1080 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 77620F5B16AF222DF6B8C063AEA5F0ACA7C36E0CC7DD0E8382EA793013888D663D1682F1C3EE6422216A5A5369B1B0B7 - -Count = 1081 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 8EED905B044634CC334414EDCE46214BA2B54BA3CD9F384DD6B652E788794122A697CCDCC63218388CA5547E14267254 - -Count = 1082 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = DAAA1AE219D1DFE3DCB6D42E4A2FB387383DD777EB0A4CA3F9FEFCC4BA4876E82CD3FEB14A55871F964747A1867E8194 - -Count = 1083 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 0565216CEE83173206D99D9ABA5E8CA3D80081D5341D38C9DB7034323504B6CAFEADFA6EF511578B3FD0DA3EB46856BD - -Count = 1084 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 80DBD4D7E64447F037AD4F13047B39436126F3B82238AEB0978B743FFD6D9852D82444D31A63EB0E923469A4EA486F1E - -Count = 1085 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = FE6E62858A6F55983254B2F72DF074BCD888639A5FEC4AF6E952BB1D6D9B062846673F450F819C3B7FA505F01880F6BC - -Count = 1086 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = B1322523B52BFCD33BCC4C19E01463E4C03D881EEA62DD6BB82C82C48F106F672A0682A040055991A9D52F3CEDFB5517 - -Count = 1087 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E85EAF4D6FECF969A44CF24358191A59A8B8D2BCA0AE2A4F3B168674DAFB3C31E9B6533486A76E1AA7F2D1141783A8C0 - -Count = 1088 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 57D14CA7AD8AD04A4221317D915D61619327E3F409050B6D827C1392B88D5CEA665B74F7685330185666E7F4CE26CBC9 - -Count = 1089 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = A617E429C7DD351098375900EA5EC8CA23DF17B8DEEA71EA0E8C49A46E01FFEB7C7EA84D0540657671018B9248EA9BD7 - diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/api.h b/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/api.h deleted file mode 100644 index a4aa567..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/crypto_aead.h deleted file mode 100644 index 6f4ee42..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/crypto_aead.h +++ /dev/null @@ -1,13 +0,0 @@ -//API required by the NIST for the LWC competition -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); - -//API required by the NIST for the LWC competition -int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, - 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); diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/encrypt.c b/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/encrypt.c deleted file mode 100644 index ade5211..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/encrypt.c +++ /dev/null @@ -1,383 +0,0 @@ -#include "skinny128.h" -#include "romulus.h" -#include - -u8 final_ad_domain (unsigned long long adlen, unsigned long long mlen) { - u8 domain = 0; - u32 leftover; - //Determine which domain bits we need based on the length of the ad - if (adlen == 0) { - domain ^= 0x02; // No message, so only 1 block with padding - } else { - leftover = (u32)(adlen % (2 * BLOCKBYTES)); - if (leftover == 0) { // Even or odd ad length? - domain ^= 0x08; // Even with a full double block at the end - } else if (leftover < BLOCKBYTES) { - domain ^= 0x02; // Odd with a partial single block at the end - } else if (leftover > BLOCKBYTES) { - domain ^= 0x0A; // Even with a partial double block at the end - } - } - //Determine which domain bits we need based on the length of the message - if (mlen == 0) { - domain ^= 0x01; // No message, so only 1 block with padding - } else { - leftover = (u32)(mlen % (2 * BLOCKBYTES)); - if (leftover == 0) { // Even or odd message length? - domain ^= 0x04; // Even with a full double block at the end - } else if (leftover < BLOCKBYTES) { - domain ^= 0x01; // Odd with a partial single block at the end - } else if (leftover > BLOCKBYTES) { - domain ^= 0x05; // Even with a partial double block at the end - } - } - return domain; -} - -//Encryption and authentication using Romulus-N1 -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) { - - u64 tmp_mlen = mlen; - u32 tmp; - const u8* m_auth = m; - u8 final_domain = 0x30; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - memset(state, 0x00, BLOCKBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the associated data ----------------- - final_domain ^= final_ad_domain(adlen, mlen); - SET_DOMAIN(tks, 0x28); - while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - // Pad and process the left-over blocks - if (adlen == 2*BLOCKBYTES) { // Left-over complete double block - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - } else if (adlen > BLOCKBYTES) { // Left-over partial double block - adlen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; // Padding - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - } else { - SET_DOMAIN(tks, 0x2C); - UPDATE_CTR(tks.tk1); - if (adlen == BLOCKBYTES) { // Left-over complete single block - XOR_BLOCK(state, state, ad); - } else { // Left-over partial single block - for(int i =0; i < adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; // Padding - } - if (tmp_mlen >= BLOCKBYTES) { - tkschedule_lfsr(tks.rtk, m_auth, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - if (tmp_mlen > BLOCKBYTES) - UPDATE_CTR(tks.tk1); - m_auth += BLOCKBYTES; - tmp_mlen -= BLOCKBYTES; - } else { - memcpy(pad, m_auth, tmp_mlen); - memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); - pad[15] = (u8)tmp_mlen; // Padding - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - tmp_mlen = 0; - } - } - // Process all message double blocks except the last - SET_DOMAIN(tks, 0x2C); - while (tmp_mlen > 32) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - m_auth += 2 * BLOCKBYTES; - tmp_mlen -= 2 * BLOCKBYTES; - } - // Process the last message double block - if (tmp_mlen == 2 * BLOCKBYTES) { // Last message double block is full - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else if (tmp_mlen > BLOCKBYTES) { // Last message double block is partial - tmp_mlen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - memcpy(pad, m_auth + BLOCKBYTES, tmp_mlen); - memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); - pad[15] = (u8)tmp_mlen; // Padding - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else if (tmp_mlen == BLOCKBYTES) { // Last message single block is full - XOR_BLOCK(state, state, m_auth); - } else if (tmp_mlen > 0) { // Last message single block is partial - for(int i =0; i < (int)tmp_mlen; i++) - state[i] ^= m_auth[i]; - state[15] ^= (u8)tmp_mlen; // Padding - } - // Process the last partial block - SET_DOMAIN(tks, final_domain); - UPDATE_CTR(tks.tk1); - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - // ----------------- Process the associated data ----------------- - - - // ----------------- Generate the tag ----------------- - G(state,state); - memcpy(c + mlen, state, TAGBYTES); - // ----------------- Generate the tag ----------------- - - memset(tks.tk1, 0x00, KEYBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - if (mlen > 0) { - SET_DOMAIN(tks, 0x24); - while (mlen > BLOCKBYTES) { - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - RHO(state,c,m); - UPDATE_CTR(tks.tk1); - c += BLOCKBYTES; - m += BLOCKBYTES; - mlen -= BLOCKBYTES; - } - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - for(int i = 0; i < (int)mlen; i++) { - tmp = m[i]; // Use of tmp variable in case c = m - c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= (u8)tmp; - } - state[15] ^= (u8)mlen; // Padding - } - - return 0; -} - -//Decryption and tag verification using Romulus-N1 -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) { - - u32 tmp, tmp_mlen; - u8 final_domain = 0x30; - u8* m_auth = m; - const u8* c_tmp = c; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - *mlen = clen - TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the ciphertext ----------------- - clen -= TAGBYTES; - memcpy(state, c + clen, TAGBYTES); - tmp_mlen = clen; - if (tmp_mlen > 0) { - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - SET_DOMAIN(tks, 0x24); - while (tmp_mlen > BLOCKBYTES) { - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - RHO_INV(state, c, m); - UPDATE_CTR(tks.tk1); - c += BLOCKBYTES; - m += BLOCKBYTES; - tmp_mlen -= BLOCKBYTES; - } - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - for(int i = 0; i < (int)tmp_mlen; i++) { - m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= m[i]; - } - state[15] ^= (u8)tmp_mlen; // Padding - } - // ----------------- Process the ciphertext ----------------- - - // ----------------- Process the associated data ----------------- - memset(tks.tk1, 0x00, KEYBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - memset(state, 0x00, BLOCKBYTES); - final_domain ^= final_ad_domain(adlen, clen); - SET_DOMAIN(tks, 0x28); - while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - // Pad and process the left-over blocks - if (adlen == 2*BLOCKBYTES) { // Left-over complete double block - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - } else if (adlen > BLOCKBYTES) { // Left-over partial double block - adlen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; // Padding - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - } else { - SET_DOMAIN(tks, 0x2C); - UPDATE_CTR(tks.tk1); - if (adlen == BLOCKBYTES) { // Left-over complete single block - XOR_BLOCK(state, state, ad); - } else { // Left-over partial single block - for(int i =0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; // Padding - } - if (clen >= BLOCKBYTES) { - tkschedule_lfsr(tks.rtk, m_auth, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - if (clen > BLOCKBYTES) - UPDATE_CTR(tks.tk1); - m_auth += BLOCKBYTES; - clen -= BLOCKBYTES; - } else { - memcpy(pad, m_auth, clen); - memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); - pad[15] = (u8)clen; // Padding - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - clen = 0; - } - } - // Process all message double blocks except the last - SET_DOMAIN(tks, 0x2C); - while (clen > 32) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - m_auth += 2 * BLOCKBYTES; - clen -= 2 * BLOCKBYTES; - } - // Process the last message double block - if (clen == 2 * BLOCKBYTES) { // Last message double block is full - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else if (clen > BLOCKBYTES) { // Last message double block is partial - clen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - memcpy(pad, m_auth + BLOCKBYTES, clen); - memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); - pad[15] = (u8)clen; // Padding - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else if (clen == BLOCKBYTES) { // Last message single block is full - XOR_BLOCK(state, state, m_auth); - } else if (clen > 0) { // Last message single block is partial - for(int i =0; i < (int)clen; i++) - state[i] ^= m[i]; - state[15] ^= (u8)clen; // Padding - } - // Process the last partial block - SET_DOMAIN(tks, final_domain); - UPDATE_CTR(tks.tk1); - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - // ----------------- Process the associated data ----------------- - - // ----------------- Generate and check the tag ----------------- - G(state,state); - tmp = 0; - for(int i = 0; i < TAGBYTES; i++) - tmp |= state[i] ^ c_tmp[*mlen+i]; //constant-time tag comparison - // ----------------- Generate and check the tag ----------------- - - return tmp; -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/romulus.h b/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/romulus.h deleted file mode 100644 index 626a767..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/romulus.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef ROMULUSN1_H_ -#define ROMULUSN1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef unsigned int u64; -typedef struct { - u8 tk1[16]; //to manipulate tk1 byte-wise - u32 rtk1[4*16]; //to avoid tk schedule recomputations - u32 rtk[4*SKINNY128_384_ROUNDS]; //all round tweakeys -} skinny_128_384_tks; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) - -//G as defined in the Romulus specification in a 32-bit word-wise manner -#define G(x,y) ({ \ - tmp = ((u32*)(y))[0]; \ - ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[1]; \ - ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[2]; \ - ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[3]; \ - ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ -}) - -//update the counter in tk1 in a 32-bit word-wise manner -#define UPDATE_CTR(tk1) ({ \ - tmp = ((u32*)(tk1))[1]; \ - ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ - ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ - ((u32*)(tk1))[1] |= tmp & 0xff000000; \ - ((u32*)(tk1))[0] <<= 1; \ - if ((tmp >> 23) & 0x01) \ - ((u32*)(tk1))[0] ^= 0x95; \ -}) - -//x <- y ^ z for 128-bit blocks -#define XOR_BLOCK(x,y,z) ({ \ - ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ - ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ - ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ - ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ -}) - - -//Rho as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO(x,y,z) ({ \ - G(pad,x); \ - XOR_BLOCK(y, pad, z); \ - XOR_BLOCK(x, x, z); \ -}) - -//Rho inverse as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO_INV(x, y, z) ({ \ - G(pad, x); \ - XOR_BLOCK(z, pad, y); \ - XOR_BLOCK(x, x, z); \ -}) - -#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.h b/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.h deleted file mode 100644 index 7f53b7d..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -#define SKINNY128_384_ROUNDS 40 - -extern void skinny128_384(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1); -extern void tkschedule_lfsr(u32* rtk, const u8* tk2, const u8* tk3, const int rounds); -extern void tkschedule_perm(u32* rtk); -extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1); - - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.s b/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.s deleted file mode 100644 index 2f938a0..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/armcortexm/skinny128.s +++ /dev/null @@ -1,1706 +0,0 @@ -/******************************************************************************* -* ARM assembly implementation of fixsliced SKINNY-128-384. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -*******************************************************************************/ - -.syntax unified -.thumb - -/******************************************************************************* -* applies P^2 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p2: - movw r1, #0xcc00 - movt r1, #0xcc00 //r1 <- 0xcc00cc00 - movw r10, #0xcc00 - movt r10, #0x0033 //r10<- 0xcc000033 - and r11, r1, r6, ror #14 - bfi r11, r6, #16, #8 - and r12, r6, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r6 - orr r11, r11, r12, lsr #8 - and r12, r6, #0x00cc0000 - orr r6, r11, r12, lsr #18 - and r11, r1, r7, ror #14 - bfi r11, r7, #16, #8 - and r12, r7, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r7 - orr r11, r11, r12, lsr #8 - and r12, r7, #0x00cc0000 - orr r7, r11, r12, lsr #18 - and r11, r1, r8, ror #14 - bfi r11, r8, #16, #8 - and r12, r8, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r8 - orr r11, r11, r12, lsr #8 - and r12, r8, #0x00cc0000 - orr r8, r11, r12, lsr #18 - and r11, r1, r9, ror #14 - bfi r11, r9, #16, #8 - and r12, r9, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r9 - orr r11, r11, r12, lsr #8 - and r12, r9, #0x00cc0000 - orr r9, r11, r12, lsr #18 - bx lr - -/******************************************************************************* -* applies P^4 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p4: - str.w r14, [sp] //store r14 on the stack - movw r14, #0x00cc - movt r14, #0xcc00 //r14<- 0xcc0000cc - movw r12, #0xcc00 - movt r12, #0x3300 //r12<- 0x3300cc00 - movw r11, #0x00cc - movt r11, #0x00cc //r11<- 0x00cc00cc - and r10, r14, r6, ror #22 - and r1, r12, r6, ror #16 - orr r10, r10, r1 - and r1, r6, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r6, r6, r1 - orr r6, r10, r6, ror #24 - and r10, r14, r7, ror #22 - and r1, r12, r7, ror #16 - orr r10, r10, r1 - and r1, r7, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r7, r7, r1 - orr r7, r10, r7, ror #24 - and r10, r14, r8, ror #22 - and r1, r12, r8, ror #16 - orr r10, r10, r1 - and r1, r8, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r8, r8, r1 - orr r8, r10, r8, ror #24 - and r10, r14, r9, ror #22 - ldr.w r14, [sp] //restore r14 - and r12, r12, r9, ror #16 - orr r10, r10, r12 - and r12, r9, r11 - orr r10, r10, r12, lsr #2 - movw r12, #0xcc33 //r1 <- 0x0000cc33 - and r9, r9, r12 - orr r9, r10, r9, ror #24 - bx lr - -/******************************************************************************* -* applies P^6 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p6: - movw r1, #0x3333 //r1 <- 0x00003333 - movw r12, #0x00cc - movt r12, #0x3300 //r12<- 0x330000cc - and r10, r6, r1, ror #8 // --- permute r6 6 times - and r11, r12, r6, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r6, ror #10 - orr r11, r11, r10 - and r10, r6, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r6, #0x00003300 - orr r6, r11, r10, lsl #2 // permute r6 6 times --- - and r10, r7, r1, ror #8 // --- permute r7 6 times - and r11, r12, r7, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r7, ror #10 - orr r11, r11, r10 - and r10, r7, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r7, #0x00003300 - orr r7, r11, r10, lsl #2 // permute r7 6 times --- - and r10, r8, r1, ror #8 // --- permute r8 6 times - and r11, r12, r8, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r8, ror #10 - orr r11, r11, r10 - and r10, r8, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r8, #0x00003300 - orr r8, r11, r10, lsl #2 // permute r8 6 times --- - and r10, r9, r1, ror #8 // --- permute r9 6 times - and r11, r12, r9, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r9, ror #10 - orr r11, r11, r10 - and r10, r9, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r9, #0x00003300 // permute r9 6 times --- - orr r9, r11, r10, lsl #2 - bx lr - -/******************************************************************************* -* applies P^8 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p8: - movw r12, #0x3333 //r12<- 0x00003333 - movw r1, #0x0000 - movt r1, #0x33cc //r1 <- 0x33cc0000 - and r10, r6, r1 // --- permute r6 8 times - and r11, r1, r6, ror #8 - orr r11, r11, r10, ror #24 - and r10, r6, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r6, r12, lsl #8 - orr r6, r11, r10, lsr #6 // permute r6 8 times --- - and r10, r7, r1 // --- permute r7 8 times - and r11, r1, r7, ror #8 - orr r11, r11, r10, ror #24 - and r10, r7, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r7, r12, lsl #8 - orr r7, r11, r10, lsr #6 // permute r7 8 times --- - and r10, r8, r1 // --- permute r8 8 times - and r11, r1, r8, ror #8 - orr r11, r11, r10, ror #24 - and r10, r8, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r8, r12, lsl #8 - orr r8, r11, r10, lsr #6 // permute r8 8 times --- - and r10, r9, r1 // --- permute r9 8 times - and r11, r1, r9, ror #8 - orr r11, r11, r10, ror #24 - and r10, r9, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r9, r12, lsl #8 - orr r9, r11, r10, lsr #6 // permute r9 8 times --- - bx lr - -/******************************************************************************* -* applies P^10 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p10: - movw r12, #0x0033 - movt r12, #0x3300 //r12<- 0x33000033 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r10, r6, r1, ror #8 // --- permute r6 10 times - and r11, r12, r6, ror #26 - orr r11, r11, r10, ror #8 - and r10, r6, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r6, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r6, #0x0000cc00 - orr r6, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r7, r1, ror #8 // --- permute r6 10 times - and r11, r12, r7, ror #26 - orr r11, r11, r10, ror #8 - and r10, r7, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r7, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r7, #0x0000cc00 - orr r7, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r8, r1, ror #8 // --- permute r6 10 times - and r11, r12, r8, ror #26 - orr r11, r11, r10, ror #8 - and r10, r8, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r8, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r8, #0x0000cc00 - orr r8, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r9, r1, ror #8 // --- permute r6 10 times - and r11, r12, r9, ror #26 - orr r11, r11, r10, ror #8 - and r10, r9, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r9, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r9, #0x0000cc00 - orr r9, r11, r10, lsr #2 // permute r6 10 times --- - bx lr - -/******************************************************************************* -* applies P^12 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p12: - str.w r14, [sp] //store r14 on the stack - movw r14, #0xcc33 //r14<- 0x0000cc33 - movw r12, #0x00cc - movt r12, #0x00cc //r12<- 0x00cc00cc - movw r1, #0x3300 - movt r1, #0xcc00 //r1 <- 0xcc003300 - and r10, r14, r6, ror #8 // --- permute r6 12 times - and r11, r12, r6, ror #30 - orr r11, r11, r10 - and r10, r1, r6, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r6, r10, ror #8 - orr r6, r11, r10, ror #10 // permute r6 12 times --- - and r10, r14, r7, ror #8 // --- permute r7 12 times - and r11, r12, r7, ror #30 - orr r11, r11, r10 - and r10, r1, r7, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r7, r10, ror #8 - orr r7, r11, r10, ror #10 // permute r7 12 times --- - and r10, r14, r8, ror #8 // --- permute r8 12 times - and r11, r12, r8, ror #30 - orr r11, r11, r10 - and r10, r1, r8, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r8, r10, ror #8 - orr r8, r11, r10, ror #10 // permute r8 12 times --- - and r10, r14, r9, ror #8 // --- permute r9 12 times - and r11, r12, r9, ror #30 - orr r11, r11, r10 - and r10, r1, r9, ror #16 - ldr.w r14, [sp] - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r9, r10, ror #8 - orr r9, r11, r10, ror #10 // permute r9 12 times --- - bx lr - -/******************************************************************************* -* applies P^14 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p14: - movw r1, #0xcc00 - movt r1, #0x0033 //r1 <- 0x0033cc00 - movw r12, #0xcc00 - movt r12, #0xcc00 //r12<- 0x33003300 - and r10, r1, r6, ror #24 // --- permute r6 14 times - and r11, r6, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r6, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r6, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r6, r12 - orr r6, r11, r10, ror #18 // permute r6 14 times --- - and r10, r1, r7, ror #24 // --- permute r7 14 times - and r11, r7, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r7, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r7, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r7, r12 - orr r7, r11, r10, ror #18 // permute r7 14 times --- - and r10, r1, r8, ror #24 // --- permute r8 14 times - and r11, r8, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r8, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r8, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r8, r12 - orr r8, r11, r10, ror #18 // permute r8 14 times --- - and r10, r1, r9, ror #24 // --- permute r9 14 times - and r11, r9, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r9, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r9, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r9, r12 - orr r9, r11, r10, ror #18 // permute r9 14 times --- - bx lr - -.align 2 -packing: - eor r12, r2, r2, lsr #3 - and r12, r12, r10 - eor r2, r2, r12 - eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - eor r12, r3, r3, lsr #3 - and r12, r12, r10 - eor r3, r3, r12 - eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r12, r4, r4, lsr #3 - and r12, r12, r10 - eor r4, r4, r12 - eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r12, r5, r5, lsr #3 - and r12, r12, r10 - eor r5, r5, r12 - eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r12, r2, r4, lsr #2 - and r12, r12, r11 - eor r2, r2, r12 - eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r12, r2, r3, lsr #4 - and r12, r12, r11, lsr #2 - eor r2, r2, r12 - eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r12, r2, r5, lsr #6 - and r12, r12, r11, lsr #4 - eor r2, r2, r12 - eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r12, r4, r3, lsr #2 - and r12, r12, r11, lsr #2 - eor r4, r4, r12 - eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r12, r4, r5, lsr #4 - and r12, r12, r11, lsr #4 - eor r4, r4, r12 - eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r12, r3, r5, lsr #2 - and r12, r12, r11, lsr #4 - eor r3, r3, r12 - eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - bx lr - -/****************************************************************************** -* Compute LFSR2(TK2) ^ LFSR3(TK3) for all rounds. -* Performing both at the same time allows to save some memory accesses. -******************************************************************************/ -@ void tkschedule_lfsr(u32* tk, const u8* tk2, const u8* tk3, const int rounds) -.global tkschedule_lfsr -.type tkschedule_lfsr,%function -.align 2 -tkschedule_lfsr: - push {r0-r12, r14} - ldr.w r3, [r1, #8] //load tk2 (3rd word) - ldr.w r4, [r1, #4] //load tk2 (2nd word) - ldr.w r5, [r1, #12] //load tk2 (4th word) - ldr.w r12, [r1] //load tk2 (1st word) - mov r1, r2 //move tk3 address in r1 - mov r2, r12 //move 1st tk2 word in r2 - movw r10, #0x0a0a - movt r10, #0x0a0a //r10 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r7 <- 0x30303030 - bl packing //pack tk2 - mov r6, r2 //move tk2 from r2-r5 to r6-r9 - mov r7, r3 //move tk2 from r2-r5 to r6-r9 - mov r8, r4 //move tk2 from r2-r5 to r6-r9 - mov r9, r5 //move tk2 from r2-r5 to r6-r9 - ldr.w r3, [r1, #8] //load tk3 (3rd word) - ldr.w r4, [r1, #4] //load tk3 (2nd word) - ldr.w r5, [r1, #12] //load tk3 (4th) word) - ldr.w r2, [r1] //load tk3 (1st) word) - bl packing //pack tk3 - eor r10, r10, r10, lsl #4 //r10<- 0xaaaaaaaa - ldr.w r1, [sp, #12] //load loop counter in r1 - eor r11, r2, r6 //tk2 ^ tk3 (1st word) - eor r12, r3, r7 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r4, r8 //tk2 ^ tk3 (3rd word) - eor r12, r5, r9 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #8 //store in tk - loop: - and r12, r8, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r6 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r6, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r3, r10 // --- apply LFSR3 to tk3 - eor r12, r5, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r5, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r5, r7 //tk2 ^ tk3 (1st word) - eor r12, r2, r8 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r3, r9 //tk2 ^ tk3 (3rd word) - eor r12, r4, r6 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r9, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r7 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r7, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r2, r10 // --- apply LFSR3 to tk3 - eor r12, r4, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r4, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r4, r8 //tk2 ^ tk3 (1st word) - eor r12, r5, r9 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r2, r6 //tk2 ^ tk3 (3rd word) - eor r12, r3, r7 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r6, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r8 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r8, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r5, r10 // --- apply LFSR3 to tk3 - eor r12, r3, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r3, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r3, r9 //tk2 ^ tk3 (1st word) - eor r12, r4, r6 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r5, r7 //tk2 ^ tk3 (3rd word) - eor r12, r2, r8 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r7, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r9 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r9, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r4, r10 // --- apply LFSR3 to tk3 - eor r12, r2, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r2, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r2, r6 //tk2 ^ tk3 (1st word) - eor r12, r3, r7 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r4, r8 //tk2 ^ tk3 (3rd word) - eor r12, r5, r9 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - subs.w r1, r1, #8 //decrease loop counter by 8 - bne loop - pop {r0-r12, r14} - bx lr - -@ void tkschedule_perm(u32* tk) -.global tkschedule_perm -.type tkschedule_perm,%function -.align 2 -tkschedule_perm: - push {r0-r12, lr} - sub.w sp, #4 //to store r14 in subroutines - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r6, r6, r10 //tk &= 0xf0f0f0f0 (1st word) - and r7, r7, r10 //tk &= 0xf0f0f0f0 (2nd word) - and r8, r8, r10 //tk &= 0xf0f0f0f0 (3rd word) - and r9, r9, r10 //tk &= 0xf0f0f0f0 (4th word) - eor r8, r8, #0x00000004 //add rconst - eor r9, r9, #0x00000040 //add rconst - mvn r9, r9 //to remove a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 1st round - strd r6, r7, [r0], #8 //store 2nd half tk for 1st round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 2nd round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000100 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 3rd round - strd r6, r7, [r0], #8 //store 2nd half tk for 3rd round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 5th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 5th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 4th round - strd r8, r9, [r0], #24 //store 2nd half tk for 4th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 6th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x00400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 6th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - eor r9, r9, #0x00000400 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 7th round - strd r6, r7, [r0], #8 //store 2nd half tk for 7th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - eor r12, r12, #0x00000040 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 9th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000054 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 9th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r8, r8, #0x00010000 - eor r8, r8, #0x00000410 - eor r9, r9, #0x00000410 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 8th round - strd r8, r9, [r0], #24 //store 2nd half tk for 8th round - ldm r0, {r6-r9} //load tk - bl p10 //apply the permutation 10 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x00000100 //add rconst - eor r12, r12, #0x00000100 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 10th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 10th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r6, r6, #0x04000000 //add rconst - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - eor r9, r9, #0x00000100 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 11th round - strd r6, r7, [r0], #8 //store 2nd half tk for 11th round - ldm r0, {r6-r9} //load tk - bl p12 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 13th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00140000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 13th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x04000000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 12th round - strd r8, r9, [r0], #24 //store 2nd half tk for 12th round - ldm r0, {r6-r9} //load tk - bl p14 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 14th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x01400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 14th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 //add rconst - eor r8, r8, #0x00004400 //add rconst - eor r9, r9, #0x00000400 //add const - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 15th round - strd r6, r7, [r0], #8 //store 2nd half tk for 15th round - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - eor r11, r11, #0x00000040 //add rconst - eor r12, r12, #0x00000040 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 17th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000004 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 17th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r7 ,r7, #0x00000010 - eor r8, r8, #0x00000010 - eor r8, r8, #0x00010000 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 16th round - strd r8, r9, [r0], #24 //store 2nd half tk for 16th round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x00000100 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 18th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000040 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 18th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x40000000 //add rconst - eor r8, r8, #0x00000100 //add rconst - eor r9, r9, #0x04000000 //add rconst - eor r9, r9, #0x00000100 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 19th round - strd r6, r7, [r0], #8 //store 2nd half tk for 19th round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 21th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00100000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 21th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r8, r8, #0x04100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 20th round - strd r8, r9, [r0], #24 //store 2nd half tk for 20th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 22th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 22th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 23th round - strd r6, r7, [r0], #8 //store 2nd half tk for 23th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #24] //store 2nd half tk for 25th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000014 //add rconst - eor r12, r12, #0x00000040 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 25th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r8, r8, #0x00010400 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 24th round - strd r8, r9, [r0], #24 //store 2nd half tk for 24th round - ldm r0, {r6-r9} //load tk - bl p10 //apply the permutation 10 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 26th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 26th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x40000000 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 27th round - strd r6, r7, [r0], #8 //store 2nd half tk for 27th round - ldm r0, {r6-r9} //load tk - bl p12 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 29th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 29th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r8, r8, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 28th round - strd r8, r9, [r0], #24 //store 2nd half tk for 28th round - ldm r0, {r6-r9} //load tk - bl p14 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 30th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 30th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 31th round - strd r6, r7, [r0], #8 //store 2nd half tk for 31th round - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #24] //store 2nd half tk for 33th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000014 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 33th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r8, r8, #0x00010400 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 32th round - strd r8, r9, [r0], #24 //store 2nd half tk for 32th round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 34th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 34th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 35th round - strd r6, r7, [r0], #8 //store 2nd half tk for 35th round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 37th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 37th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 36th round - strd r8, r9, [r0], #24 //store 2nd half tk for 36th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 38th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x00400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 38th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x00000400 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 39th round - strd r6, r7, [r0], #8 //store 2nd half tk for 39th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0x3030 - movt r10, #0x3030 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000010 - eor r8, r8, #0x00010000 - eor r8, r8, #0x00000010 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 40th round - strd r8, r9, [r0] //store 2nd half tk for 40th round - add.w sp, #4 - pop {r0-r12, lr} - bx lr - -/****************************************************************************** -* Applies the permutations P^2, ..., P^14 for rounds 0 to 16. Since P^16=Id, we -* don't need more calculations as no LFSR is applied to TK1. -******************************************************************************/ -@ void tkschedule_perm_tk1(u32* tk, const u8* key) -.global tkschedule_perm_tk1 -.type tkschedule_perm_tk1,%function -.align 2 -tkschedule_perm_tk1: - push {r0-r12, lr} - ldr.w r3, [r1, #8] //load tk1 (3rd word) - ldr.w r4, [r1, #4] //load tk1 (2nd word) - ldr.w r5, [r1, #12] //load tk1 (4th word) - ldr.w r2, [r1] //load tk1 (1st word) - movw r10, #0x0a0a - movt r10, #0x0a0a //r6 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r7 <- 0x30303030 - bl packing //pack tk1 - mov r6, r2 //move tk1 from r2-r5 to r6-r9 - mov r7, r3 //move tk1 from r2-r5 to r6-r9 - mov r8, r4 //move tk1 from r2-r5 to r6-r9 - mov r9, r5 //move tk1 from r2-r5 to r6-r9 - movw r2, #0xf0f0 - movt r2, #0xf0f0 //r2<- 0xf0f0f0f0 - and r11, r8, r2 //tk &= 0xf0f0f0f0 (3rd word) - and r12, r9, r2 //tk &= 0xf0f0f0f0 (4th word) - strd r11, r12, [r0], #8 //store 1st half tk for 1st round - and r11, r6, r2 //tk &= 0xf0f0f0f0 (1st word) - and r12, r7, r2 //tk &= 0xf0f0f0f0 (2nd word) - strd r11, r12, [r0], #8 //store 2nd half tk for 1st round - - bl p2 //apply the permutation twice - movw r3, #0x0303 - movt r3, #0x0303 //r3<- 0x03030303 - and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #8] - and r11, r3, r7, ror #28 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #12] - and r11, r3, r9, ror #28 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #4] - and r11, r3, r8, ror #28 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 4 times - and r11, r2, r6, ror #16 //ror and mask to match fixslicing - and r12, r2, r7, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 5th round - and r11, r2, r8, ror #16 //ror and mask to match fixslicing - and r12, r2, r9, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 5th round - bl p2 //apply the permutation 6 times - and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #8] - and r11, r3, r7, ror #12 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #12] - and r11, r3, r9, ror #12 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #4] - and r11, r3, r8, ror #12 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 8 times - and r11, r2, r6 //ror and mask to match fixslicing - and r12, r2, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 9th round - and r11, r2, r8 //ror and mask to match fixslicing - and r12, r2, r9 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 9th round - bl p2 //apply the permutation 10 - and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #8] - and r11, r3, r7, ror #28 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #12] - and r11, r3, r9, ror #28 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #4] - and r11, r3, r8, ror #28 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 12 times - and r11, r2, r6, ror #16 //ror and mask to match fixslicing - and r12, r2, r7, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 5th round - and r11, r2, r8, ror #16 //ror and mask to match fixslicing - and r12, r2, r9, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 5th round - bl p2 //apply the permutation 14 times - and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #8] - and r11, r3, r7, ror #12 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #12] - and r11, r3, r9, ror #12 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #4] - and r11, r3, r8, ror #12 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0] //ror and masks to match fixslicing --- - pop {r0-r12, lr} - bx lr - -.align 2 -quadruple_round: - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rtk_2_3 + rconst - eor r3, r3, r9 //add rtk_2_3 + rconst - eor r4, r4, r10 //add rtk_2_3 + rconst - eor r5, r5, r11 //add rtk_2_3 + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #30 // --- mixcolumns 0 --- - eor r2, r2, r8, ror #24 - and r8, r7, r2, ror #18 - eor r2, r2, r8, ror #2 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #4 - and r8, r7, r3, ror #30 - eor r3, r3, r8, ror #24 - and r8, r7, r3, ror #18 - eor r3, r3, r8, ror #2 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #4 - and r8, r7, r4, ror #30 - eor r4, r4, r8, ror #24 - and r8, r7, r4, ror #18 - eor r4, r4, r8, ror #2 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #4 - and r8, r7, r5, ror #30 - eor r5, r5, r8, ror #24 - and r8, r7, r5, ror #18 - eor r5, r5, r8, ror #2 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #4 - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - and r8, r7, r2, ror #16 // --- mixcolumns 1 --- - eor r2, r2, r8, ror #30 - and r8, r7, r2, ror #28 - eor r2, r2, r8 - and r8, r7, r2, ror #16 - eor r2, r2, r8, ror #2 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #30 - and r8, r7, r3, ror #28 - eor r3, r3, r8 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #2 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #30 - and r8, r7, r4, ror #28 - eor r4, r4, r8 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #2 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #30 - and r8, r7, r5, ror #28 - eor r5, r5, r8 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #2 - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rtk_2_3 + rconst - eor r3, r3, r9 //add rtk_2_3 + rconst - eor r4, r4, r10 //add rtk_2_3 + rconst - eor r5, r5, r11 //add rtk_2_3 + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #10 // --- mixcolumns 2 --- - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #6 - and r8, r7, r2, ror #26 - eor r2, r2, r8 - and r8, r7, r3, ror #10 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #6 - and r8, r7, r3, ror #26 - eor r3, r3, r8 - and r8, r7, r4, ror #10 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #6 - and r8, r7, r4, ror #26 - eor r4, r4, r8 - and r8, r7, r5, ror #10 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #6 - and r8, r7, r5, ror #26 - eor r5, r5, r8 - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - ldmia r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - and r8, r7, r2, ror #4 // --- mixcolumns 3 --- - eor r2, r2, r8, ror #26 - and r8, r7, r2 - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #4 - eor r2, r2, r8, ror #22 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #26 - and r8, r7, r3 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #22 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #26 - and r8, r7, r4 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #22 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #26 - and r8, r7, r5 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #22 - bx lr - -/****************************************************************************** -* Encrypt a single block using fixsliced SKINNY-128-128. -******************************************************************************/ -@ void skinny128_384(u8* ctext, const u32* tk, const u8* ptext) -.global skinny128_384 -.type skinny128_384,%function -.align 2 -skinny128_384: - push {r0-r12, r14} - mov.w r0, r3 - ldr.w r3, [r2, #8] - ldr.w r4, [r2, #4] - ldr.w r5, [r2, #12] - ldr.w r2, [r2] - movw r6, #0x0a0a - movt r6, #0x0a0a //r6 <- 0x0a0a0a0a - movw r7, #0x3030 - movt r7, #0x3030 //r7 <- 0x30303030 - eor r12, r2, r2, lsr #3 - and r12, r12, r6 - eor r2, r2, r12 - eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - eor r12, r3, r3, lsr #3 - and r12, r12, r6 - eor r3, r3, r12 - eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r12, r4, r4, lsr #3 - and r12, r12, r6 - eor r4, r4, r12 - eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r12, r5, r5, lsr #3 - and r12, r12, r6 - eor r5, r5, r12 - eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r12, r2, r4, lsr #2 - and r12, r12, r7 - eor r2, r2, r12 - eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r12, r2, r3, lsr #4 - and r12, r12, r7, lsr #2 - eor r2, r2, r12 - eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r12, r2, r5, lsr #6 - and r12, r12, r7, lsr #4 - eor r2, r2, r12 - eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r12, r4, r3, lsr #2 - and r12, r12, r7, lsr #2 - eor r4, r4, r12 - eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r12, r4, r5, lsr #4 - and r12, r12, r7, lsr #4 - eor r4, r4, r12 - eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r12, r3, r5, lsr #2 - and r12, r12, r7, lsr #4 - eor r3, r3, r12 - eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - movw r6, #0x5555 - movt r6, #0x5555 //r6 <- 0x55555555 - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #128 // rtk1 repeats every 16 rounds - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #128 // rtk1 repeats every 16 rounds - bl quadruple_round - bl quadruple_round - movw r6, #0x0a0a - movt r6, #0x0a0a //r6 <- 0x0a0a0a0a - eor r10, r3, r5, lsr #2 - and r10, r10, r7, lsr #4 - eor r3, r3, r10 - eor r5, r5, r10, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - eor r10, r4, r5, lsr #4 - and r10, r10, r7, lsr #4 - eor r4, r4, r10 - eor r5, r5, r10, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r10, r4, r3, lsr #2 - and r10, r10, r7, lsr #2 - eor r4, r4, r10 - eor r3, r3, r10, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r10, r2, r5, lsr #6 - and r10, r10, r7, lsr #4 - eor r2, r2, r10 - eor r5, r5, r10, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r10, r2, r3, lsr #4 - and r10, r10, r7, lsr #2 - eor r2, r2, r10 - eor r3, r3, r10, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r10, r2, r4, lsr #2 - and r10, r10, r7 - eor r2, r2, r10 - eor r4, r4, r10, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r10, r5, r5, lsr #3 - and r10, r10, r6 - eor r5, r5, r10 - eor r5, r5, r10, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r10, r4, r4, lsr #3 - and r10, r10, r6 - eor r4, r4, r10 - eor r4, r4, r10, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r10, r3, r3, lsr #3 - and r10, r10, r6 - eor r3, r3, r10 - eor r3, r3, r10, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r10, r2, r2, lsr #3 - and r10, r10, r6 - eor r2, r2, r10 - eor r2, r2, r10, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - ldr.w r0, [sp], #4 - strd r2, r4, [r0] - strd r3, r5, [r0, #8] - pop {r1-r12,r14} - bx lr - \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/api.h b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/api.h deleted file mode 100644 index a4aa567..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/crypto_aead.h deleted file mode 100644 index e2ca9b0..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/crypto_aead.h +++ /dev/null @@ -1,18 +0,0 @@ - -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 -); - -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 -); \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/encrypt.c b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/encrypt.c deleted file mode 100644 index ba9f51d..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/encrypt.c +++ /dev/null @@ -1,367 +0,0 @@ -#include "skinny128.h" -#include "tk_schedule.h" -#include "romulus.h" -#include -#include - -static u8 final_ad_domain (unsigned long long adlen, unsigned long long mlen) { - u8 domain = 0; - u32 leftover; - //Determine which domain bits we need based on the length of the ad - if (adlen == 0) { - domain ^= 0x02; // No message, so only 1 block with padding - } else { - leftover = (u32)(adlen % (2 * BLOCKBYTES)); - if (leftover == 0) { // Even or odd ad length? - domain ^= 0x08; // Even with a full double block at the end - } else if (leftover < BLOCKBYTES) { - domain ^= 0x02; // Odd with a partial single block at the end - } else if (leftover > BLOCKBYTES) { - domain ^= 0x0A; // Even with a partial double block at the end - } - } - //Determine which domain bits we need based on the length of the message - if (mlen == 0) { - domain ^= 0x01; // No message, so only 1 block with padding - } else { - leftover = (unsigned)(mlen % (2 * BLOCKBYTES)); - if (leftover == 0) { // Even or odd message length? - domain ^= 0x04; // Even with a full double block at the end - } else if (leftover < BLOCKBYTES) { - domain ^= 0x01; // Odd with a partial single block at the end - } else if (leftover > BLOCKBYTES) { - domain ^= 0x05; // Even with a partial double block at the end - } - } - return domain; -} - -//Encryption and authentication using Romulus-N1 -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) { - - u32 tmp; - u64 tmp_mlen = mlen; - const u8* m_auth = m; - u8 final_domain = 0x30; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - memset(state, 0x00, BLOCKBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the associated data ----------------- - final_domain ^= final_ad_domain(adlen, mlen); - SET_DOMAIN(tks, 0x28); - while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - // Pad and process the left-over blocks - if (adlen == 2*BLOCKBYTES) { // Left-over complete double block - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - } else if (adlen > BLOCKBYTES) { // Left-over partial double block - adlen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; // Padding - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - } else { - SET_DOMAIN(tks, 0x2C); - UPDATE_CTR(tks.tk1); - if (adlen == BLOCKBYTES) { // Left-over complete single block - XOR_BLOCK(state, state, ad); - } else { // Left-over partial single block - for(int i =0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; // Padding - } - if (tmp_mlen >= BLOCKBYTES) { - precompute_rtk2_3(tks.rtk2_3, m_auth, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - if (tmp_mlen > BLOCKBYTES) - UPDATE_CTR(tks.tk1); - tmp_mlen -= BLOCKBYTES; - m_auth += BLOCKBYTES; - } else { - memcpy(pad, m_auth, tmp_mlen); - memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); - pad[15] = (u8)tmp_mlen; // Padding - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - tmp_mlen = 0; - } - } - // Process all message double blocks except the last - SET_DOMAIN(tks, 0x2C); - while (tmp_mlen > 32) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - m_auth += 2 * BLOCKBYTES; - tmp_mlen -= 2 * BLOCKBYTES; - } - // Process the last message double block - if (tmp_mlen == 2 * BLOCKBYTES) { // Last message double block is full - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else if (tmp_mlen > BLOCKBYTES) { // Last message double block is partial - tmp_mlen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - memcpy(pad, m_auth + BLOCKBYTES, tmp_mlen); - memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); - pad[15] = (u8)tmp_mlen; // Padding - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else if (tmp_mlen == BLOCKBYTES) { // Last message single block is full - XOR_BLOCK(state, state, m_auth); - } else if (tmp_mlen > 0) { // Last message single block is partial - for(int i =0; i < (int)tmp_mlen; i++) - state[i] ^= m_auth[i]; - state[15] ^= (u8)tmp_mlen; // Padding - } - // Process the last partial block - SET_DOMAIN(tks, final_domain); - UPDATE_CTR(tks.tk1); - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - // ----------------- Process the associated data ----------------- - - - // ----------------- Generate the tag ----------------- - G(state,state); - memcpy(c + mlen, state, TAGBYTES); - // ----------------- Generate the tag ----------------- - - memset(tks.tk1, 0x00, KEYBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - if (mlen > 0) { - SET_DOMAIN(tks, 0x24); - while (mlen > BLOCKBYTES) { - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - RHO(state,c,m); - UPDATE_CTR(tks.tk1); - c += BLOCKBYTES; - m += BLOCKBYTES; - mlen -= BLOCKBYTES; - } - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - for(int i = 0; i < (int)mlen; i++) { - tmp = m[i]; // Use of tmp variable in case c = m - c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= (u8)tmp; - } - state[15] ^= (u8)mlen; // Padding - } - - return 0; -} - -//Decryption and tag verification using Romulus-N1 -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) { - - u32 tmp; - u64 tmp_mlen; - u8 final_domain = 0x30; - u8* m_auth = m; - const u8* c_tmp = c; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - *mlen = clen - TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the ciphertext ----------------- - clen -= TAGBYTES; - memcpy(state, c + clen, TAGBYTES); - tmp_mlen = clen; - if (tmp_mlen > 0) { - SET_DOMAIN(tks, 0x24); - precompute_rtk2_3(tks.rtk2_3, npub, k); - while (tmp_mlen > BLOCKBYTES) { - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - RHO_INV(state, c, m); - UPDATE_CTR(tks.tk1); - c += BLOCKBYTES; - m += BLOCKBYTES; - tmp_mlen -= BLOCKBYTES; - } - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - for(int i = 0; i < (int)tmp_mlen; i++) { - m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= m[i]; - } - state[15] ^= (u8)tmp_mlen; // Padding - } - // ----------------- Process the ciphertext ----------------- - - // ----------------- Process the associated data ----------------- - memset(tks.tk1, 0x00, KEYBYTES); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - memset(state, 0x00, BLOCKBYTES); - final_domain ^= final_ad_domain(adlen, clen); - SET_DOMAIN(tks, 0x28); - while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - // Pad and process the left-over blocks - if (adlen == 2*BLOCKBYTES) { // Left-over complete double block - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - } else if (adlen > BLOCKBYTES) { // Left-over partial double block - adlen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; // Padding - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - } else { - SET_DOMAIN(tks, 0x2C); - UPDATE_CTR(tks.tk1); - if (adlen == BLOCKBYTES) { // Left-over complete single block - XOR_BLOCK(state, state, ad); - } else { // Left-over partial single block - for(int i =0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; // Padding - } - if (clen >= BLOCKBYTES) { - precompute_rtk2_3(tks.rtk2_3, m_auth, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - if (clen > BLOCKBYTES) - UPDATE_CTR(tks.tk1); - m_auth += BLOCKBYTES; - clen -= BLOCKBYTES; - } else { - memcpy(pad, m_auth, clen); - memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); - pad[15] = (u8)clen; // Padding - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - clen = 0; - } - } - // Process all message double blocks except the last - SET_DOMAIN(tks, 0x2C); - while (clen > 32) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - m_auth += 2 * BLOCKBYTES; - clen -= 2 * BLOCKBYTES; - } - // Process the last message double block - if (clen == 2 * BLOCKBYTES) { // Last message double block is full - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else if (clen > BLOCKBYTES) { // Last message double block is partial - clen -= BLOCKBYTES; - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, m_auth); - memcpy(pad, m_auth + BLOCKBYTES, clen); - memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); - pad[15] = (u8)clen; // Padding - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else if (clen == BLOCKBYTES) { // Last message single block is full - XOR_BLOCK(state, state, m_auth); - } else if (clen > 0) { // Last message single block is partial - for(int i =0; i < (int)clen; i++) - state[i] ^= m[i]; - state[15] ^= (u8)clen; // Padding - } - // Process the last partial block - SET_DOMAIN(tks, final_domain); - UPDATE_CTR(tks.tk1); - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - // ----------------- Process the associated data ----------------- - - // ----------------- Generate and check the tag ----------------- - G(state,state); - tmp = 0; - for(int i = 0; i < TAGBYTES; i++) - tmp |= state[i] ^ c_tmp[*mlen+i]; //constant-time tag comparison - // ----------------- Generate and check the tag ----------------- - - return tmp; -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/romulus.h b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/romulus.h deleted file mode 100644 index b254e2a..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/romulus.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef ROMULUSN1_H_ -#define ROMULUSN1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef unsigned int u64; -typedef struct { - u8 tk1[16]; //to manipulate tk1 byte-wise - u32 rtk1[4*16]; //to avoid tk schedule recomputations - u32 rtk2_3[4*SKINNY128_384_ROUNDS]; //all round tweakeys -} skinny_128_384_tks; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) - -//G as defined in the Romulus specification in a 32-bit word-wise manner -#define G(x,y) ({ \ - tmp = ((u32*)(y))[0]; \ - ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[1]; \ - ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[2]; \ - ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[3]; \ - ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ -}) - -//update the counter in tk1 in a 32-bit word-wise manner -#define UPDATE_CTR(tk1) ({ \ - tmp = ((u32*)(tk1))[1]; \ - ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ - ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ - ((u32*)(tk1))[1] |= tmp & 0xff000000; \ - ((u32*)(tk1))[0] <<= 1; \ - if ((tmp >> 23) & 0x01) \ - ((u32*)(tk1))[0] ^= 0x95; \ -}) - -//x <- y ^ z for 128-bit blocks -#define XOR_BLOCK(x,y,z) ({ \ - ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ - ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ - ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ - ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ -}) - - -//Rho as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO(x,y,z) ({ \ - G(pad,x); \ - XOR_BLOCK(y, pad, z); \ - XOR_BLOCK(x, x, z); \ -}) - -//Rho inverse as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO_INV(x, y, z) ({ \ - G(pad, x); \ - XOR_BLOCK(z, pad, y); \ - XOR_BLOCK(x, x, z); \ -}) - -#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.c b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.c deleted file mode 100644 index a1061d5..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.c +++ /dev/null @@ -1,107 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of the SKINNY tweakable block ciphers. -* -* This implementation doesn't compute the ShiftRows operation. Some masks and -* shifts are applied during the MixColumns operation so that the proper bits -* are XORed together. Moreover, the row permutation within the MixColumns -* is omitted, as well as the bit permutation at the end of the Sbox. The rows -* are synchronized with the classical after only 4 rounds. Therefore, this -* implementation relies on a "QUADRUPLE_ROUND" routine. -* -* The Sbox computation takes advantage of some symmetry in the 8-bit Sbox to -* turn it into a 4-bit S-box computation. Although the last bit permutation -* within the Sbox is not computed, the bit ordering is synchronized with the -* classical representation after 2 calls. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include -#include "skinny128.h" -#include "tk_schedule.h" - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void mixcolumns_0(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],24) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,30); - tmp = ROR(state[i],16) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,4); - tmp = ROR(state[i],8) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 1 -******************************************************************************/ -void mixcolumns_1(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 2 -******************************************************************************/ -void mixcolumns_2(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],8) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,6); - tmp = ROR(state[i],16) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],24) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 3 -******************************************************************************/ -void mixcolumns_3(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x30303030; - state[i] ^= ROR(tmp,4); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,26); - } -} - -/****************************************************************************** -* Encryption of a single block without any operation mode using SKINNY-128-384. -* RTK1 and RTK2_3 are given separately to take advantage of the fact that -* TK2 and TK3 remains the same through the entire data encryption/decryption. -******************************************************************************/ -void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, - const u32* rtk2_3) { - u32 tmp; // used in SWAPMOVE macro - u32 state[4]; // 128-bit state - packing(state, ptext); // from byte to bitsliced representation - QUADRUPLE_ROUND(state, rtk1, rtk2_3); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); - QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); - QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); - QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); - QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); - QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); - QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); - unpacking(ctext, state); // from bitsliced to byte representation -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.h b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.h deleted file mode 100644 index bda1e9b..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/skinny128.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); - -#define SKINNY128_384_ROUNDS 40 - -#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[0] ^= (rtk1)[0]; \ - state[1] ^= (rtk1)[1]; \ - state[2] ^= (rtk1)[2]; \ - state[3] ^= (rtk1)[3]; \ - state[0] ^= (rtk2_3)[0]; \ - state[1] ^= (rtk2_3)[1]; \ - state[2] ^= (rtk2_3)[2]; \ - state[3] ^= (rtk2_3)[3]; \ - mixcolumns_0(state); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[0] ^= (rtk1)[4]; \ - state[1] ^= (rtk1)[5]; \ - state[2] ^= (rtk1)[6]; \ - state[3] ^= (rtk1)[7]; \ - state[0] ^= (rtk2_3)[4]; \ - state[1] ^= (rtk2_3)[5]; \ - state[2] ^= (rtk2_3)[6]; \ - state[3] ^= (rtk2_3)[7]; \ - mixcolumns_1(state); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[0] ^= (rtk1)[8]; \ - state[1] ^= (rtk1)[9]; \ - state[2] ^= (rtk1)[10]; \ - state[3] ^= (rtk1)[11]; \ - state[0] ^= (rtk2_3)[8]; \ - state[1] ^= (rtk2_3)[9]; \ - state[2] ^= (rtk2_3)[10]; \ - state[3] ^= (rtk2_3)[11]; \ - mixcolumns_2(state); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[0] ^= (rtk1)[12]; \ - state[1] ^= (rtk1)[13]; \ - state[2] ^= (rtk1)[14]; \ - state[3] ^= (rtk1)[15]; \ - state[0] ^= (rtk2_3)[12]; \ - state[1] ^= (rtk2_3)[13]; \ - state[2] ^= (rtk2_3)[14]; \ - state[3] ^= (rtk2_3)[15]; \ - mixcolumns_3(state); \ -}) - - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.c b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.c deleted file mode 100644 index 1da4277..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.c +++ /dev/null @@ -1,368 +0,0 @@ -/****************************************************************************** -* Implementation of the SKINNY tweakey schedule to match fixslicing. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include //for memcmp -#include "tk_schedule.h" -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; - -/****************************************************************************** -* The round constants according to the new representation. -******************************************************************************/ -u32 rconst_32_bs[160] = { - 0x00000004, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000100, 0xfffffeff, 0x44000000, 0xfbffffff, 0x00000000, 0x04000000, - 0x00100000, 0x00100000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, - 0x00400000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffbfffff, - 0x01004000, 0xfefffbff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, - 0x00010410, 0xfffffbef, 0x00000054, 0xffffffaf, 0x00000000, 0x00000040, - 0x00000100, 0x00000100, 0x10000140, 0xfffffeff, 0x44000000, 0xfffffeff, - 0x04000000, 0x04000000, 0x00100000, 0x00100000, 0x04000001, 0xfbffffff, - 0x00140000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x00000000, - 0x01401000, 0xfebfffff, 0x01004400, 0xfffffbff, 0x00000000, 0x00000400, - 0x00000010, 0x00000010, 0x00010010, 0xffffffff, 0x00000004, 0xffffffaf, - 0x00000040, 0x00000040, 0x00000100, 0x00000000, 0x10000140, 0xffffffbf, - 0x40000100, 0xfbfffeff, 0x00000000, 0x04000000, 0x00100000, 0x00000000, - 0x04100001, 0xffefffff, 0x00440000, 0xffefffff, 0x00000000, 0x00400000, - 0x01000000, 0x01000000, 0x00401000, 0xffffffff, 0x00004000, 0xfeffffff, - 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00010400, 0xfffffbff, - 0x00000014, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000100, 0xffffffff, 0x40000000, 0xfbffffff, 0x00000000, 0x04000000, - 0x00100000, 0x00000000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, - 0x00000000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffffffff, - 0x00004000, 0xfeffffff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, - 0x00010400, 0xfffffbff, 0x00000014, 0xffffffaf, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x10000140, 0xfffffeff, 0x44000000, 0xffffffff, - 0x00000000, 0x04000000, 0x00100000, 0x00100000, 0x00000001, 0xffefffff, - 0x00440000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x01000000, - 0x01401000, 0xffbfffff, 0x01004000, 0xfffffbff, 0x00000400, 0x00000400, - 0x00000010, 0x00000000, 0x00010010, 0xfffffbff -}; - -/****************************************************************************** -* Pack the input into the bitsliced representation -* 24 28 56 60 88 92 120 124 | ... | 0 4 32 36 64 68 96 100 -* 25 29 57 61 89 93 121 125 | ... | 1 5 33 37 65 69 97 101 -* 26 30 58 62 90 94 122 126 | ... | 2 6 34 38 66 70 98 102 -* 27 31 59 63 91 95 123 127 | ... | 3 7 35 39 67 71 99 103 -******************************************************************************/ -void packing(u32* out, const u8* in) { - u32 tmp; - LE_LOAD(out, in); - LE_LOAD(out + 1, in + 8); - LE_LOAD(out + 2, in + 4); - LE_LOAD(out + 3, in + 12); - SWAPMOVE(out[0], out[0], 0x0a0a0a0a, 3); - SWAPMOVE(out[1], out[1], 0x0a0a0a0a, 3); - SWAPMOVE(out[2], out[2], 0x0a0a0a0a, 3); - SWAPMOVE(out[3], out[3], 0x0a0a0a0a, 3); - SWAPMOVE(out[2], out[0], 0x30303030, 2); - SWAPMOVE(out[1], out[0], 0x0c0c0c0c, 4); - SWAPMOVE(out[3], out[0], 0x03030303, 6); - SWAPMOVE(out[1], out[2], 0x0c0c0c0c, 2); - SWAPMOVE(out[3], out[2], 0x03030303, 4); - SWAPMOVE(out[3], out[1], 0x03030303, 2); -} - -/****************************************************************************** -* Unpack the input to a byte-wise representation -******************************************************************************/ -void unpacking(u8* out, u32 *in) { - u32 tmp; - SWAPMOVE(in[3], in[1], 0x03030303, 2); - SWAPMOVE(in[3], in[2], 0x03030303, 4); - SWAPMOVE(in[1], in[2], 0x0c0c0c0c, 2); - SWAPMOVE(in[3], in[0], 0x03030303, 6); - SWAPMOVE(in[1], in[0], 0x0c0c0c0c, 4); - SWAPMOVE(in[2], in[0], 0x30303030, 2); - SWAPMOVE(in[0], in[0], 0x0a0a0a0a, 3); - SWAPMOVE(in[1], in[1], 0x0a0a0a0a, 3); - SWAPMOVE(in[2], in[2], 0x0a0a0a0a, 3); - SWAPMOVE(in[3], in[3], 0x0a0a0a0a, 3); - LE_STORE(out, in[0]); - LE_STORE(out + 8, in[1]); - LE_STORE(out + 4, in[2]); - LE_STORE(out + 12, in[3]); -} - -/****************************************************************************** -* 0 4 1 5 -* 1 5 ---> 2 6 -* 2 6 3 7 -* 3 7 4 0 -******************************************************************************/ -void lfsr2_bs(u32* tk) { - u32 tmp; - tmp = tk[0] ^ (tk[2] & 0xaaaaaaaa); - tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); - tk[0] = tk[1]; - tk[1] = tk[2]; - tk[2] = tk[3]; - tk[3] = tmp; -} - -/****************************************************************************** -* 0 4 7 3 -* 1 5 ---> 0 4 -* 2 6 1 5 -* 3 7 2 6 -******************************************************************************/ -void lfsr3_bs(u32* tk) { - u32 tmp; - tmp = tk[3] ^ ((tk[1] & 0xaaaaaaaa) >> 1); - tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); - tk[3] = tk[2]; - tk[2] = tk[1]; - tk[1] = tk[0]; - tk[0] = tmp; -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, twice -******************************************************************************/ -void permute_tk_2(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,14) & 0xcc00cc00; - tk[i] |= (tmp & 0x000000ff) << 16; - tk[i] |= (tmp & 0xcc000000)>> 2; - tk[i] |= (tmp & 0x0033cc00) >> 8; - tk[i] |= (tmp & 0x00cc0000) >>18; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 4 times -******************************************************************************/ -void permute_tk_4(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,22) & 0xcc0000cc; - tk[i] |= ROR(tmp,16) & 0x3300cc00; - tk[i] |= ROR(tmp, 24) & 0x00cc3300; - tk[i] |= (tmp & 0x00cc00cc) >> 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 6 times -******************************************************************************/ -void permute_tk_6(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,6) & 0xcccc0000; - tk[i] |= ROR(tmp,24) & 0x330000cc; - tk[i] |= ROR(tmp,10) & 0x3333; - tk[i] |= (tmp & 0xcc) << 14; - tk[i] |= (tmp & 0x3300) << 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 8 times -******************************************************************************/ -void permute_tk_8(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0xcc000033; - tk[i] |= ROR(tmp,8) & 0x33cc0000; - tk[i] |= ROR(tmp,26) & 0x00333300; - tk[i] |= (tmp & 0x00333300) >> 6; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 10 times -******************************************************************************/ -void permute_tk_10(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc330000; - tk[i] |= ROR(tmp,26) & 0x33000033; - tk[i] |= ROR(tmp,22) & 0x00cccc00; - tk[i] |= (tmp & 0x00330000) >> 14; - tk[i] |= (tmp & 0xcc00) >> 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 12 times -******************************************************************************/ -void permute_tk_12(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc33; - tk[i] |= ROR(tmp,30) & 0x00cc00cc; - tk[i] |= ROR(tmp,10) & 0x33330000; - tk[i] |= ROR(tmp,16) & 0xcc003300; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 14 times -******************************************************************************/ -void permute_tk_14(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0x0033cc00; - tk[i] |= ROR(tmp,14) & 0x00cc0000; - tk[i] |= ROR(tmp,30) & 0xcc000000; - tk[i] |= ROR(tmp,16) & 0x000000ff; - tk[i] |= ROR(tmp,18) & 0x33003300; - } -} - -/****************************************************************************** -* Precompute all LFSRs on TK2 -******************************************************************************/ -void precompute_lfsr_tk2(u32* tk, const u8* key, const int rounds) { - u32 tk2[4]; - packing(tk2, key); - memcpy(tk, tk2, 16); - for(int i = 0 ; i < rounds; i+=2) { - lfsr2_bs(tk2); - memcpy(tk+i*4+4, tk2, 16); - } -} - -/****************************************************************************** -* Precompute all LFSRs on TK3 -******************************************************************************/ -void precompute_lfsr_tk3(u32* tk, const u8* key, const int rounds) { - u32 tk3[4]; - packing(tk3, key); - tk[0] ^= tk3[0]; - tk[1] ^= tk3[1]; - tk[2] ^= tk3[2]; - tk[3] ^= tk3[3]; - for(int i = 0 ; i < rounds; i+=2) { - lfsr3_bs(tk3); - tk[i*4+4] ^= tk3[0]; - tk[i*4+5] ^= tk3[1]; - tk[i*4+6] ^= tk3[2]; - tk[i*4+7] ^= tk3[3]; - } -} - -/****************************************************************************** -* XOR TK with TK1 before applying the permutations. -* The key is then rearranged to match the barrel shiftrows representation. -******************************************************************************/ -void permute_tk(u32* tk, const u8* key, const int rounds) { - u32 test; - u32 tk1[4], tmp[4]; - packing(tk1, key); - memcpy(tmp, tk, 16); - tmp[0] ^= tk1[0]; - tmp[1] ^= tk1[1]; - tmp[2] ^= tk1[2]; - tmp[3] ^= tk1[3]; - for(int i = 0 ; i < rounds; i += 8) { - test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P - tk[i*4] = tmp[2] & 0xf0f0f0f0; - tk[i*4+1] = tmp[3] & 0xf0f0f0f0; - tk[i*4+2] = tmp[0] & 0xf0f0f0f0; - tk[i*4+3] = tmp[1] & 0xf0f0f0f0; - memcpy(tmp, tk+i*4+4, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_2(tmp); // applies P^2 - else - permute_tk_10(tmp); // applies P^10 - tk[i*4+4] = ROR(tmp[0],26) & 0xc3c3c3c3; - tk[i*4+5] = ROR(tmp[1],26) & 0xc3c3c3c3; - tk[i*4+6] = ROR(tmp[2],26) & 0xc3c3c3c3; - tk[i*4+7] = ROR(tmp[3],26) & 0xc3c3c3c3; - tk[i*4+8] = ROR(tmp[2],28) & 0x03030303; - tk[i*4+8] |= ROR(tmp[2],12) & 0x0c0c0c0c; - tk[i*4+9] = ROR(tmp[3],28) & 0x03030303; - tk[i*4+9] |= ROR(tmp[3],12) & 0x0c0c0c0c; - tk[i*4+10] = ROR(tmp[0],28) & 0x03030303; - tk[i*4+10] |= ROR(tmp[0],12) & 0x0c0c0c0c; - tk[i*4+11] = ROR(tmp[1],28) & 0x03030303; - tk[i*4+11] |= ROR(tmp[1],12) & 0x0c0c0c0c; - memcpy(tmp, tk+i*4+12, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_4(tmp); // applies P^4 - else - permute_tk_12(tmp); // applies P^12 - for(int j = 0; j < 4; j++) { - tk[i*4+12+j] = ROR(tmp[j],14) & 0x30303030; - tk[i*4+12+j] |= ROR(tmp[j],6) & 0x0c0c0c0c; - } - tk[i*4+16] = ROR(tmp[2], 16) & 0xf0f0f0f0; - tk[i*4+17] = ROR(tmp[3], 16) & 0xf0f0f0f0; - tk[i*4+18] = ROR(tmp[0], 16) & 0xf0f0f0f0; - tk[i*4+19] = ROR(tmp[1], 16) & 0xf0f0f0f0; - memcpy(tmp, tk+i*4+20, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_6(tmp); // applies P^6 - else - permute_tk_14(tmp); // applies P^14 - tk[i*4+20] = ROR(tmp[0], 10) & 0xc3c3c3c3; - tk[i*4+21] = ROR(tmp[1], 10) & 0xc3c3c3c3; - tk[i*4+22] = ROR(tmp[2], 10) & 0xc3c3c3c3; - tk[i*4+23] = ROR(tmp[3], 10) & 0xc3c3c3c3; - tk[i*4+24] = ROR(tmp[2],12) & 0x03030303; - tk[i*4+24] |= ROR(tmp[2],28) & 0x0c0c0c0c; - tk[i*4+25] = ROR(tmp[3],12) & 0x03030303; - tk[i*4+25] |= ROR(tmp[3],28) & 0x0c0c0c0c; - tk[i*4+26] = ROR(tmp[0],12) & 0x03030303; - tk[i*4+26] |= ROR(tmp[0],28) & 0x0c0c0c0c; - tk[i*4+27] = ROR(tmp[1],12) & 0x03030303; - tk[i*4+27] |= ROR(tmp[1],28) & 0x0c0c0c0c; - memcpy(tmp, tk+i*4+28, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_8(tmp); // applies P^8 - for(int j = 0; j < 4; j++) { - tk[i*4+28+j] = ROR(tmp[j],30) & 0x30303030; - tk[i*4+28+j] |= ROR(tmp[j],22) & 0x0c0c0c0c; - } - if (test && (i+8 < rounds)) { //only if next loop iteration - tk[i*4+32] = tmp[2] & 0xf0f0f0f0; - tk[i*4+33] = tmp[3] & 0xf0f0f0f0; - tk[i*4+34] = tmp[0] & 0xf0f0f0f0; - tk[i*4+35] = tmp[1] & 0xf0f0f0f0; - } - } -} - -/****************************************************************************** -* Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst. -******************************************************************************/ -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3) { - memset(rtk, 0x00, 16*SKINNY128_384_ROUNDS); - precompute_lfsr_tk2(rtk, tk2, SKINNY128_384_ROUNDS); - precompute_lfsr_tk3(rtk, tk3, SKINNY128_384_ROUNDS); - permute_tk(rtk, (u8*)(rtk+8), SKINNY128_384_ROUNDS); // rtk+8 is NULL - for(int i = 0; i < SKINNY128_384_ROUNDS; i++) { // add rconsts - for(int j = 0; j < 4; j++) - rtk[i*4+j] ^= rconst_32_bs[i*4+j]; - } -} - -/****************************************************************************** -* Precompute RTK1. -******************************************************************************/ -void precompute_rtk1(u32* rtk1, const u8* tk1) { - memset(rtk1, 0x00, 16*16); - permute_tk(rtk1, tk1, 16); -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.h b/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.h deleted file mode 100644 index 5615cbd..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1+v12/opt32/tk_schedule.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef TK_SCHEDULE_H_ -#define TK_SCHEDULE_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -void packing(u32* out, const u8* in); -void unpacking(u8* out, u32 *in); -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3); -void precompute_rtk1(u32* rtk1, const u8* tk1); - -#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) - -#define XOR_BLOCKS(x,y) ({ \ - (x)[0] ^= (y)[0]; \ - (x)[1] ^= (y)[1]; \ - (x)[2] ^= (y)[2]; \ - (x)[3] ^= (y)[3]; \ -}) - -#define SWAPMOVE(a, b, mask, n) ({ \ - tmp = (b ^ (a >> n)) & mask; \ - b ^= tmp; \ - a ^= (tmp << n); \ -}) - -#define LE_LOAD(x, y) \ - *(x) = (((u32)(y)[3] << 24) | \ - ((u32)(y)[2] << 16) | \ - ((u32)(y)[1] << 8) | \ - (y)[0]); - -#define LE_STORE(x, y) \ - (x)[0] = (y) & 0xff; \ - (x)[1] = ((y) >> 8) & 0xff; \ - (x)[2] = ((y) >> 16) & 0xff; \ - (x)[3] = (y) >> 24; - -#endif // TK_SCHEDULE_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/LWC_AEAD_KAT_128_128.txt b/romulus/Implementations/crypto_aead/romulusm1+v13/LWC_AEAD_KAT_128_128.txt new file mode 100644 index 0000000..24ecfd7 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/LWC_AEAD_KAT_128_128.txt @@ -0,0 +1,7623 @@ +Count = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = +CT = 1866911F9E436083F788BBF27C62180A + +Count = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00 +CT = 111C6F780802BB6A6E8686408FF08D6A + +Count = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001 +CT = E2D3227EB942543A4988C59C16B696DD + +Count = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102 +CT = 08FECA98C7581ACFC042AA3CC5CD5408 + +Count = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203 +CT = 60E45A18AA85AC51E74AF13DB36308F5 + +Count = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001020304 +CT = 74A33F25C1AE488B07190F868E3421EB + +Count = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405 +CT = 86D53E9861FE1DB8277CF50801100EBA + +Count = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203040506 +CT = 3518A21D26C30E8CBADED094B5ACA042 + +Count = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001020304050607 +CT = 2135BA52B0149CDF777D08B5F04BEF0A + +Count = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708 +CT = 93C4A4AF1910FAA1F5342C14551D2FC2 + +Count = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203040506070809 +CT = 744ACC075CECF6A1A1E1B2DABDA34987 + +Count = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A +CT = 65166EBBF08569C2A1C996AE79034419 + +Count = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B +CT = 109D49FFFC203DE880126A9B1473EDFC + +Count = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C +CT = 27337EB7055C8657599BFAC630D35C6E + +Count = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D +CT = 6BA056F320349BAC9594761A9C0C0A75 + +Count = 16 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E +CT = 80B644B84609B497FF568AE3C098AA94 + +Count = 17 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F +CT = 57E3E2A18ED55AD98985FA605F0E0FCB + +Count = 18 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 2C3AD5CF835E9F421941BF4B091F4D34 + +Count = 19 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 08B703395B691DA9C8BC97EA4A6291DA + +Count = 20 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = B254818D0F5BC9D4BEAB28205168B495 + +Count = 21 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4A9759BD7CD841FF07B1EE49EEC0538C + +Count = 22 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 4A2D5D6E78CA57A018A3E764694D5528 + +Count = 23 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 5C561DA38DE44FD650E49E87FD9E7AB1 + +Count = 24 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 507AC27E02F1E7205D39D0AD05353BAE + +Count = 25 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 61DEBA7A6AAC4A8169D4F96834373969 + +Count = 26 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = D51A0C104B90A6A0C3BE54692FBD2265 + +Count = 27 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 2C5CAEA5D2942CEC970FFBE0B939B558 + +Count = 28 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = C0CEC1425764810F09E6CB9452DE3C10 + +Count = 29 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = C57C2765B00216FBF5F0B4020095F054 + +Count = 30 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = DAFC784AF1090DD7E7295D32304250DB + +Count = 31 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 9CCD6981AFEA2118FD62C0EFA090483B + +Count = 32 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 5F588E7A5925ABBF3C715D1E6143323C + +Count = 33 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 54060E93F5733CBE709EA1F12E203BE6 + +Count = 34 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = +CT = BE8291743705C8BDE2D0BD5725D31FF045 + +Count = 35 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00 +CT = DE7F7EBE417335CB5A33413834769E8C13 + +Count = 36 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001 +CT = 5AB470885A182486B85CD7B8D7FFDD005C + +Count = 37 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102 +CT = B76B85778627FB371A9F2CCFBFEF6FFE1C + +Count = 38 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203 +CT = 5F36B380E3B43CF0C03AE079E7DC41FDA3 + +Count = 39 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001020304 +CT = 80AA1348466930003C89C22A6DA94763DB + +Count = 40 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405 +CT = 3D2E15FFAE9B18948BB130E43EB6F73DB7 + +Count = 41 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203040506 +CT = 0E4948B96A314B623A6BB43DC2011027CB + +Count = 42 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001020304050607 +CT = 665986EC404C2AE1B8E14F0F005B02BC22 + +Count = 43 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708 +CT = 23A55991578C354221D816C8EFE92F1E99 + +Count = 44 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203040506070809 +CT = E691EC26BBCC5577FD8B63FD12DF87D63E + +Count = 45 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A +CT = E26A46BBBDF45898D6381C867BD4F2638A + +Count = 46 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B +CT = 57D4DFAE7876EA0CF0B9AE0C09DC67643D + +Count = 47 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C +CT = 64444F7536FB24788C9B4B4A6F62A43571 + +Count = 48 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D +CT = 728BE459D195830EB45B0DD4BF0C4EF0ED + +Count = 49 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E +CT = 1E3B87A4B0EB36BBBB02B3E43D278B6511 + +Count = 50 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F +CT = 2C738F2F926BC61AF03510269B4BB4FEBD + +Count = 51 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = B24DDCB567783BB641AECDA7D5A0D0F88C + +Count = 52 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = A7AAF5AAA0419EA54AAC1F6C839AFFAB18 + +Count = 53 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 790ECA0E742B0DF8AAAFA3CCA05B743696 + +Count = 54 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = C661EB47B8FF0D361F7C06DA2DAC347448 + +Count = 55 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = DC9C74F367971E1D5E365B3691779719EA + +Count = 56 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 514F4354EE83B5580F44CFD7ED7096C815 + +Count = 57 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 4B442169B930AD35E09C9A8039CA19D4AD + +Count = 58 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = C2E1BC1A2B115CD68C9A4164B00B29F139 + +Count = 59 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = A84FB3DE1AFA66C4C0456606E72E2EBD2F + +Count = 60 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 8B0554D00C4E7C34ADBA3FDFA1D4E78465 + +Count = 61 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 6BAF7085DC27B1F26C8B02066C4BC2D8F3 + +Count = 62 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 3782782251FF07FAC7C014713E217B1F33 + +Count = 63 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 77FD8D8B7748FFEAF2D870AAC859B43C8D + +Count = 64 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = B5C0A52FD541B67C4A3B5CB6E0110C0C79 + +Count = 65 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 4D445A9FB60A2A8BA51191FEBC7304DE64 + +Count = 66 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 510F1974FF3E635493C5DDEFCC4FFCFA58 + +Count = 67 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = +CT = 9145C38D138AE14EF990D9764F21DADCF9E1 + +Count = 68 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00 +CT = A08D2A742EEA81932BCCB7BFFFA1E5973448 + +Count = 69 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001 +CT = D2E9C4C1D8086447746ED12C7C67431343AA + +Count = 70 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102 +CT = 4E61124FED01E2B532D24D4565F152CB13D3 + +Count = 71 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203 +CT = 105D090DA529ABC8E05CDB562CE8D6E30A50 + +Count = 72 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001020304 +CT = AA63CFCC46215F2FC5B7DAD4C86CBCFD816A + +Count = 73 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405 +CT = DE3BDCD09480939D1C0D41841C6AD718BE7B + +Count = 74 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203040506 +CT = 87E0CB7729C4E5785882B7A10C5CBDD5093F + +Count = 75 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001020304050607 +CT = 9DF41431805E053AD2BBDAA9461B403A3BC5 + +Count = 76 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708 +CT = 1EAD6425C8B8DBB6DF0F945A3CDA39003F35 + +Count = 77 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203040506070809 +CT = 04B69D6A746BDB459B3A988FD06D0EAC833C + +Count = 78 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A +CT = 849F663D6768A4E12AD1F0CC245AFCC3C9FF + +Count = 79 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B +CT = 5DD42CCEA55A3C02487FDD52CEF4AC34BC54 + +Count = 80 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C +CT = FB5BE429DF3540365A4C9F0B41EAD3E8B83C + +Count = 81 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D +CT = 8589780FE636BF46AD9EFBD07CCEACD44492 + +Count = 82 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E +CT = 30C09C4708A6146BB8E5021C53E16702D706 + +Count = 83 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F +CT = 4F4E73BDEE492E821C0C3764909D5A4F8E33 + +Count = 84 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = C83106933C1BE63DAF1F53FA3C2D14DDDE72 + +Count = 85 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 13F32B1E085CEA7B61F89FA7F6D93872D5C5 + +Count = 86 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 5EF95AB5580C0EDE339B69F817F743FC11EB + +Count = 87 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 14BBFAC7B55EF98BDC3EB99A77C6BC787FD8 + +Count = 88 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = EC649998DA26A01903EA309D3A6ED31ED34D + +Count = 89 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = F34A897960EED48EFAD7F65EB203E204FB64 + +Count = 90 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 0D2497730BD17DD2F94C0B250BB7245EBEF0 + +Count = 91 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 54998778D0CF45036A5B7067802681A17A81 + +Count = 92 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 449AF852D84E15F42B57C9BB633FFBA81051 + +Count = 93 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = FD6B33BE4B9838779A9832BD6476DAB34FF4 + +Count = 94 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 910AA2387C8A3C9F2EA16D823D76F2236ECA + +Count = 95 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 5CC4B9B394D5917BF8EE902172B2E8965BCA + +Count = 96 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 4A7E4078E9C50B5C876EBE5760C8BBC40EFE + +Count = 97 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 912ECB572B81B51D5BB9E1EEE18FDD663E30 + +Count = 98 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 8499D56D8229870F105531F5B09F23AFC56B + +Count = 99 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 0049FAC9401CC458CAE9F2963DB475C733C3 + +Count = 100 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = +CT = 1F9CC58CA6ADA5640D42ADC3BEA0C8A02C3770 + +Count = 101 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00 +CT = CED387058D20377F9E3E4B52CCDC3646EC8FFB + +Count = 102 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001 +CT = A7190537E398103EB9BD2A2E5A631028914DA5 + +Count = 103 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102 +CT = A5AE33040B2F8A92A80104F63AD270C322C445 + +Count = 104 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203 +CT = 349ADB83A847F2CD9C6DC8945679B2EB8559C8 + +Count = 105 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001020304 +CT = E9F6362578F03054AA8A4B0797BE3634E39BF8 + +Count = 106 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405 +CT = E59E0E5624695996B61CEDB3B72A28B3F22674 + +Count = 107 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203040506 +CT = 40FB811547A168CC2F259349638C24531BAE42 + +Count = 108 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001020304050607 +CT = 01603729FAD23B7C3F20892AE36181E0B83B21 + +Count = 109 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708 +CT = 889344A705B5D3D8A875E038CBB9B325B79B4E + +Count = 110 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203040506070809 +CT = 62E2B16006FC76BC528E67BC9EC703CFD31D86 + +Count = 111 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A +CT = B2D7F8C11A12002DFAB9F76797AE2398313884 + +Count = 112 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B +CT = 2E083EA4726C3CC002364E698676FD90393A8A + +Count = 113 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C +CT = CDCCFC09FB902F2203C49F617F3615D317C087 + +Count = 114 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D +CT = 78265933C8F04C935B8B4F8CB31E62BF54185E + +Count = 115 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E +CT = D6ACD80CF8A77A3B425FD6B818A43F8B481A55 + +Count = 116 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F +CT = 7362F95E2CFD58B37E7C973A62AE2817B86A58 + +Count = 117 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 0DAD3DE636CFBAAD428366D5CCE437658D87CD + +Count = 118 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 0B8AEA03CEB2EC21BB8A361A70119DE18E759E + +Count = 119 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F77AD020F72D4CDCAE3EB4187F318556557844 + +Count = 120 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22EAB85725FE7DBB4ACE5BAA4A5DD161B9D1ED + +Count = 121 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 6876FAA5798052969D2A3575C435849CBCDAA1 + +Count = 122 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 4E723B024D913E886B0B2D966BA790DE10ED3C + +Count = 123 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 5CEB2D35F4694708C46BA39E5E25777D18F2D0 + +Count = 124 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E3A37D66523AA7128C48C5F5A3F2A09E380649 + +Count = 125 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 18A1A8ADFE1F8A3D1133B1D2B60E2515E12CC4 + +Count = 126 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5453A60186713304E5360212E415DF759C4864 + +Count = 127 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = AB0F4BD15A7D32A1943A7F6C21CA396F988CC0 + +Count = 128 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 7B68957B2358E17F79D02A2340F2F0D0287052 + +Count = 129 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A286A5452A74AC9B176DBB0AAEF20D707BB809 + +Count = 130 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 48164B35EE4D16BECB4C435E0C70439B172F1E + +Count = 131 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 9EE4690D356E15188E16DAA6A46B9340BC5FCC + +Count = 132 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 86C8328858D597DF070FEB18BACE174BD8BD8B + +Count = 133 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = +CT = 52F8B8B389D7EA60E553BD3815C0BCB02678F75D + +Count = 134 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00 +CT = 7792D2B8BF9D4842F7361C5692C2C81A08D01F61 + +Count = 135 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001 +CT = A950D1B265AC89779916BB39A4DFFC447F458A2F + +Count = 136 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102 +CT = 8E9AC9091ABD41C246A435776E42607AFB72D2C8 + +Count = 137 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203 +CT = 30B51FDAEF4F976076299BD1E876323A58E2CC89 + +Count = 138 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001020304 +CT = A848C61C995A81EA34359C6E1AC0988DB4C02828 + +Count = 139 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405 +CT = 582C0A1622ECD65DFCE4AD5246CB9AABC05F1927 + +Count = 140 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203040506 +CT = 3E8C31FF15E979822B7AD2EEB0C0B42F4C892035 + +Count = 141 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001020304050607 +CT = 29C56C408E5EB79E281147233754DD9ECA3281C2 + +Count = 142 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708 +CT = 30050F7623EBB8AE7B1D8AA8D4B2EE54C2D482F5 + +Count = 143 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203040506070809 +CT = 4297B6C49D71E4455B8AD4D6A516EC02E0D562E2 + +Count = 144 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A +CT = E1D2D846A23FDAC10172B1E5506C7D0F2B5B7AAD + +Count = 145 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B +CT = E3CBF370C48C4550A07CA5007172A9FB3CCB700A + +Count = 146 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C +CT = 6AD38CEDD18A8A7BF3E08FFE4286A5D376C63211 + +Count = 147 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D +CT = 08FA27B58394D5C7C0C859FCAF19F9C6453AA0E7 + +Count = 148 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E +CT = 57969EF1F480906DE807A4A8081A5535FC3EB4C6 + +Count = 149 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F +CT = CD6C770125FF572E8974885C8D20E41C60E720C6 + +Count = 150 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = FDD39CBE20BFAD461973C137573E7866B5B1F31B + +Count = 151 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = F234ABD0C0DB6F17A54F007E752FB7C46A00EAB7 + +Count = 152 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = B0B7B1ABB1952BD5C53EF23A868EE02DC51F00C2 + +Count = 153 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4E7A4C2587E214FA918C967CDDFD45F81AE24A20 + +Count = 154 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = C3EC1A08266CBCFE3757D64D828CCDD771277374 + +Count = 155 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E66BF84F0415EFD391DDD47F70DB9F9D2D736B1B + +Count = 156 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 6D676EFDC9CBFC49F5D43172A340B267721892E9 + +Count = 157 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 5C9647B5333FE0C97114D7033EA125BBBB732CAA + +Count = 158 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 4AC6B18AF1D24341583B2A17112376657987344F + +Count = 159 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 130D9D8B0447B6B0B8659DFF6C31B8C223E75707 + +Count = 160 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 82D2F091558E3DBADEA5987C9CC68A76AAEABB1D + +Count = 161 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 082455375C773436D6AA28A7220198E0805C6854 + +Count = 162 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = C10516FEB4C47005CA6A411E121F61C1ED7F2CD2 + +Count = 163 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = B490384378915B2DC3B261B29A5D155EB81F8CA0 + +Count = 164 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 464635F56E2C6C120069883AF236EB07F0551BDB + +Count = 165 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = FC61E5D3226627035C91E7C4B327208C07ADEEF6 + +Count = 166 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = +CT = 668683BB1C3BA41F8349E43C58AB7BFE2D0524590B + +Count = 167 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00 +CT = A0E8B15DFC3F0DB2815424A51391D59A92FF7606D1 + +Count = 168 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001 +CT = 72B323F0214CE115F219514C09F632A5423F22B889 + +Count = 169 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102 +CT = 723E0DDD99C88B0B7212E0ADE60C74DFC2D9CFCA0C + +Count = 170 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203 +CT = 7CE2DBC1AF73BEDB29D49A11338922F8D3617D5B0A + +Count = 171 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001020304 +CT = B349A0E768838B0C588C3E9C36603BF4E6218D0E91 + +Count = 172 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405 +CT = C37DECC657708111DDA30E39E95FF2CAD438F2162F + +Count = 173 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203040506 +CT = 315C388D3761D32F3710B9F363A357CDC4CBEEE79B + +Count = 174 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001020304050607 +CT = 28EBC6F6E802676E53BB8923A0DD4C8F34762F0D73 + +Count = 175 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708 +CT = 0BBB1F77B64E4A1CE3CC912BF080B1CD3DD0B9D150 + +Count = 176 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203040506070809 +CT = 3634CC549D379CC61F2B9F6FA233BFB9988B541D76 + +Count = 177 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A +CT = DACD4B7B4E8920C2B5A81C445089465F882FC0A60C + +Count = 178 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B +CT = A6D65328BEF4A8F4F0B0639A3BF538AEE512C8A9FB + +Count = 179 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C +CT = 66840C7FA1026DAE7D30F04624BD0939371F048713 + +Count = 180 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D +CT = 92213F364C69746BBA2B49789BCE74C831E0771B76 + +Count = 181 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E +CT = 9063CD25D2730D6BF13C1F8BB9892BDAEE78C27820 + +Count = 182 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F +CT = FC7EE5F876EA35178A7E9CD53ED37EC205AEBCD8E5 + +Count = 183 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = D0918CD46793FC5BA18EE5134CD46D10F43B88B851 + +Count = 184 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = B5D9F315DFF7CA27D95975F2418A60877A375A0B8F + +Count = 185 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 2E16C86E5EA365E0FCFB6474DF73179739EBC45229 + +Count = 186 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 1198EB0732468AC2F26C25D0DE704AE992F8804F8C + +Count = 187 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 7B7135A83C3A853A7DE67F41B2AA1D97519673479E + +Count = 188 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = A294A6543F683929561B403CE56E41A4BA7239DBAC + +Count = 189 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 2654399A67AD4217B6EC9D5C6FD426C467317A2944 + +Count = 190 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 9B3F560FD44AD82060A1F351D2BDD2E00BCCA673EA + +Count = 191 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 442DBFA7B4B9BBFE9DAD9364114B9240476674FF43 + +Count = 192 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = B6BBF55DB33B277C39F6450073AE60D62FE139D2D8 + +Count = 193 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = C5710D63CFBBA0EEE6783BD205771A8B6181CB3E14 + +Count = 194 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = C35451F637A2F8BB7359B4F8E0ECA036537C8CD709 + +Count = 195 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D14CFE8CE8D02366E0E4A34BC7B0B450C9AB77C093 + +Count = 196 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 44B4327D69BD27ED907C659228F1B0648A98713CF3 + +Count = 197 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = FE5B58DDEE1F0D2C4839076860E12ED48528E8C759 + +Count = 198 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 45C5573B47720A3D07091F192C9E75E7FD0E9DC8CF + +Count = 199 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = +CT = B601801AB242B97DE6F81CAF00E5415C7D790C95E1BA + +Count = 200 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00 +CT = 9AC5FBD1C98A09D3AFB6E52BAB48678D408CE54C85F8 + +Count = 201 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001 +CT = 57CE537331ECB95A13128DBCEAE808D753EBCE3E1C32 + +Count = 202 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102 +CT = BDD19CCDBD35839CF47245722C6C3A7D4F74368C981D + +Count = 203 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203 +CT = 6527B2B1E055FFCC2129049A715F3C28997E2CB0BDD0 + +Count = 204 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001020304 +CT = 7AB42CBAAA7985A70DD4E0140A7C6138D294CE441635 + +Count = 205 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405 +CT = 87B180CD60FF68638EBCC7366482B7D909CC793C3B47 + +Count = 206 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203040506 +CT = 8186A2FE01278442C3498085B38ABAA28F7EFD481DDD + +Count = 207 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001020304050607 +CT = 11D04FD0BFE2152DE585872109059B23C9CE5E69E6DB + +Count = 208 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708 +CT = 45B1D346226B655632AA2738E69D24E4C30A866B3B30 + +Count = 209 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203040506070809 +CT = EC4B8EB711E689B277C2012D14C939C83CE25FEE7DCE + +Count = 210 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A +CT = 7EF628C8D41A5A2E8224B83A40AF02231E3503B85A11 + +Count = 211 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B +CT = CE4B380C6E8DD15EC797562A3A0A3A823FFF9BF5841C + +Count = 212 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C +CT = 3F4DE7CC1C3B0B4C7C23671AD513D3E91F9E279BA206 + +Count = 213 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D +CT = B3D8CE3BC3C29D18FDED15A5C6DFC84FADFF77008D69 + +Count = 214 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E +CT = D5C18093F54F0269D05318E5F0C6F780FE234DC7BCD0 + +Count = 215 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F +CT = AAB087EF4412209E47AF4D051EEB40CCED8E368C601F + +Count = 216 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = EBF9E2F644C60BF34E3BCECD4A2BD49BFDE857B1A307 + +Count = 217 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = B3E47389B37E4A72754756DE3C1C57A8B9B9A7D85AC8 + +Count = 218 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 69D874E0AEADA8964045B377B493B3602C62D03A62FE + +Count = 219 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 5F37BB2856D017512CCDC5C9BF779B37FD558393F68A + +Count = 220 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 655CB01A3970499157C4113D7CC50478366CF605C654 + +Count = 221 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 8F90E093417BF26101560F0B20ACFE394460A9303E9D + +Count = 222 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = DFD1193E5C2CC19B7D2564244158BCD111B4CF831446 + +Count = 223 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 7A6AC6649D7330F4BAE0C3C7633045BD6A180AF523E5 + +Count = 224 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = D0AA0E752389BAAEA6FE88A4AE63DF8A376DDBB10A40 + +Count = 225 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 99991751D8FE6C9F312C3E8DA0A9896F6EB671150899 + +Count = 226 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 2DDD2CB715E5CE8B6747ED8B344A0FECCD8DFB0178B4 + +Count = 227 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = CD23CDDF6EAC59D5CD2EA2C370DF8655E536B936AA0A + +Count = 228 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 1E30686EEA1CCE448E297901FAA7DDD3A71ABD79930B + +Count = 229 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 53EC287FF428603831A066715AEF0F7A4AD9BFF039EC + +Count = 230 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = F6D8DFEA6CC2A0B23900C4AE5FC4D9E32E53C94F0B37 + +Count = 231 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = F9AF95B65D16B69CE27FCE727B7EC237D69576113058 + +Count = 232 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = +CT = 80B77A443964F70CAB4E19C3C95B570E6FB7C566F2A8FE + +Count = 233 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00 +CT = 2D94005D91611D7AB6D96EAC7A7A3220625A049D8C91EA + +Count = 234 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001 +CT = FAA0BCFB5E305087F4B6313153EFB5CFCBC4EB68B99D96 + +Count = 235 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102 +CT = 208293D2A9BA26179C0D601247D12B57464BAD31347688 + +Count = 236 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203 +CT = DBE6D14215FC0F3C87DBFFC6930C237DE46241DABE153D + +Count = 237 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001020304 +CT = B434FC4F60DE7898AB4ABB8BF927F75B69FAC15CA507A0 + +Count = 238 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405 +CT = F274176FB6C70909D600D8B35F1F821E91570F284E8D90 + +Count = 239 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203040506 +CT = 85C5F80D67E07EAA56BE9354907297B7523F4E9CB9E878 + +Count = 240 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001020304050607 +CT = 75DE105677161C67068D7B0E5E08EFEF2C0B99CE0D7085 + +Count = 241 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708 +CT = E080D952A102342A3CF8674C37BA5F58EB3D16BFE2871A + +Count = 242 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203040506070809 +CT = F85897CFE56E388702428A05960DBDA9705BFE2A7DCAA4 + +Count = 243 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A +CT = 5B21E22E1BFD9349F8CDBF2DCD3CCDF8EBB99004BB2E91 + +Count = 244 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B +CT = 44EAF432478DEE05DF061164C6AF6A0DE633F5B94BDDEF + +Count = 245 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C +CT = FC99C2F09FBBD294BB3BD84EFC0D373294463C3B4F78D9 + +Count = 246 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D +CT = DF88C757C73AB3DF013EFD19C02DD6A48A76C535D42D2D + +Count = 247 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E +CT = 471FD774E2DAF55E73AA3B425944CEDFABA77B443E0194 + +Count = 248 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F +CT = 6689ABDE126B660C20EF6C3BAF8B0F9C1E855811353820 + +Count = 249 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 4EA6A82E266428BE4A835CED94343EAFCB6775BDBC27F6 + +Count = 250 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = AE26127556DB4580B11E24CABA083C0AE48BD0E7AF881D + +Count = 251 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F772EBB2AF94F4F43860679202E287E8A02850DF8EEAEB + +Count = 252 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 426D27EF11CFECCB49FCF63CB67B297E48EBC2E02D5AE1 + +Count = 253 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = EAEA48561C45F2D3BA92E3E715CF9AE814F9C735802CEC + +Count = 254 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 58DCC72E1EDB100F7DAEAADFD6A8A9E09555F6B14D6E1E + +Count = 255 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22BD7B6396B41E0E600997E22722165E55C7969BC0DF41 + +Count = 256 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = D14254DBB959C95EAC5A489CB64AFEABB0681BFB51F912 + +Count = 257 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 76735A1B28F97E2566463803DDF6E38B06838DC40F822D + +Count = 258 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 05C75C49522C09765DB5BD7CB2CAD5399ED633F1A282DA + +Count = 259 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = CB84E1D35E404717C7D21DC6DC444296C79F67F9F16907 + +Count = 260 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = F1952BF75C2A8BAFDF09A8346CE68F9C2B14272734BDAC + +Count = 261 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 19BA8AA196331CDD954987C25B354E0D646C12D6AF0D8D + +Count = 262 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 6ED1DF1380E32F24A01842B1E94CBCC4F796A14F3D3736 + +Count = 263 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 3AE914041DDF011B1CA0EF66DF6CEE9E529211A507EB57 + +Count = 264 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 6B6664889477990133AB3C052EC44C8E06B8D22D817AC7 + +Count = 265 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = +CT = EE55F50DFAAD7EB04E1037F108C966AC463136174A840B0A + +Count = 266 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00 +CT = 6A4BB5E586D8C83657ACCD14A90BCFA855C43330A49DFD97 + +Count = 267 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001 +CT = 29BE233A4F6CC964AAA1794F5186C1B4DD1DB86924CD3D11 + +Count = 268 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102 +CT = 1CEE79926AE087F4A5F11B78E49DAF64B28A02DB0F5AC6A5 + +Count = 269 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203 +CT = BC1CAC6CFAB3B4F14AF8A9EEF115F7239508A6FBA474174C + +Count = 270 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001020304 +CT = 323FBAB5FB96A9F1C22E0BC2E30E88D35DE06DF190E5168F + +Count = 271 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405 +CT = 649BC51F8399B1DE0BE9DB3608F53BA849BA7B5CEFC86213 + +Count = 272 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203040506 +CT = 2C6338B66C2319C1A01B0203A803FFF1EC6F915586266AE6 + +Count = 273 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001020304050607 +CT = B53F0A5FDF4258046EC677F00282955B0551E621DE957B2C + +Count = 274 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708 +CT = D5DCF61CD7BE7644153AF1B0F6E9366E43F2FFFFB2763C6E + +Count = 275 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203040506070809 +CT = 030481E435D0957CFEAF1249C3502CEAA94A7C80002DF893 + +Count = 276 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A +CT = FD6102CA26CDA445B3FB25F4241D7E09881E084C07A72449 + +Count = 277 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B +CT = 3138D1640651C5E3E339235F9163DC48AFE03367A56FA43B + +Count = 278 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C +CT = 17DBF78E0B3964C0C2B0DC580F53038E452FF895EEDAD827 + +Count = 279 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D +CT = EFF49B796890B5B65BAF95E70CFFE4397811971BAAAFA7BE + +Count = 280 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E +CT = BD23BDE6C3CA82CE4A4ADC63DF766A26952E1BC3D47B7664 + +Count = 281 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F +CT = B904C08FB78E0F5127765D113B79B16F3C99C9E9194F9672 + +Count = 282 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = FAA7AD47DA0F14DBB11F25E82F7EB62A6EEFE396D210BB68 + +Count = 283 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 7614791082ED8A1125AD0B7BD77D36A64F15EB06F7136641 + +Count = 284 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = B6B7EEB1F82882CB31FB3066CC2C55C29F315CF4C66FFCF5 + +Count = 285 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 582EF95BF4A5F5C727DFC758AE2A6B4242B133247C37923C + +Count = 286 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 3D43AD6F0D9EC4CE65F201C0DDF1371B522101F12211E8B1 + +Count = 287 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E54D09C265137201DF3A48674832296AB4CCAE3051D8CCF3 + +Count = 288 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 3F43F4C7422F2EE9386AF6322CE56455547A9C290DB3C9BF + +Count = 289 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = F299909625031D1BA42D71ECC8D8ED842B0142BE48B7D858 + +Count = 290 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = F0217F2510639DBCE85E9DA90276BEDC3C0E7CC89D97E148 + +Count = 291 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 3F58D34D3E260E328643F80EA58EB6A7426DE034AC1C8145 + +Count = 292 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = B35FB53B1F1DD719CF95D2F79506BA45061125F908F44752 + +Count = 293 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 53B8CC542D5141129C2899F2981B098C0AC3C98D78222FBE + +Count = 294 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 399E3E9A4336B2603638DD47B1A1E5C64E2A5E9C085C7358 + +Count = 295 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = F88C52F66DF7F7A2D6352B76DA12B9237350AADD57B4B60A + +Count = 296 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 928B4B6EEFAB400DF474614A88678135FE0ED2296A0D70DA + +Count = 297 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = CF1ED60D0F19CAD796344513786DBF029AE9A060E46A0E03 + +Count = 298 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = +CT = 19C02A457CE30C6EFEB42AA3995982EE812147DC3E8B17EA38 + +Count = 299 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00 +CT = 80A4574A9240E521A0CA008D7BB2A2786D0196C9C88EC4AC25 + +Count = 300 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001 +CT = 080358DB59F9BF0CAACDEDCC3C1A01B137B90C099A9C2E43A1 + +Count = 301 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102 +CT = B93F5C630F463D94F49790695E10A6B0888CCCD190AFCF2F53 + +Count = 302 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203 +CT = D7A797F2FA7CAEFFDEE002D032B54DFCC22EE687B721388CCA + +Count = 303 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001020304 +CT = BE24A8449E471BDE3AB49E7783ED2EDE0A81D14C3A8C024547 + +Count = 304 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405 +CT = 6AFE6C20C769621B61EBC350A8774A2C84069238169B3BDD3A + +Count = 305 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203040506 +CT = 9FFDB7A8FA0B31AE0F7F2387A801A9DEDE78EB075B7C1B224B + +Count = 306 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001020304050607 +CT = 697E26DB031FF1F0819B11959566060F874B4FAA70B0D1C6D5 + +Count = 307 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708 +CT = 636A54D781421661ADEA7986A5DDFDF1DCF6D5FD359D226FE0 + +Count = 308 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203040506070809 +CT = AE04E6677C9D082280A5D9333277DC809E6CEB6FA04F7B5D3D + +Count = 309 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A +CT = 7ACE5C33B96D05EEFA6336EE42AF0F5A6E8F24A91BBAC847A6 + +Count = 310 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B +CT = 76403E9A4B2A2A73DAE6368D13E6C93F05B2766532780B2C56 + +Count = 311 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C +CT = 7E8528048189CEC7389B15457CE71BE0D13C9A50CDC80AE7CA + +Count = 312 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D +CT = DC6A0BD7D4C76B80EC9850498393F35AC029C717B53D5F03B4 + +Count = 313 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E +CT = AED4F16BA1A52D70C07BD191CF0E3A36591E40D117F5B72E54 + +Count = 314 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F +CT = 8F87EA472F18EECBDF61664B377BDCC2B054ECA41F18BB54AF + +Count = 315 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 629E64255BAD63CF3D46848C6FDAE6ADD6ED47DD7774CE3807 + +Count = 316 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 91022B6AE49767C59CEDD5CA40F47E5E8F541BAC95EDE35482 + +Count = 317 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 4C653119E82C372E38905C1048371A9A5A2B38F10F4BFE7BCF + +Count = 318 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 9EC09EC5CB85CFB807BA0716BDDDA8753F5F07668AD1909157 + +Count = 319 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = A7406B37DB78B64BF3E96E2DE69CA4EE388AD4D73EAB56A2CD + +Count = 320 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 03C0F98A6A94DAC8A55F2EB7F25335AE6CDD895AA8FE49626D + +Count = 321 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 9B230F55504AB3DC0C15797429DBA602B0AFBE67D5A352970C + +Count = 322 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 8C48BD9DD82A7D097C0B4744318B2550715601AADE95B26D55 + +Count = 323 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 7F8ED5ACBC6246698E2AB9F943FCDD2C45901399B95AED94A2 + +Count = 324 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = FD1F1E12B2761C7E6F0FFEC29E478BD58803322C1F55D710DD + +Count = 325 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = F47CCFCB9904479F36224E3A03AB93574448AB9D3A19EFCD0B + +Count = 326 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = C6027CE52151812B908860A622C12FF03C5D1DDA2FD966407D + +Count = 327 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = F6A83DFAC3CEB517E9C30BD59CE9FDFA433F774FAE66D37853 + +Count = 328 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 61B440018BB84FC376EE8828DC3E8B7F1C79C67E1E235D7E24 + +Count = 329 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 1431626654D5EC84FB35ED83353921AFE40140F6A06AF5CCA2 + +Count = 330 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 102738C754BECBF2D456969B434BD8CD46221ADDAAA59C0950 + +Count = 331 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = +CT = 0ADB9BC4BE268A5FA1E06081CAED8BFB320B53DE6BC3FDC52E2E + +Count = 332 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00 +CT = 7840F13174B746AE025760C050A4A1C21158748FA133E8989B34 + +Count = 333 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001 +CT = 02C7FDFFE0F2B82167160C25CC9BA8C71908C66FC054E44DD27D + +Count = 334 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102 +CT = A980698548FF9E365AF628C5E802D5C30696401E5FA1D4C39B60 + +Count = 335 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203 +CT = 49446DBF7D6CCEB0456AA61E138D9C89A548AC34D13F23331FB9 + +Count = 336 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001020304 +CT = C0C0D00B5A48475A4412ADEAA142461F010655D9033D6167F27C + +Count = 337 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405 +CT = 8F505DA4EF2670B32E4C7FD1A3B994CBABA345483BEFBF6A7E29 + +Count = 338 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203040506 +CT = 8052132F05705F6169007CF079F990B585235EF0CC9300488881 + +Count = 339 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001020304050607 +CT = C3331C1B84151BE47436DCAF209868A940476CA632CC850C20EE + +Count = 340 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708 +CT = DA8DF765AA9936BA4EC7AC4415CF17555FAADA214F161A78D515 + +Count = 341 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203040506070809 +CT = 4B6345F582B5F23FEA255A319722399E98F61FA9BFE9F871F794 + +Count = 342 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A +CT = F98047FA416E88A0135524F716D35A5DA88828F68E89E84E2B69 + +Count = 343 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B +CT = 3DEF7707AE02F3DFBD9A619081FF4036D5FBB1EF01115D142DBD + +Count = 344 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C +CT = 4B472983691C8945FC594417D6E04571C0DEDF57502CD3B0A28E + +Count = 345 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D +CT = 16303690B8185745D5D9E24C0355608B9D1DA1C6D47DF9D62AD6 + +Count = 346 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E +CT = 1C31A767C094C010F095FA654E3A0ED96A60B8FBC94C5A13EBDF + +Count = 347 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F +CT = A76F64207C72E1D1593EFAC6A66F82BE0610350736A57F6B39D3 + +Count = 348 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 4B65F49C4FA01526E96F6A55263A9B2D1B5F9D41B4620FA234A6 + +Count = 349 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 7E8E2EFF4C292C15E1B4C874A971977031970E8E0BCA3CAD2B24 + +Count = 350 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 5D33068CF741CB3842DE4E2B44B3ED2D3B0C75677C1DC5AD7962 + +Count = 351 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = F74A7FA2F38990EBA26E7457AA4BEC1EC31307F15E056BA8D8FF + +Count = 352 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 30724D84EA86EEF3090F69B72ED273AB1E92F41494F889CC393F + +Count = 353 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 7FE80A53969E2EE729735D57632476AB8894E25EC57A76CEF833 + +Count = 354 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 4FCB65B89C96FD74421DAA7B1EAEC11FCE92A8CE55E07F654E9C + +Count = 355 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 638B724486A33A715FE2F9285FC0D41A543529A491DA6EB78D88 + +Count = 356 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = C4F7EE4F47601B77072B828B0595052ADBFA73E22282EC548212 + +Count = 357 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 3CFE4172BA0E0117E88374CE93C16A18A227A83DE21EB27695F4 + +Count = 358 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 2551C1B84CA0A2956E2D31738680A841710296ADBE2EB648107E + +Count = 359 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 2204CE867F0DB4365EA828B1A1744E8FDCC6BDBB137B73AF104C + +Count = 360 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 54BA6153B467E4695E619656E0D18965512EC8F685637CB60329 + +Count = 361 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 72B84D1D14FBCAF037EBFF68D3F8EC03AF6EDEBFACE16AFFF5AE + +Count = 362 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = F7F1B2333546F2485549B89D9E17545541C60C393ACC55C9CADF + +Count = 363 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 4656447CD3973FF12FEEDA227ADC4C9A0BAB014CC7E39FCD3022 + +Count = 364 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = +CT = ED9C82E3487E47022DAD8CD51C7E45C9DFADA5521125A36990E5BC + +Count = 365 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00 +CT = 42FA63A0EC2C7566718E7AC665FE82C62381ED1B72628C44F0BA52 + +Count = 366 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001 +CT = A066422CEE26018A590832FF12B8AD7390D60302C7B47F6A011A08 + +Count = 367 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102 +CT = C7AFC18D41B6167981E827D97D2B834FF213B460D1DC8A8E9EF92A + +Count = 368 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203 +CT = 1F6CF5308C32CB7AB63C340D47909391B2FE5BE966A3F36A9CE7AB + +Count = 369 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001020304 +CT = 8EA2858FA51CC2CFD6B8C5AD02F7B8704AA3502A998028509E698C + +Count = 370 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405 +CT = FA120AC9DFB57468D86C710C6A51A8738C8161CFA146FCAEAC6CF6 + +Count = 371 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203040506 +CT = B6823033B526472CC56693E1A68F4848531B0895D23C9C7399BC43 + +Count = 372 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001020304050607 +CT = 7B54C966E4027902954E8A857A08C3D45B1CFC1C29C0C5957E87BB + +Count = 373 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708 +CT = A052A31926CC95045B4EE319108A8617CBCF5AE2965E4292C7BD97 + +Count = 374 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203040506070809 +CT = 883303B7CF4376E57F949D476382D0B1FC91674E45E93FAEAA8D3E + +Count = 375 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A +CT = 1309BBCE222B2046A83C20F56DEDC85B9CBA7AD29109DFFA35F380 + +Count = 376 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B +CT = B1FC1FF58CA6DD3BCD33FB330AEDEA2ED60A56B1C6EE0CBEF7D1D7 + +Count = 377 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C +CT = EA587A7D3559E3B9D1431241516AE2D8FBE96147B97CA0B1F48C4D + +Count = 378 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D +CT = 8B4DD67A9F72004C26E2B573EF14F0398AC243F70668EE93CF7EF7 + +Count = 379 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E +CT = A3B9736A04CBFACEE12BF2BD6746FA48FF6603895AAC3E592C4ADD + +Count = 380 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F +CT = DD3F1651914C97BDF0D7CC7350645D9ECC8C9396BDAA2052C51952 + +Count = 381 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = BD73EE0A454D06F1B4716734B74A8749BF0D5B1407499E75C9CD16 + +Count = 382 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 2ABB7D1EC52EB7F5F90B6AFC6AA899ED3A1F26A273E29164C90BE3 + +Count = 383 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E44F7764A37622B8173D20BDF2E629C75849BEC3A9CD845B17159A + +Count = 384 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = D5439DC2771B6EE42E7B12A8A2ABAE7A270E007918DA2914E55D72 + +Count = 385 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 9704D6AA5D4E8CE956BBFBE7E7B22A1DB610593FC05538A48A053D + +Count = 386 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 6F181AC89A5C4312E20C583A87020056F7BF941B3265DD5EFD91B6 + +Count = 387 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 42383E59CC38D5820FE1D3D7C437BC1518D36D2A8D901DEF574E7F + +Count = 388 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = A1A16F24A100C7A20FD0B3FE309BC20E191A13A9695BDBA1967896 + +Count = 389 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 8585D83508A5868001256E32D295587A301CD0470DD29909255CF8 + +Count = 390 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = C353DEC418F80E4BF6B166D98E128F272530BF478F7A9842C72AC1 + +Count = 391 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0D9E81FE27D9A785E2E6A4437D09B94844C5E2B38A5FD4329427A6 + +Count = 392 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 4E3A1C08743AAE44ADFDFBFB648F4FDC48818440F79A5C044CD801 + +Count = 393 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = ED3BC411110E280437D6C7EF3E65BAB23CB1B864D29F5C62A902E0 + +Count = 394 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 914D3382D241E82886A36920E79F093F71D5EBC4E13B32D7EBB06E + +Count = 395 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 8AACAD3693DB4940BBA07787A0A1F9B30459CDACF39AE20E1E1D62 + +Count = 396 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 179662F4A56A73301EF04FDFB88936D011AB3865A726631D34E16B + +Count = 397 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = +CT = 94E74750B3B4FAD25A8588810FC14AF7C562A65F1B05D6B3F948BC2C + +Count = 398 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00 +CT = FD62CC21242D778BB04228BB159EE386FB154FA96648CF8B950B9A6C + +Count = 399 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001 +CT = 8CC22DFCD992BCEC5FC5A8CA0F0E6A638626C04C590C632AACC306CA + +Count = 400 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102 +CT = 89A0E6A175A661BAA2D99ACA27693B2EBF1A650B72B2AB1A10783C88 + +Count = 401 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203 +CT = B5BA71F99D719B9B8EB39CBF367BD2FE57FB1F929EABCF2C2629D2AA + +Count = 402 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001020304 +CT = 0EC5A738408DD5DF050D87940E098C6D86965269A7F340D607414D4F + +Count = 403 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405 +CT = 268C439CF402396C2C68B6C8931C237D2FA4BA6AEAE9990853CF3BF4 + +Count = 404 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203040506 +CT = 5E497A951A144674BD8B025CFFBF771004C6D4020B8C0103D8D58E73 + +Count = 405 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001020304050607 +CT = FA00CCF57AD9824665CD0BBECABF3C909FBAB7FCC77C558974310F05 + +Count = 406 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708 +CT = 32F413324E9E403713C343CA39FC0A779669639C18AB55D24AE76FEB + +Count = 407 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203040506070809 +CT = 8019CDD284CA3FC097383927A2FB2AFF8A20EFAFD8E9328D1B6807A5 + +Count = 408 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A +CT = 6B96B92BF6D15110857FEA9C93F650235B2B02F12AC65112B2EB8454 + +Count = 409 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B +CT = 75FC41C36EFB607A180BE7AE361995171C61D13C29C4637715788967 + +Count = 410 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C +CT = 8BE186943661FBF4C58CFBF685D6C179AECF566A2D3A18556D9738A0 + +Count = 411 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D +CT = B1BA3B0B35546C573BE38EB59471B2E05EA0CCDA4C8930B02F2182B9 + +Count = 412 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E +CT = 860F661AB5AB59E82A0C578103A562323E23B5E2EA32BAE9E155FEE5 + +Count = 413 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F +CT = 3425DE14322CD19799F564C0383D05DEB85745465B33F0A79D8F6B5D + +Count = 414 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = C8890081006AFF79D2AE03462CEF12DC7363EF5A9CD8EFBECBC10C35 + +Count = 415 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 36A574A8F69303C389FE8DC27BAA668656499BAB7CE82AC9D1DD3D3D + +Count = 416 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F414CC6CDBF647CA8397A79FD5414739F080A164648B802CE5B70545 + +Count = 417 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 12DA8BBAFCF5048C5257C065333CFDFF0EEE3058800D8B9B9F67E9C7 + +Count = 418 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E7A9C157E310BABB7048ACF95864D79CF1D189F1C13C05816CBD2847 + +Count = 419 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 94C961C204702E977F9258EF6FBF37135D4566A21F491FC981FAA6F1 + +Count = 420 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 749A9EC3DF8F4BB1C9F54A4CD3777D6DDA4D22FDCDB056009B3EA2B3 + +Count = 421 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = D8D0C931291F9CCD5F0F80B72275AA05696CBD8907984FE4924C874D + +Count = 422 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 602086A7670354AD01D199EAE1DFDBF731BEA0BE0756BE344AE4C42A + +Count = 423 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = FA874E3D2D48184F2A5D60AF46A436C91ECDA9FC717C37A1574AB229 + +Count = 424 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 7584DEEA1A1F8F4EF869B39D97E3D9A352D7411F97F0303549FCE8AC + +Count = 425 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 67658BDA4B3C2389F4922D2DE79DCD878629C7A11CCF790C46ABD533 + +Count = 426 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = C314C1F091F5461C7DF28F1921FB811FF6633ED0CEA364DCB5A82551 + +Count = 427 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = DCA056E3E6EAA245EE94E374F2C82F34839D870AA8892C1BA123D2C7 + +Count = 428 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 7D65C76C864697E6228FE5F69FDF0A136DC08F9647E3FFCFD83A2889 + +Count = 429 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 603ABC44A3350BA9A2ABD6B33C9235F97A1AFB0EB5267FA47E212510 + +Count = 430 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = +CT = 2E34D9583CB3936C955D590786273C207B67B2BC9FECBA21B3E9FE89D0 + +Count = 431 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00 +CT = FC61C14BF14488B79AD0AC2939BD0FEB5E3E7E705A029F5E77A4026528 + +Count = 432 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001 +CT = 3C44FDB8617BD6E8B10364A6E91BC0F49D54202F2E3D09D4F1A1ED92E6 + +Count = 433 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102 +CT = 5FBD044FA73DB912FE63782072B499CC598C62CD9BFF80DCEA6E7FC655 + +Count = 434 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203 +CT = BC1AE6E0F40F2F2FEA3661C60E2B2DC87BA5F1C767B81D7F3095500293 + +Count = 435 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001020304 +CT = F60E6D729D18BEBD21A86396472BD7263AA5C3017C8480C45A2F321D7B + +Count = 436 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405 +CT = 49A3758C3EE1E26A02938E0E0DFE357B2FE69FFC6B4BE926F565FBD4DA + +Count = 437 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203040506 +CT = 1473F62BED50C732373C47B8A45D12985CAA5E15DC661198B830EFC788 + +Count = 438 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001020304050607 +CT = D7FEB6C9DD78B0C35249F95714EF2B96E4F0B0FE1B949B2C299E6D00EB + +Count = 439 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708 +CT = 7E0DAC5D783CC0801222FB457813007AC10CFD0D85A42C7FE081181C96 + +Count = 440 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203040506070809 +CT = A8E5954953D6E4D3C844BE3839700865C75A9FBA0AD3199D13FCFCABDC + +Count = 441 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A +CT = 2DB2C0F9818EB070D3D35B9A43B9C491179645DDC6F28DC1F0A35B8A2D + +Count = 442 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B +CT = 99A813F103C59695BDDB007A6352DC6B3747B24B5541FF36BB6C6B0016 + +Count = 443 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C +CT = A5D502FE9DE9D7CABEC9028BDB7D2048917CB693F2331B48303E7F2133 + +Count = 444 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D +CT = 75B7AD1A1F5E1D84317E24A6314701DB0635C084F0B668715463F6561C + +Count = 445 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E +CT = 04BCC9C103D1531703582D24F22D44E7A27E800C64017FE05EA371519E + +Count = 446 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F +CT = 5D82E6D669F034B70678DD29BC0631ACE3A96F1B9CADD43879CB24926D + +Count = 447 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = B5694B8589976888A9937EE6A914C0E9369F662DF67A8D7B00C6009E97 + +Count = 448 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = D3B4F37DAC2654EED7F6920EAB38D308F5C84722F8268F2AB2734CBB15 + +Count = 449 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 7FEAA58BFB956ED28CB45D6D5B579B0E58E99B51A423952C25ACE2AECA + +Count = 450 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = F9E8B0428E2C880840C8CF132E40BBB35E9347118B12A5BA6649770C17 + +Count = 451 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 6A78F1E711B5C869FF147242336941F2C806E419D843474FEBE9EAC6C5 + +Count = 452 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = BE8F15DD80480214DA4CA31F9E4BBC8B46CA4A6F237FF4F2578AA3B509 + +Count = 453 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 3D83424D57BAC7340F990E0AF45D7B1E0731B47D72DC2948E15A644A4F + +Count = 454 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 2A39E2246321085387F5290A6079F5632C1F15A113BB004711849847C8 + +Count = 455 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 4A4116C4ECB6D42C1520427FB7EDAA4ABB5ECDFCD0F66B8A0E33358AE4 + +Count = 456 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 8693B2C60FC77EA928536FAD8825C7519509E4B0B70235ECE403022031 + +Count = 457 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 9F2951F0F2797CA1C5E6FA7B9F0541BE0D03C0A4AC688D03313D773E33 + +Count = 458 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 1AE8870A1443C44BF23DA102C52BA99113255735372F5C42975F73610B + +Count = 459 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 40A89A9B02EBD9D64C5C83BA21A7F6E56D311B8F71763C0A67D9222F12 + +Count = 460 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 9A7D44F8BCE47DA7AE975D01626CF9DA41241DCB40F57B627DB2C041F6 + +Count = 461 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 1827BAA6407BF7176678067497F12FB8E4D4308AD145C9BDF08DA376B0 + +Count = 462 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 7C2292C443885042726CC2DAAF2A74362F5357120ADC440B77E07D01A2 + +Count = 463 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = +CT = 6A0037DDE95185558855A2BE11C2E42134D49274BBAC71EA7C30622D9C0F + +Count = 464 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00 +CT = FCFBEEDC8C1EA9663D31B0B1099DB83FCB756CA68D56835CCA4C27E4C2F8 + +Count = 465 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001 +CT = 0E2E8F30F0C391A4034208D1C996F7928650DCD1510FF7E1E4836A3E3BB4 + +Count = 466 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102 +CT = 575E8B0D5124FE1FB2ADD8B3B4ACEE7B0D72A712B72BF2AB847A0D50C4AD + +Count = 467 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203 +CT = B7B87F03895D737DE58D81735C66C55BD69CB4DAC86F358ABFBE8CD9F411 + +Count = 468 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001020304 +CT = 883200C322B6A50C78D11D4B9EE2A15269CC350CC46C2E840DD153F25B26 + +Count = 469 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405 +CT = B32B255C42EB056FA673CF76DF3E2C950586963F04F3626E3338978AE354 + +Count = 470 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203040506 +CT = E070F7A721BF3DAFBAC0F9407055ED095E29A818C2332D2590A5DA82E0ED + +Count = 471 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001020304050607 +CT = 9858EB2547202F0F4F2CB92E94D5AD5D03DCD0A917D6AB58B2C5A10BCA7D + +Count = 472 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708 +CT = 051C362CF017180E46C5E7140C63641978D3FF2F11D0A226209E614F64D5 + +Count = 473 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203040506070809 +CT = 7C89FABF7AC9D748F5D4F1F23EB00DEE5CF46A670F40EC13124EAD00CFDD + +Count = 474 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A +CT = E9E7805A5AD6973E1776BE51A919F819C1D36773522D6C0E8057AF9D9498 + +Count = 475 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B +CT = 437A96250084F91F2CDDD619CAE7FC2DA1F2ECEEDDACB0B3D3FC817952B8 + +Count = 476 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C +CT = F7EDEC7A5925AB5BE45C3D001E87FAAEED66E71ADD075F06799FF10E3E7F + +Count = 477 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D +CT = 981E132FCB6E05D97B4BFC27712A86A0AEDC542D7F1A425E76C97FCFE26E + +Count = 478 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E +CT = D75FB460D0DDD09649B6127CB23B47831ADC0EA6C28C8E6D28E6B562039B + +Count = 479 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F +CT = 3BA03A55E0A533C45551F57E137BE70FECC03CFBF1B26FFF107DD1B6E581 + +Count = 480 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = D49379CDD92AF2E7106391ECEEC1D3E96814ABDDD54F675BA59621E74D5B + +Count = 481 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 0ED61625352A4F3F04366B0DBAC6CD03533936C2E96E3952D34BC7CBA735 + +Count = 482 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = CF7438ADB25D0B7A0AD38BD1FE95035B75446C132A9D193C36D3A34CE0D2 + +Count = 483 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4E6167E1A9C5A69913248D548C08F3F5EAA6A90A86332789CD129E49534A + +Count = 484 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = DC1C20DA81C6507FF04F37898873FD1191DA26D0BBE0BE8DBA5543847041 + +Count = 485 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E18C3DAEF7D94AB73C608ACD567F74967817C7DFF42982C6C22B4BFC7136 + +Count = 486 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = C7E0D5D310EA6EE24CBC8CF735DECE37D6910853A97161AB52C030A804A6 + +Count = 487 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = F870F5A0D5BDF885E3098BE5E6FDFD7F19398FD64387C8AC5AE158AC56BF + +Count = 488 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 8C8365A66AE21C1F85DBE288E2212B62B08DB2A5822ABFF5BB6A68657F09 + +Count = 489 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 56B1986DB3CC994B16A8DD77D3166143D0849C31E5623222C2EADDE8635F + +Count = 490 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 6816CC0E29DC9CF5EE3356AA2DC5DA952FFC3582252E036C86457AC9AB36 + +Count = 491 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = DA881562170087570755526093925C093D871298D29927435FDDEF6ED02C + +Count = 492 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 9585D0E243369D6747A3529DADD3A59921E80C091F165E1649C9F15D485B + +Count = 493 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = FCD6D40EEB4170F2166A02211A3207577F59730E28C6E5AF2A8FFDFE9689 + +Count = 494 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 747DED74E776EED785233E35A0A6B8D51FE450CA83A8DD0ED8E216953F54 + +Count = 495 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 94CE60ED5B8FEC3AB32C0C50C989ECCA82D53C1974BBAD94C66AE239642F + +Count = 496 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = +CT = C9D434E029AB94CCCD50CD556B536FDB928B58140D0CC974758C3C87B13E73 + +Count = 497 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00 +CT = ABF2737CB216E48C905368983AC7E21BB33F05B3E6047B8D5C52B5D6BC8435 + +Count = 498 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001 +CT = CD4152069F0CAB5811EB059D2750D436687D249CD1DCC738A043E7C8D7F4E9 + +Count = 499 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102 +CT = 068115A1A61EEE822161225498BBED2DDB1864F5BC9B56D1C016D6D566138B + +Count = 500 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203 +CT = 072704C1B2318F950FC1BD241CEC7577F6408E60D1D0CDBF82701183843989 + +Count = 501 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304 +CT = 2C77B946EC63D560E4AC86BF5B21F699F0EE7CA50920B31C55AC3D5F55B86D + +Count = 502 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405 +CT = D947444DFD94E9196DA53538BF2380A52540A8250E97834AD6BE51FD83D42E + +Count = 503 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506 +CT = 8DEF202572092D738D2EB08BBF16ABAA7D4A3E0B20A0653786B65CF4753506 + +Count = 504 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304050607 +CT = 8597E78352A4453F3A4E9A4E84C93603AB4AA42F3C109D58254CBCEBCE1BDB + +Count = 505 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708 +CT = C4C26879C7A42F1593C0FF36CD91E457605F16DDFBF6F30D3DED1498CB5B40 + +Count = 506 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506070809 +CT = CE14DA59ABD94EEBE3FBEBA9B1A51AE928B3B2D5F5B5D65CE669B52915E152 + +Count = 507 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A +CT = D335FAD7BFF7E7D171649417BDBF26049C86FD9197608D9BED741D21C78D9D + +Count = 508 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B +CT = A2DF8B426BED93B81D1ED02EB991DB8E00E42A80A171EA34604C8DF214A483 + +Count = 509 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C +CT = 80246D0F6225876A55DF221741F134586751B16F91154E39E5471D9633927E + +Count = 510 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D +CT = E83BBA40059B837AE6FCCFE5D189B5F10ACEB872B343C71E61B3BCA5077CBC + +Count = 511 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E +CT = 727A95D518B1397C612E5F58E5A67536D5456C3E532C52E02306DF9EE39F97 + +Count = 512 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F +CT = 87C05EBB2AFF3CBFB6B69784F5E3207B179D606BEEE40F884AFD955E322C00 + +Count = 513 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 3C7B6ABC78A1043B18A7F85807131EEEA5DFE4B4B3F2F689E7C3F71B748002 + +Count = 514 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 58F3F3033E1FE80689DAC957E20D6AA226D2165C419BF2736B73FDDC7035BA + +Count = 515 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = C0CD09D5755F679B9C40AF41C6C6ADE10E3ACF28A208489F1429D73F3667D7 + +Count = 516 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = AE125CFF191639364FDBC61474C5AF7DC1B0ADDBBC3DE46A9C5CB312F0F7A3 + +Count = 517 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 789A88EE9FB4442845E98B5FF1D7D3037056CFC4EBECD07CA44439ADC8D743 + +Count = 518 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = A0A368E9E620C757ED0B371C7732DF943D590DC8B2E14AAA6156A3AB1ECEE1 + +Count = 519 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = C3ADC17FA1554DF785EEC93A1DF194FEA8FE01C3DA09AC2F2517C5B732D0AA + +Count = 520 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 9A1CDEC82D7C835390FBF2ABEEE7924DA5B44A7EBE3D9A5E28ADBB9D60F327 + +Count = 521 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = BFC2F4DB5814B34FD864B31A3E35D1523617EC2DF109FDEECCE7B1140B775F + +Count = 522 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E393AD98AC53AAEA678E824C50B43E66091064079CFFFF5B6689F947DF4156 + +Count = 523 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 38F66465936D56E765BABD2601AE66D1674537046C27910D96DAE4EAE5D7EC + +Count = 524 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E4FFAB81BFB7C03FC981E78F0B85928F81950091B048161C1958C5C2C8A546 + +Count = 525 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 3B5271BD6E294939F33555E2828CF33302BF23BD4A6AF174B8DC318E940593 + +Count = 526 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = AA57ACCEA4325C5C91DA1EB41AF8BEF49C2D464F51344CA54BB25F40A71EC8 + +Count = 527 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 1A1F3D43B701B5291A91141BC2BC001199BEC48736F54A737CE18E8BE88834 + +Count = 528 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 5B7188EC3CF7D9936934C796F3849EEAD622CC438F3C9228FA223EB9CDFF2B + +Count = 529 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = +CT = EF0C294594429B657EA6CDD1476737EC4EA2F510FF840BE0862B266BD14864F9 + +Count = 530 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00 +CT = A4B170FA2C2FCF597D4A84CDE1E4CEEB7791137B8A211BE3D91D252F2F599804 + +Count = 531 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001 +CT = 97D7BFBEEE1842E9E042B52F5E01E7EE0D992D25B8B9BAB4E6413D38DB265BDD + +Count = 532 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102 +CT = 4F506F57FAE9E1DCA3B83F301C7D794C00AAC7970791400157F809902800F9EA + +Count = 533 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203 +CT = 30C64146F376E577AD040B20861564B45C00CD6BBEF057E4548212C923E9E8B1 + +Count = 534 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304 +CT = 2C06C3F9E54AB6F0DAE9B99C2C31C8FDA91C12FA81262B56C106906CA9C65D4E + +Count = 535 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405 +CT = 9D22ACBA0486F7C808FF9DFB4593829FB3371357304B1C0615CE384625C203DE + +Count = 536 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506 +CT = B838773C0770DA6ADB610B95A8E4A3E5C0A4A79C84C7413EF8AA7E6834F1607D + +Count = 537 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304050607 +CT = 4022B9A8622D623C58E58D821FBAC95DD93EEEC934811DB96D008634719BC748 + +Count = 538 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708 +CT = 573FA80904B97B47FFCA75B8B5EC2BBB2E1236B19E48DD7E5F14A93C14A3947D + +Count = 539 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506070809 +CT = 4CE3937187EBB73CF5B931A9B8B75CD05ADCABA1563DF3EB5BB03C3221ED8856 + +Count = 540 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A +CT = 6CB7321CEA1A021733BE841260DD6F593454376E9A24609510944903DE04C064 + +Count = 541 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B +CT = 6B63FC5EEA5D8150B6C4AF6DF1B1D66B42B82B134CC69D39620529656C5D5F8B + +Count = 542 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C +CT = 353FFD32013981E870D7B23A2FAB8DBE58F4CD6BCB9707BCE028FCCEBB078DF4 + +Count = 543 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D +CT = 61FA36866B10E0308C7BECEC6087CF213BE2E0809048CD6A29F196CE291AD799 + +Count = 544 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E +CT = 32EF3303B5803D24843E0ABC2206C585D9C32BFC66A28D110508F96272E04C82 + +Count = 545 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F +CT = 82965C77931E6C1632B0B78BEA9FFAC1E59B8CE9DD15C6F8653CF2EA459E519F + +Count = 546 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E1CB1ADAF7D5FB76A063EDC3B859530EF1D686E27A93EC2E05D50DD88D128935 + +Count = 547 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = FB4F1218C4AFA05D8B0C4509EF0AE1F5D1A7DEAAB36773244BFCD15BCA42D93F + +Count = 548 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = CBD59602AECECF8B98A9FBFE526383DC8FC7ACA5D63DF15AC72546923D5A5BAD + +Count = 549 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 67156AD4AE9841801C6B855D3FD58D334065112FA6304A194D51A22B2541BC30 + +Count = 550 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 4D31121A065EA817E54EA65E1A393859342785A85482844BDB1B6FFF9F616976 + +Count = 551 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 9CFDADC09DCE46B60CCE6D0B8A3A608FD267696C4F41AEE7B6DD7F041DC39B3B + +Count = 552 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = C58CAC9C556A202257D005519B6D2BDE0F6C74E84B1AF3A1E60BEF4E31B03B77 + +Count = 553 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B9428714002B91756889E5C5B5E0B55C3B45CFC9375D7F735D808DBA9519C58B + +Count = 554 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 10911DDEBD95BF54501C37A978C243045E3EA6A0F5D3B8136849CBB1CC447976 + +Count = 555 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = A85A4E15F8A98AAA14937083964AF7F871D0C4D5B4190B34197B406EAA0FCEFC + +Count = 556 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = BA29DDE0961BD8DAD7302526578D877523B7CC50048770F4ED5B5E8768EC50FF + +Count = 557 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 00CA00DA0080C914DDADE7F18347730A9A8B2EBDDAA8377A067898C950D479F7 + +Count = 558 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E83A37FC819FE21252F1AC62538E63CB280FEF3DD53131B215209D2D880467EF + +Count = 559 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 4FDF901264652C05941033033AB37CC881A6B5FE32F608513BC50575C1C37A8C + +Count = 560 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 75CB85AE5F177F5FA32B125C73152018140D1B09C891236104D983B16FD02B80 + +Count = 561 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 5A376FE4E47C89D5DC8F43557F4FA0C7AED2FA1013642DB01A3612C54FAB0359 + +Count = 562 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = +CT = 88D982936E20E0CB1395A297ACCD1F814341BC5A7A3B3BDFF5A209562F5A6F1971 + +Count = 563 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00 +CT = 77044E500A97FC0E11D52704D436CEA22551CC887DC856EA5BF880D8063AE1A114 + +Count = 564 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001 +CT = 24BC2C0B966061F296F49E84C74F87591A244523E2398E24121C0360C9D30242C9 + +Count = 565 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102 +CT = 0504DBB1336C348B36F9D636614DDF998490A829305F40FCE7EF44C8D252FD8E4A + +Count = 566 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203 +CT = 20A8095E96EF31D877DB85EC661D1D800FDCE6A4BBFBBE5935A38044CE44026916 + +Count = 567 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304 +CT = 080E36DC84BA1A24BC7718B08A56C3FADE7B13C12D3E68354E9C014C28E7C19D29 + +Count = 568 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405 +CT = 01F3BFB8553C24AFE63CB18179D28AF0CC2872905A699C342EBA94A4DA3C0B1E95 + +Count = 569 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506 +CT = 7CCC05A01AC92BC130CB3D93EE83283C29F7BD1A3BC7B7D1390DB09158787764E7 + +Count = 570 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304050607 +CT = CCBED0C207AD7BB6366013E38C4526CC5F2DE663579EB22E94B05D5B715EAB392F + +Count = 571 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708 +CT = 0C46CFEC57BB5461EC2C0511D226BCDF27A6F05CA6C89060413C2B24B5D5C8BAD7 + +Count = 572 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506070809 +CT = 9F7DD7DB2E8F38C785F98FE547077C3AE05AAC5A2DDD3AF695CF44D08770EC8267 + +Count = 573 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A +CT = 2D4DE26EBBBAD0B80468AF94D3534DDDAA170F383E160EF4F9F1577E8F7A3D66C9 + +Count = 574 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B +CT = D22772AFDAEEC256E7CE46BDA73730F1D772751A555A7A85EAA306949FC0EEE714 + +Count = 575 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C +CT = 67F08FDEF881EFA34F8AD07E59ADBC210BE604B0E29665C462DC30C83459ECE321 + +Count = 576 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D +CT = E0617ADCF34A078765B2F23C4C168D82E17747EFB7635773B627417C6BADDAE2E9 + +Count = 577 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E +CT = 3AB04445E4BB764257E08AD83E55507409B58A5F9ED3D45C9A9E6CEF6C5D0CEADB + +Count = 578 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F +CT = E28C41F9AE0BABB296F2615CB50359EA9EE68F964EAB944C8611302134400F8B35 + +Count = 579 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 823DDF46B296F6D828090843BBDF8F63422025A86F4DED6C9664BC4B0154AFD5D9 + +Count = 580 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = FAAD68F5D151A09320348D5955F66D377F0226EC1AC8E8169C8FC44DC663683D1E + +Count = 581 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 8AF21480F9C48E8F99AF2EDA11F167D0C939E059B857503EA6313DB71EA904FF57 + +Count = 582 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 6EAF94B0B3AC2CE720957F90255CEF4AD94D2EB78E90CE1DCB440CFF1034116518 + +Count = 583 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 2D826B20205624ED5B0A31F06E9D26701D4D5653DE8A41150064D4487A9A648C34 + +Count = 584 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 05EBF9A8F632B6FA84B27F4DD0D0C5C3543BBCBE940201460CA7BFE8E25AD25608 + +Count = 585 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 8058BF6B432FE70FB1C1B9DDF242E3828141A86E4DB2767163F6C80630A3A638AD + +Count = 586 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 40030879A60CB9F951A78188F0C10733B787A26A5595AC0051E25F33692DD96C22 + +Count = 587 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = F160BD208E76FC5FF65403F75E6ABBEE3ECEAE2A4B5C471A90C0DE2B316EFCD5C4 + +Count = 588 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = C81D194816E26A85CE0BA3DCF2EFFE4D01878C6907EA85FD1DC9231A213EA0182D + +Count = 589 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 776CB287899526D1A024CA3D764C1D97FA5DC402E38956110202C82683DA75FEB4 + +Count = 590 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 47071FB03735958D7D77D6F1AF5229CE4E2EFFBB56B6EF7CEE83644D3673765DE4 + +Count = 591 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 04BBD029C6F15FB17E94F379D0CEC45DE41A1365E8E07466FFB20082313D6FF117 + +Count = 592 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 8CD0818681C761DBDFFA64E7E81D1201B6BBA00E0B216BADA595929CA2A456078D + +Count = 593 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 95DEB6242BB0997805DEED2F3631914700F675DEB2899948A312DCA5AB8DF6A855 + +Count = 594 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1B40AED7A8A928E94EEF54622A24C7BA4642C69B9BBE816E286AD4671E78EB0644 + +Count = 595 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = +CT = 41557C1A57DEBF7E3F0006AA85840BACDB5DEAAFF2278A66ACAF008D035E1102E6C0 + +Count = 596 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00 +CT = 1B48B1137612DD2FD753A24820F4EE6B4490A291C3298870A212CC4AB5C27CF0788C + +Count = 597 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001 +CT = 99DD62B7F4FD82C888A68697194D34F014D86C5C8F4682D058E8E92729E9E533EA64 + +Count = 598 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102 +CT = EF1D5A78F6EE79D321FA0F28763B08007FA3208F95C5BC3363D71471E42F6F9AFC33 + +Count = 599 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203 +CT = 16468A7835CFE6FDD0F2F72C608103176556B7EE6E221CA2FC51AC79BB184F646F7E + +Count = 600 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304 +CT = 283C9F6B14728410E9430611AD78EC7BDD8B450F5F8B5B3C6AE826DCFE5150A688F8 + +Count = 601 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405 +CT = 87FB9AC6130621DF0DBD6EFAB68DA1D301990F860006C73749E0D57166469C990ADF + +Count = 602 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506 +CT = 0545C8D9873F4A9678C428AD21BFDE0DA8E465C2C3C919B2B81169C369FCDC9C512D + +Count = 603 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304050607 +CT = F772E6B83E1946D6430566FE7AA27C1D191CAE6CAC8DB4FAAF1F2C5DC05AE7E99308 + +Count = 604 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708 +CT = D1B9E2312608BD2B54BE125BB287EB04272A50CF3B7A92E7851F0932FBA1100DE081 + +Count = 605 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506070809 +CT = 5F437486D08F236F1CB1028099F4D1E9A520CD57E91026C0628D9572D3E5E2F3ADB2 + +Count = 606 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A +CT = 6902AB55A82C9E1009A007F0D8EB93B92329EBDF1476C4D47D979100D5E28E9F15E7 + +Count = 607 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B +CT = DF78A10470C9F632E84076B1F50ECD78D0A6833CDA1D8B671078716032D0770761B9 + +Count = 608 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C +CT = 5693A1C52597D29D6F0BEC9709162EE53B092D28C52B235E4C1DA83951C2DC00E852 + +Count = 609 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D +CT = E6E881E7558BC9E28DAE9720403C88A56ED6DEF065E2AAE69D918E394377648A08DD + +Count = 610 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E +CT = 509C4896651D3820483268BA04619733C0A8CA9AD0413B320460A5A9568267862A42 + +Count = 611 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F +CT = 54E448C71819AE7F99E9A631C2E2269DB06E65B3A00696FEF8744DA5A5A02DBFC115 + +Count = 612 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = D98DAA4A1753FEFF7480BD4D1E3B8F0DA6D3DA83FAA02DD95F2478A869A1EF9494D0 + +Count = 613 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 9FF0AC96A387A518A3EA863CF1B3D7CBFFF5E623D1CEB32D1F7EA0625D6654D3669F + +Count = 614 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 389318AA18AAE97C4EB5A50D2A822E9745175D42003C95F182435D7C2A1E9E272B51 + +Count = 615 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 058B677CC520153EE68F59127406AD9E1B9BB5CC4B5E4808B83383D8845A6E640113 + +Count = 616 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 068C5C1749C631760EDACF4F678F8DF2E0C6DD27B87F4635B5A0275EBA620B6BC9D6 + +Count = 617 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 4E4E1A0B632E73D3CB118B8D559CEA4C5A072C686464922F7417E862912E006A1F82 + +Count = 618 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 088024DC216EA695B327F4A10ACC80C11D7BC04D4BC8C0AE0DA0D019BC35D10B125C + +Count = 619 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 1FDB21AECD0DE8C02D55B0674FBD15374C51951C704F5874F9FC4643AFC45244D4CC + +Count = 620 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = CC1A671769C4B79A6635FD5D5074051CD8C721B313042155027FD0EC30F0E4A4BC7A + +Count = 621 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 2385353A0E2E0FD6835200249081F5A472E6030F47B9E7A129111036679D87C18DCA + +Count = 622 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = EE6B0DDB538CA224A95AB38804A3243F95A98761813A116339F50E94DFA903E991C6 + +Count = 623 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 68182DE7567BD23CDD33EB2C20377E6DC72D77D7031AB13DDC4122BDE4C03936CD7E + +Count = 624 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 3AB3EA01579D1C2FBD63FA64EFF5DAC34677D6771EB45CDBD4D1C5C88C3D41F3A631 + +Count = 625 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 6F11FE06FAE20FB5B507CD30287C2FC3352B019D582B076F7FD724A78AC83BD3E0F2 + +Count = 626 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = D4B90DEE960A59EA789923E310516F67DD9C98152B7F17C6B23655A97F68F91E94AA + +Count = 627 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = DF9753D8A877963EAC53D043F03D769A20C317A52673DB25D21331075D6CFAF45072 + +Count = 628 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = +CT = CE05264AEC47DC78F4EF2BEB7E31EAA1BF76D1EE7C76D98308F7E84ECAC6DF82CE1C20 + +Count = 629 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00 +CT = 48BF5C358A68D93917ADEBFE8502A28BF0BE71FA176DCC9F036CD406B1F938836AC569 + +Count = 630 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001 +CT = 5E19A0433CD43034D88CDAA20FC5520DCB121896E2FA2EE8E3ED1D559EAE61ECB80C58 + +Count = 631 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102 +CT = 087B87FD8D943BE86C90678DBBBFDEE94B50F609E9B6F12CCFC06794991815AF829931 + +Count = 632 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203 +CT = D2046B38F77D9E313473C1E7038B3474648562AD862BBF37936CD89C5D9C8841825E46 + +Count = 633 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304 +CT = 7079694DCAE40F16CD56A3D26199FE71342A9FD985C7757C66FCFEC8F3A22E00E4DD7D + +Count = 634 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405 +CT = 4BFF2AEE7E5E91B0C87C3C37C405FCB21EBA70E66345F3AC94E9EE93A5BD167FFF3590 + +Count = 635 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506 +CT = 1BD41EFD231D8966B038D0FBEC6462ADDE0FEAAAC7F15F2B4B59A2F8D57393F0292770 + +Count = 636 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304050607 +CT = 4C87F09ED1F010B6ACD71C04E4AB40F4A8C06DAB5B5244F63B4DC76DB31A5CB9322DED + +Count = 637 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708 +CT = AB1F7ECD1AA5AE36A60DCF590EA06F6273EB7427B5E319CBBDCD938308F5A842F1E832 + +Count = 638 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506070809 +CT = 3F1C24737C44EA6214D70528A08D9E2E1E5A1937294EF60197E1794468168EB25E667C + +Count = 639 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A +CT = DD5EE071DE7C7D9631164ECAD095038FA6B1A7CB2EABE7BD192964337F54A4C9E132A8 + +Count = 640 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B +CT = 73A04C3645F4D52DDC5224574CC321E7ADAF98124505660A138AC1FEAB11E87AD6B11C + +Count = 641 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C +CT = FB1E2271B7B8D705FF9553B2B4B44B5E8FF60E0A0E5CA79061927FD4EA89B6B46C4CB5 + +Count = 642 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D +CT = 5CDBB5C8FC9677A96E203FD1526525A96C283325194EF02B32E1633D38D4CBEFE0484F + +Count = 643 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E +CT = ABA1A4AFFE2287BEFAAC434E1550574DDBED7D9701403845B9F50EB18A6EFADF815F5D + +Count = 644 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F +CT = 8B1A7787133F40FAE18F564509DE6A0F65827EACEB7600E44196BFD30E68AC1C84A176 + +Count = 645 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C9C149560ADF1AD807072128BCA26C767F5F6ECBFA2F27B5FDB92FE713FF57A22771 + +Count = 646 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = AB0B3BC1AE26FCC70C279AF1BA9DEC7A6085D4A152280E9DC00E2D22DBFEC4B6D12282 + +Count = 647 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F7546036EB94FFEAFA4F5EDF5BB37E21D64AB90C90AB1ED085A568E9F8C0F3EA13CD9E + +Count = 648 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 925674AEAA2107C33E78122622694FB0ECCE99A832823A54A217B488784339722C4DEA + +Count = 649 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 96674182CFCFDAADB0B98EE4A9FE9E23F2B9B276113747776BB77DFBBE18F8AD2A9408 + +Count = 650 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 08E43598469E933939A98AF2B0D5F3C5E45AB4FA40C8CBAC5409D35AE79489FE11C18E + +Count = 651 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = EB0E4202F4C050590709E4A8C66E2A8D2C0393C5252FDC06E8782951D9C2DE253213AD + +Count = 652 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 772C644B2FEA773442AEF412EDFD89B4E0765BE221913D5B610DFA03CC841FA9996A57 + +Count = 653 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = D9BA6750E1ADEEFB093C8EE5319CC48F0593A82570322BE63179A745CDB57E8E9C58AA + +Count = 654 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 83F2FCC9FC19D2918A930DA5D25E0A78271D05A6FC7C6A4CF247943778746391D9BB65 + +Count = 655 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = BDC7911CF4F575E096F5AC7B9CD8EDA13D23AF37FFD10E9D14AA448C6B467C47ED2D6C + +Count = 656 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 94F8699B09E9F9BE5C2255D4C12F1C6EBE69C35ABF4FB373649E2D8EEC01BBAFF2812F + +Count = 657 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = F6262B69F29843DD169B793F63BC11E70419F988EC4C1B4EA89BD7CA17B9D2C6089589 + +Count = 658 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 3CB59D747A84D5C68B6C76D367EEC2669A347E11AD4447DE4E8DFC033BCF469777672D + +Count = 659 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 0E4B288606238654BED0EC71EA4360593C64C8E5DDDF5E37F9520E44B03A564685F8CC + +Count = 660 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = DC06E8047545C3737C9EC3D65C68AFCE495FD9A4F32F82800DBBE5C325C4437F0EF85C + +Count = 661 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = +CT = 490A4E7E2886734863DF229603AD71852BEB0367258891B6F4302BFE84FE55C1C10281CB + +Count = 662 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00 +CT = 956021668B0360DB7793A62CDBA9611F6D92EC697F67A566411DA49C3AEED1954D77D665 + +Count = 663 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001 +CT = B3C806AEFDCB85578E4FD4FDD67FE3F87E9E7B4CB9376C71939A47871F58F5D1221DA140 + +Count = 664 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102 +CT = 335B195E259CF3D53763F05C2FDBD0CCBF7B1B28022FA81048556789784F011D8A758FB8 + +Count = 665 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203 +CT = D97B6785EF5E402E0413FD5666DEB70F9CB4722E65882BFFF60F5CEF1F53A175D20C02DF + +Count = 666 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304 +CT = C2BE5677887AA43E57016756FAE2B3FDDBE6AC849A6C885B583981DAFFBCC7D52D10BF2A + +Count = 667 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405 +CT = 52712DA11B4FA6DBF1DB41034480AC99F8CF6827B1E71124E80861C2AB906F76B990B4F2 + +Count = 668 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506 +CT = 817D27F98E2212FC1D2A6BE85C3442905BDF19F5CB11103E2826DAB124102C338E857DEB + +Count = 669 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304050607 +CT = A446D84307C0565F0C64EA9641AA576E14E2D91838A1F038392D286247D77A4CF7BB80E8 + +Count = 670 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708 +CT = 80316166310E8D960258CAC86BD54D9F2EC4D0C6807527A0396B641CE86E0AFC78D5713A + +Count = 671 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506070809 +CT = 980103AC4F2CF2B54C76D563774BF892BC0A149AAB0BF680079D416E987F2C521B3357C3 + +Count = 672 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A +CT = E5A0104787442B9BEC7A33B3C84BBB082F58A6C786D49927929778527A54E64983766D78 + +Count = 673 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B +CT = 2B51ABBFC4CF35CA824CDCBA83064183EF97B0A0D105D2ED16AED057AB3B482EB61CB51C + +Count = 674 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C +CT = 954EFDF6335CD7FB0E61E4C7EB375E415694D6543B71AB3B1FB3040FEAF1CBA65EE7E6D6 + +Count = 675 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D +CT = 5434F35A44576A2EFC10A752E43670DDE6F05C1D9AC75A2C3D78DAACD42BAD9BF1F62677 + +Count = 676 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E +CT = 4E861C486A30ECCD6D60F21C2413751C6532DAEC473A1313C3A686FF7DD5DA6BE9FD98C3 + +Count = 677 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F +CT = EA02A7DAB49BA00696B6FBC17782DF8EAFAD88A03BD9092900E9E9EAED641730F3593F35 + +Count = 678 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 79E1AC9D1BC556884696AC4B6D62B8C467C6BD18711C58C566182B8D66DD4E359A604E9B + +Count = 679 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 223A87D48DA7216BD16DAFC5DA810D18FF78E4307558636815466333BF11A0D06B421742 + +Count = 680 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 47EF322B4185B5B45EB0872B8064AAA7159E19BB7207A9DAC579BD4C4BD2EAD415544CF1 + +Count = 681 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 6781F9BBFB08259267F7B5409B5075FDDEA4536C1254CE3B2B7C9E23E9C42225F2495B92 + +Count = 682 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = DAF1C8E354CEE62DF2FA599CE15C4DB5EFFACE2D779B724B108A0E064022CDB85CB108DB + +Count = 683 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2B0E8DC409732CF38D86B3B038FD73854943CAE49D3124CE546E25696F050FD99FCD8650 + +Count = 684 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 88DE829B6C16D859EED8381CA0C90D69CAD039CE92F0F1EDDAD303FD176F50CAD430A491 + +Count = 685 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = AD9A221D48CF48EC5E4296B9818A18BDFF5D1AFFF1B774FB4F8EE48A6E8571B56B0371F4 + +Count = 686 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 69F63B718F1FC21D8CB98F307800680F7AD0FC9C256CAB536CE01A17E048F685B995E4DE + +Count = 687 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = DAE6A863AEE9A4655122AA218DA1F7B441F248F0AA7160E4BEB79734BEF1B4DBB6A9F184 + +Count = 688 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 56845422C4C39ADBDB4E6B49817AB15E87910270E6203DC218D495E849CD1AD60D4DFD71 + +Count = 689 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = EBEC5FD5D2850F6BCDAD1DF4140E15444F02650DC6A7FA91FD87F40FB25A5B522587DDBC + +Count = 690 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 2AFCD4637DA9139CABE4FEE7FA27D4000956BB26C4B37068233B315D101307CA3469AC4E + +Count = 691 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 08E7D60B9DE2E26566589FAAD4A5FBEB5D54BC0551B80F091E1E0CEF4D204FE45E882032 + +Count = 692 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 8166C48F3DF8DC41FC7EEBF45BDC9FBB07026516D3A714C980AC1F2C40852A5F7045CE7A + +Count = 693 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 56818624A6992013CA810A9F2846C741483478DFAFBF587BED1BF11F2A8BC447F3A4055F + +Count = 694 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = +CT = 6E42182BC0B5754F0782EC4EB03C42AF3549F1BF9F3A1540348A709CD8C6FA491164FD0567 + +Count = 695 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00 +CT = 447B5900DD8A1F1FC97B8E1D02BDE4C0081C2C32AA930AC870E54A21721AB01CB1532550E5 + +Count = 696 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001 +CT = F1AF3A25F300744B6529938B83EB72A5BF9232B7CB17A4BB2CCB7B306302754F5776BEBD02 + +Count = 697 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102 +CT = 03E13E320DF5C71CA04F4577DD1C0CAF16F67AA1EE6A028FB6F1BF2084EADE1A4C63574CE8 + +Count = 698 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203 +CT = BF87938AEE33EC2CB2E2ECC31520177146ABC4329F8D7827DC5F74DEBBDF4D2FD93E273320 + +Count = 699 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304 +CT = E0AD1EAF97A05A26AE6E2F929049CE326352C3F2E6D842C5A224EEB720622B727F1293AD49 + +Count = 700 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405 +CT = 47EE76BA3D98ABF9F6BFA2342888DC340DB97ED5C516E7D7C8A26087899182BF9317549229 + +Count = 701 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506 +CT = 9ADD3BBCC05A820D9B6EFE204A85F6BC2AA21F34FCCDD3405984D9A223D4768DFC224309FD + +Count = 702 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304050607 +CT = DF06F1E791A648BB59C9902821AC399D93153040DAFFC145EA6B2E5B83A97ACB83F002EC5C + +Count = 703 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708 +CT = 1844EF8F0B322B2340392A6FB34F3C608038949C8482A42CCAF7002FCFB4FA238B5F4E972F + +Count = 704 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506070809 +CT = D3F8EB37375E26B4D6F5D9CD41D8B2B20D34747E5C4F4E8B67DCB8436134F89E34869588B0 + +Count = 705 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A +CT = A1046D2563D762A0B536B90ABA205F1DA56A7233D878C61DFEE6686837E016B992AADE361C + +Count = 706 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B +CT = 036CC075D32F39D3E7AADC3BEB933D95B0C3E988A06B490FEECF8E08B581BAA08AAF1366FD + +Count = 707 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C +CT = 88DB65BB097DB7C7851E828F5179A32F55387569A0C6593C9592CE4A904F78248E922707C4 + +Count = 708 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D +CT = 14212A7C9A858C6924CE80B6BC364922C081F8C19D551F9EE8DA5FA7A8B9EB95EB5CA78C7D + +Count = 709 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E +CT = 5DF919C6C480633B4C6E1951F505BD32CD34F91B6840208E8B17D899575328B5AAD9C8E4CB + +Count = 710 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F +CT = 0DE47D8B15E29392580CDB622C7E996BB070909BB06DB059A81FCA15BC0031BFD38735E1EC + +Count = 711 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 75AD8248B3026FE87DB3221ECA5C46F6AB812E8A759C5066F476CA8262D3CC0B1AA1CDAE79 + +Count = 712 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 80E4199B18A9A6E947CEE980303556AF1DD86F1D989AB7185CC8D0AABF37651A6FC874B784 + +Count = 713 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E94F4B82E14B78B17CCB56982C3AA3DDBE1541DC4F425429D496F50CF56508707030F7332F + +Count = 714 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22298C97DF5F814D1F0F1D3D0356D8AA5029EC194AEA908A2E7104EDFE14F27A0BCE34B212 + +Count = 715 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = C133E00D95788CA3BE0C57825EF02421157A2036B6399B363654803000241DE93569B2855A + +Count = 716 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 5E063F06D6C5949E5A71CFC0A0D491D567F90C6E2D8F539BA1775475C3DAF47CBD1AA6C3C3 + +Count = 717 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 7C9E9E12EF9586A2089B0D0BA2B9180E60982D498894C36F927F854E889BD06AE16659B7FE + +Count = 718 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 711250CBF13451750B0CB51F1579D0E6FDFFDF65C19167CB84091EE8AFE1B410BE24D60F48 + +Count = 719 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = DA482AADE11333A3A784124B63DFCFA84B65189C802DE1BE48983CD6308203E0ECC122D97B + +Count = 720 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 3CA3EE3AAACF2D70461829E3673F90174EBE5A4B3BA4B7724A7774A92364747B3178A613B3 + +Count = 721 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 1AA6D1A58471F7B2409101C2F4F2824A39040F56E96FBD2BC0481906D71A9C5BBFAC0C99A6 + +Count = 722 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E29C055D186D684F7080A8EC33381DAC6902B653E881BA92962159D414AEF992C03BD69BAC + +Count = 723 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 287A386916BCBC61478FB49F7708CC306BC17DBB4B99E2993B9D12BFA0EF80B06C64C41781 + +Count = 724 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 9D50D834CFC921EA885E9228ADDC38E0DA20ED4F9F67F91E7B858D1F98E8E86A4FD6BF9E69 + +Count = 725 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 052AA063DB8A8F865B4228E40A9456901BFD0509F9147D2A2F681222E6D625E8A2C9C9A6E6 + +Count = 726 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = BF72CC915D3309D49CD00BF0C538FAE343839E82745D4280D4CF605E65519C43FA35B7A9EC + +Count = 727 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = +CT = 2EEBF5D2B590EBAC4AFA6343C6EB50A04F8C25E7719DE1A3DAE8AC075BA3EA0A3C6B9C8AB6FF + +Count = 728 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00 +CT = 094011114CC6619F4996B8263DCA6184A147B68FA32A4C3017171E9F6A3845350F3D45C4983A + +Count = 729 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001 +CT = 8913D6BC6205EFCA20F5D6C2DA99A844EA224F3D5F2C8D7A36DBCB6C327AB6CD86FAE1650060 + +Count = 730 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102 +CT = CB812D246E8C312101D9716D62ED6DEB20A154E77047659B6A271773C62B6BF3D8CF49B67B95 + +Count = 731 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203 +CT = 6C4D7BA3CBEFEC1C47849356B58038ECE8C257C5C3802F1B6DA38BB600FDB45B326F9118B43D + +Count = 732 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304 +CT = 367CBCD15C2EDA5C5AF1EAFA882D23BEF635B1BEF8F3D309BBD684DB9698517A7E19A9628B6E + +Count = 733 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405 +CT = 8A5DC05353397158FC2F11323AC55C09B3CE45E4CBFA221ADF54EC468A78A0F2B817B5DCAE0D + +Count = 734 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506 +CT = D64890AA62D3F7431AEF164F745B637A4DBB33F2544BCFE7D854085ECB721EC422E56B1CF81A + +Count = 735 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304050607 +CT = 3B358F8ED90E72B1FA67891C069A7E944F7EA245D1AF6A2DDDE4F0184F25ADCE0E440243E5E1 + +Count = 736 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708 +CT = 2E5F156AE85F6CC3900ACDF6199383A5CE88FFEA72B1C377B5FE3EAD767BF57FEE78677416E1 + +Count = 737 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506070809 +CT = 1092388469017807194389706CAA961C69F4DFA8138BAC2CA248491D8C140341CB271D82D5A0 + +Count = 738 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A +CT = 86DDC9C8F3D6D66915F5A0DB905E6BDB3B4F6F7A7FAF4FB773648DE1FA6B9FE4ADD6A6C6F25B + +Count = 739 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B +CT = 43E07D84B9BFDD918D16797A004CC0E1C69EABBA434A997DEA5C59D2B1E5651915BEC8D1527F + +Count = 740 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C +CT = 4C118B7C6AF5B9780233498EC00C11A50F0ED8D12CEA655B01D7D3D36DA85E52861E2185D298 + +Count = 741 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D +CT = 1129FB46229983009569BE51D0A47C3F90C38E9D0EC2A425A5C585C62ECC84C2330406FA497A + +Count = 742 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E +CT = 1DF32BBF88E42D5758982979B414788316BF4F74B79C55DC89DE290C8B1E458842C6EA7425DE + +Count = 743 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F +CT = D8F523E8E3D5D052FBFE737B507423604B28D34CCB21AFDE4ED010594C7F0493C38480001861 + +Count = 744 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = B8EF2648409DF3170E7DD883571CF599A41985E1702413731B197A46C13C4B911E6CCECC6CA0 + +Count = 745 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 6EBBCB0AC350D23C313958452F6DBE21C50B2DFB1996D08BD24AE70BACADA70917354C033B6C + +Count = 746 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 8C591987F3ADA292A5202AAC3D228624F4ED45D9F324F635B2D04BDF5C283B1318F526514A7C + +Count = 747 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 6B122135EAD8295462AE73198FFE410519A5EA0138848E49B6EB6075EC96C19E812434A2C5F5 + +Count = 748 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = EA5CDEB4EA23F2E987ADE3B2C37CB71B5AD3822D09EEFFBF39453D2EF633DA718AF595478E79 + +Count = 749 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 490AC1BA199C9D12F9EA069F0D62B3A8F71A5D01D9F2B35898B6770EBA233CCAC533B055EFE7 + +Count = 750 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = A6B9C649F3DF0B2B0A80515189C545DB13F19D8A78B1FC3C8966857F169DE68130916BD44448 + +Count = 751 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 8ED0AA3BC2AE2524F0916E5BF2A9C869FF6D29A202CAB3F73C1551E2EA10AD726FC1E047479B + +Count = 752 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = B10ADAAFC47DB344BEC8163CB26F43425A53D330CAF9C58E1E3D36160FA641DE99E36052E673 + +Count = 753 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = A516030137972F0B3CB18E9004E216FEEA6EBF81970279C7A08E72207273AB8483B70464D12E + +Count = 754 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 8197B7F71A1088CE3DE9FC3D4C23D5E522D808BD0B0BD4485586FED9346B790FA087D985E7BA + +Count = 755 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 42E94B2ED011FF5E030CA672968EF1244A7EDBC180ACFCF512C36425CD0B2FF049098B423708 + +Count = 756 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = EDE668393407A9640C5511DC14A9CAB88AECE27BE7D1EB51D7A5C0BA410725AB826804C8722C + +Count = 757 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = A1FD495DB04555CA2DE857C3C5811B4D223D82328332170FA7C9ED1F9B42170714F585CB0884 + +Count = 758 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = C8D13C94075526DAC76E7CB1346B0612668AA906FC033078A49AD9C5A39EB38F2EF61AD10466 + +Count = 759 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = B0DDF37AF7457D58F3D3F5ADC666D6C11DF0237668414BCD76B762F80B9D412CDDE27D122919 + +Count = 760 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = +CT = A4A9C5EE94E98A8B13D6EA5C1C2ED0407FBAD8FA52FFA2A3BCC620AAB685447453A60BBEBC14A1 + +Count = 761 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00 +CT = 2EFC5DD9329E33FBE1C7C7165EBB6725632A07E51AAE3C021AFDED4821007A7A5A024FCAAD53B8 + +Count = 762 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001 +CT = 3E11E140DD3B2C96E08332B34EA4450301D1E7A63C7611168C537540DDF4E2D332A21AE3CC0081 + +Count = 763 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102 +CT = 1EFFFE66004739445A2DF9E5F3F777A229222CF15A2E50575C616414D49BD1AB8E1241704CDBC2 + +Count = 764 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203 +CT = CE4281EA3844A66566AE1FD7B85910BAE650964B3B0684107A33D972E3501AE9310C1260620371 + +Count = 765 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304 +CT = 1F4580A2482AF4BF411337DD16B9A917A1E2C6E1B456CD0995F252F36EBD6E091A2AA25259BCAF + +Count = 766 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405 +CT = C4DADEA234E4668A00D1D8DFF1E99E86D121CF26A9560D3B657434E3FC6F90A8CB23A04895CB7B + +Count = 767 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506 +CT = 398467E91BA83110105BE189D4CED49C383A2E3891B5FD4879C6EF22CFE15DD9CD4A163346CEBE + +Count = 768 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304050607 +CT = 6A2CFA9151DA72318D610F3E9640A6405DDC62619509B8F96E08B28B3E54FD5BF4BEE78C53C6F4 + +Count = 769 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708 +CT = 9322CE5051C388DB9B513082B5C24236CE7887A05FBA7DBBE0431D6CA3A1B5680F78151E517C78 + +Count = 770 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506070809 +CT = 7E256F78989FCD7B00D912E4A81BA58BA12883CC3F9AF20E4074EB066F424F5541AFBC88848601 + +Count = 771 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A +CT = C21701C35E0E5FB450C66BD785B5E8A35426198531AD9BF1B30BB9ACC229A49C7C247BD28887DC + +Count = 772 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B +CT = 89D7DFC17B98897E84B11F0159DBD6445E671DBE2F5323522C2BA8AF02E074B7AFCC5487CE71FD + +Count = 773 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C +CT = 97B594C65278FDFF5DC5DE78872F7BB256B9A8A40A1D88AE5319A2C5CC6BDFF43ABA2B4E9A0231 + +Count = 774 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D +CT = F245BA07E7313C4D6DF2A7AD249934F9D623ADA17805B2AF60E486132BFD356075A9B8A8BDAB0C + +Count = 775 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E +CT = AF25B22EF43E3C43233801860542510677C09405A112E08BBC49711C226BCFDFFA024C1423DB5B + +Count = 776 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F +CT = 6350A0EF716237E8C673C80CAAECFD1CCA33EFD8620A0C47563D500B3F245273C122B3CFEFC6B1 + +Count = 777 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 4C7E93A2E700534E094C38FC1E15EFD0B38371076DEA78C0989346825A3A72243145AF9A0E3C5B + +Count = 778 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = B2E1F92143DE07005E38A3B4CB53405C956C98862723A2A1686E5AF192D56D062F53E57317DB04 + +Count = 779 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = FE83C5247C1F5555F5A72E735B064A78E165781169AF07D2F78FD54B294C403A90B1F4E65B2644 + +Count = 780 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = BF65111B5D2002CBB859FE63D53E7C3CE7643316B7C43F767ADDD554AFC2EC90140469C306434E + +Count = 781 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = EED3146322BB83F0B7D895480E4AEF71C8D6531DC7498271AA8F39110C1E3D7A7CB12BA47A9682 + +Count = 782 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = FB585EBA78EE2CA4B5A113B74FBDF72671FBA412CDB00BDD52644168248FE9932155EC718DE545 + +Count = 783 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 205FB1023DFD4162A2D9754908BE4292C1A0E2591CAF368B6D861FC137FDAC7EA9B7151D77DBA3 + +Count = 784 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 9B32D954A56EB24A2C1A830C71F47220BC36196EB6266DF038290F09D8AC8031582D675E24A7A6 + +Count = 785 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 1436612371EB40E2A9C6538A0398C0748CD58D0CDCD34F4F9AC3C0B0379146FC8D0A8565DD33B9 + +Count = 786 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 40974A76C99D02EDB4AE33B7BC43B1E4429C3746CCEDD2BAA7FFDC2F02F4F9A778B3BA0567EAE8 + +Count = 787 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 05056E1CCCD5B8E116154DD41834CA86B9FAA64D0EA73FB22516CFBD24C9308D1A4161994D6B8B + +Count = 788 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 216AED297F8EB030731AC7EEF3AF4245B58EB8F3793729C5D8FFD93D1317A8F0E379B4591A177C + +Count = 789 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = EA2EB6514225E107CBBDBEB9C18AF30A8BEC8DAAC73D3B32A37EA22C50BE11B49A626604C14464 + +Count = 790 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 29E880DAEAA07EF8893CAC648B5094FEDFE58CFB3AA7D0779E96987201A31B45C148CAE6BF09D6 + +Count = 791 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = F41088E8A014AEB8D5D64D7469C2FEBF859104321AC5431CFFB2A72FD65C63391573B409D1DF63 + +Count = 792 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 0668AC9999E590ADBD245FE6CBFF85CE11AB7A148EB006B759FEA17D6877B9AC6113630C987418 + +Count = 793 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = +CT = C000827D8D01B9B5CB952F7DC7B57B8182FA83A90D27B20C6E81CE63AAF16C1BB99DE1EC4944ABC6 + +Count = 794 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00 +CT = 0CA91C09E967E2BBA0ADE530602B05E88ACC43913B7C19E54BB93FB8A609C037C9A2B27679C16147 + +Count = 795 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001 +CT = A969B567D8890E29A74B7F26719303D2480269FC4EDC67C56BFCFC490D841975D91988D1FC91D442 + +Count = 796 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102 +CT = B6DFAB41870974CC35044253107AF44E6B9F6D03159FA3D1B71DDD6702C7E5A77075AD1663E4AD8E + +Count = 797 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203 +CT = C7F36BD6B93D58FA3EC0F813DC24F69B250996FE50929179D51D181236DE2AE6B1FCCB290E089FEE + +Count = 798 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304 +CT = ECE85A3C013F461931560D39EAB0A7E90F87EF4EE317FA92A54A372C95AF001F1108A4AF72D09D0A + +Count = 799 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405 +CT = B0F1708D4378E80E35A96D144C6FDDC849C3D0835FB349DEB70CAD18E11ABD770B56C83796706340 + +Count = 800 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506 +CT = 42D77D8C4611818BFA937AEB8F6CBE6E47A856849810D4CBD23AE820003CDC55B8AF5B8B3F58544D + +Count = 801 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304050607 +CT = 887D6CE43B5E0E82A9680DFDFCE69EE0248B085B27E7FA2ACC636F0B6119DC0D20E1AA85A53BA263 + +Count = 802 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708 +CT = 845216AA26F8BB4A891A66AD2F1B99113BA527F79BF46B2953BE0DB8D8C71FB987E37F0361BDFAE9 + +Count = 803 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506070809 +CT = 31057115C2F90BA169D2A4DDE2A857E4D94EE538159E886B117AC2C39DDD1BA637BB46078BC2BE54 + +Count = 804 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A +CT = 8BC592237EAA62FCB2DE12E813D88E685C8B8287F622DB18596C360524AD0E169EDE1FF79CD182B9 + +Count = 805 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B +CT = D24BE21ACA8351A249B3754E1150FEE6A2EEBCAD57D6AA1EAB294402BAF07466D32A411077F2ACB0 + +Count = 806 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C +CT = 6DDC1799B115C95F6D253FB5D311530C5B666F4C810F0E7FC2A42284BFC809EA54F9FF439E0B2045 + +Count = 807 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D +CT = 3625A6E8C166D102812703136F595969AE5406D034A532312E7F21EB18A1A63016012552EC6FFAC5 + +Count = 808 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E +CT = EC0AF560E68430C451AFE03E78162F737FD5F37F00309B7FB8FEF6C652940A90A8E6C12CA14047A1 + +Count = 809 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F +CT = 241B611643449CEDCABC0253D571A59BE92D678A8FCF31E4AC5464CF55C0A940D66CF20687699753 + +Count = 810 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = AE4E53BC1A28901D145237AE8AFCD15307EAFE52B66BA2FCAF8FAC873DA8472DA5A18A729FF2B3B4 + +Count = 811 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 926C98DC8106C4D6C383D777952E37D33E7F05D4DEBB8F48DA856F1ECE703B820F026B0FB84A0941 + +Count = 812 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = B9937D4AF0E88F8917E9F6AA9CF2D00F73A472C20FEAA29CB2497424C33A83F31844C6DD65E98A12 + +Count = 813 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 5961E61763DC4B55E9D04E3AB6625CC9DE674F1734F295ECCCF4B881A7F295201A85A3D79929E9B2 + +Count = 814 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CE56FCE198EB2AF128BB01B57F3A22D8AACD993CEA4516F16B6E3F51BEA97919119A143F576F0B31 + +Count = 815 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 05A604FC68C16ECAEDC654BC0196CE65292CD43BEEA9B1E9BE9745924F6177A9D74EA6E19C2A1F6A + +Count = 816 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 6628258D3B248FCA51B301B3AAA2D75C35BE3089858CB1CDCA435A1ECBFD774B94F9FD53F9F28818 + +Count = 817 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 1F945CFE5099E97FE6961491A478DA682D5F96F538E7CF44CD08B7FB59F87DCCE3205A96C41CB364 + +Count = 818 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 08004F723EF18C9C782B583CA487365766B9729C48C91EDEC884A7821AD0ADBEDF5C3E8B5A566826 + +Count = 819 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 9C1211CDE325FF71286314242F5F6D16946F1669FBC142CEA0122AB9C7B9AE1102C5EAA9EC9DA33D + +Count = 820 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 77095DC22FD400471FFC7F3991036AE525F9A99F8E3ADB69D79EC1990E0AF56BFD23501D8BA1A832 + +Count = 821 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 4A98722B7CEA0BC6C86A17D7491EC2A38BC241E18F67C975D1F70AE58522950DF41E1B22F9FCEE23 + +Count = 822 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = EA2CF08FC028D934CAF48D973D6B6444D2F162CB14E5EC7BB4326213DE95EE2E8F13CCE3EC27C4BC + +Count = 823 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 032C015B0B314DFBD38A5455A7642E0D633554D3A29B0132F3E74C8FCA9454FA8608632FFFB9A37B + +Count = 824 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 8B8BF86B7481569287473A68FF15461D84B16F631AD5953B4317FF5DD27794C9087424BCA78F68F1 + +Count = 825 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 04FCBB9CC28981BC668125BFD22F8F54AE1911448C44FD40E3F596F087F7417F62040F20421C1763 + +Count = 826 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = +CT = C9170C2E811B227FCD6093B696772476529CF855C18066D9BF63A8580728075D65110E24685EE2EE0D + +Count = 827 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00 +CT = 1A6158B87336FF4646D44C8FCEC32A719E7343E14C4512D3204B71B3C7F0A47345E973F40A22C5045B + +Count = 828 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001 +CT = 95EFA1BB28CF6DBD16A39CB9A759882A6566C07BEAC190DDC59867FCA54331B38D877989C039B35102 + +Count = 829 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102 +CT = FD664F2BF2F326047E13083CC385FF001D67454320F4DE69B070CF341E4BA416132602C60EDB99CABA + +Count = 830 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203 +CT = 5F41C128A483AC43BF43F5E8745E781ED94010E1C8614E222C0B85A38F3DB4474A55BEE506C0D3AF14 + +Count = 831 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304 +CT = 853907274FB783663AB025E062AEF2403A13D6430F2A64A203B1FC453E239B9079178C4DAC0EDB424D + +Count = 832 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405 +CT = 3A321DF65897F34C699D3B4DF239FF44517D4DA03B0C27567D89758F992B031147CA6E79707ECEA704 + +Count = 833 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506 +CT = 413BD8B3E855CC5E039B352EEC28B4D49C7E1D272C78675BE7CB931FB475BCA67FAF1792C66A0EF147 + +Count = 834 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304050607 +CT = 3AED02B733B3F1AE8E1292BE87B7EE9A2F94D078463F5BF0E39ED90435F04B198388C0C3FE0D8F949C + +Count = 835 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708 +CT = 8FA954F8C28DFDD369D15E48B2ADB475A16BF4D268808CF74713D682440E822CC33D24188C9CBA663E + +Count = 836 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506070809 +CT = 738D3DABF87953534F89AA0232C3731DB5808A5855B0073E913EE5C385219C52F4F816C2B504AD3C14 + +Count = 837 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A +CT = 6E2DADFF6322E89DC12003F6D4DB8BD2A641B6F5FBAB545DDC64C93A66B60F911803F1697061F65AEB + +Count = 838 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B +CT = C6505EDE6EDD40F7F7B44579F59102A3EF96341EF64148CFD344B06EAD996906858E48D36580B58BB6 + +Count = 839 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C +CT = A57085ADD164FAC2D7F5CCBEDCAFEB19A1B64227A6EF0BBBF197D71D1A919F27390C796A15B658AF94 + +Count = 840 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D +CT = 1355A5DC8DBCE7741582B7AD08CB84C9390527781863DEE2F6AAB6A74489FEB2E8A45E4A1C9DBC3AE7 + +Count = 841 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E +CT = FC0150146EBB88814ECA874CA64F6C97692226C337FF5BA8271AFBD7FA3DC075D99E7945E69F5899E7 + +Count = 842 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F +CT = F62FF55B93241141AF10B2EE32E56544B31B3D47937817D6EBDD20E8898F6F4EAE2E8E5F9D055F5151 + +Count = 843 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E12FAA314954AE0FCFEAC615CD836F5845885C6AE3EA874BAB53DDC81BD8CDE368283EA17AA8AF3673 + +Count = 844 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = CF04AB29FB84BD52C4CEFDDBD5EA3D13946C552CF99E4EA28C452E858904D74712859D748D1E632724 + +Count = 845 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 6F1D7E2A516F10A88AF3119CAFD876A118ACB3ECB15FBC13CE9D077D91FF0BED6751D3BC795BC49C15 + +Count = 846 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 334D531BFF5182B6F333DE077566D8D9D3632ABCC350A78EB6787540BC1DB21FB941290B769537A2BF + +Count = 847 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 153D88758D542B5C2611F882AA6E5ACBCE7FD31ACA3BF964A853F7E52E03367C9F6FD7C73F50B9B24C + +Count = 848 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 079C2F46C630E65A21F442EC8E6F839B98C334BE3AECB266272503B163B8256BA06DD33B8C12BDC03F + +Count = 849 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 8C9B88D0ED43D65EE82415738B81EAA5D0322191380EBBE80F303F520B1BBA3C8F4C5FAAF073ED4962 + +Count = 850 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 5C3738344DB426A22B22D7AF3A265276FEC4AEE8359D3BAB3E9E03F400A19594A3BBA661FA796925E2 + +Count = 851 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 37F373E3A77A0900F8F3C8AD27FF24812F4759F6ED2F54B12B26C2C8D989846BEBFCD63D7528525ACC + +Count = 852 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 02966CDC3666415CEB1F74683DA6A957F113B710BD281F6D962CDBF2EF661A4C4329527E534F58F243 + +Count = 853 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = A90B952DB395DE1901B3854BFF722127722A116F7C1F3D5CAA60CBD4524BD7743A2E8D4F375C4C7BC7 + +Count = 854 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 8144BAA7CBB58B7CBA55EA5C1CD273FE72472C5D9521F2E512BA92CD4C4C0124411BC90C1E883D1F68 + +Count = 855 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 1BFD03AD6763BBA807B3C16E0566F9D465B3764639ADAA17FD47C0870570E093B759EF0C233AE033B2 + +Count = 856 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 20BCEA542DFB8899A3EE1EFCA08A1E7A978DF163B0619630ACD82A60C8386AC6F30895E5A9D3189358 + +Count = 857 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = FE75FCA4BE34EE220177EF51603647CACEDAD888396527B5B9D70C11DE33C9DDD33653A358C2E7AF3F + +Count = 858 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 5B158DE40EF52648B3FEB44F73291DFFF5F3E3DB5FF224183ABA576846F08086F6052704CE39358565 + +Count = 859 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = +CT = 419A816D395121A9482755987BFBAB9E275F17126AF4651C8835116F660AAA0012B605C91BFBE1F4D5D7 + +Count = 860 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00 +CT = 20F5472F60355295AA31EE25CB256B2EAD273E91A55BA3FFE96F578FA1528132BA0A738043A701C31487 + +Count = 861 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001 +CT = 1730702CD7218BD416D1ADE3F44924B06849659611DA6866B88CABBD2ADB366021BBF7271E2858446D3C + +Count = 862 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102 +CT = 9AA77143D9E7F100470CBCA1743D65238665760683BC82CEC1DB2A2BCD9D579BF8F9A5099114C32FD4E9 + +Count = 863 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203 +CT = 58F90AD5D9A0905E362A89384071D5ABA81E0660575E419DEE23364A7662D7EF4FED8E1854A33BAC68E3 + +Count = 864 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304 +CT = 67F2D0A4B463C49AFC3D044D6AD18262E43F2EFA279886122731A7ACD6E579332544AA0585C1B2036CF0 + +Count = 865 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405 +CT = 9F4D35491C5D59552BB65F58022A759CA6BE2F89CEE2B4ECFDAC53E0F3ABD9A9AE54F726BF3B93501B18 + +Count = 866 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506 +CT = 215F6F14CFCBEDC210BA79AA04C040294F66603BC57AC12196261056DFBD318DBDCDC6227962D6050E0A + +Count = 867 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304050607 +CT = ED920833489FF813FE43D786D8FEDC286540F61BD05A840813B1977C6D2FB3CD2927A0F19B635D8E550B + +Count = 868 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708 +CT = 2953F41BB669963509A5A179DB2F8ECFF157D2EFA71E4AC7F14CF7723DC2C9196C9C4ADC7FAF71A7C466 + +Count = 869 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506070809 +CT = 40C7D68B830F80FEAFBE426680402C84E5E6032F7D850B4D0A4C85C7D512AAE61467632E95FB2510E2E3 + +Count = 870 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A +CT = B9D5E2C01D9373287530B262BE1929857BF0B3FD0C70EF20391D4620FF7159635C5D8E5DBBA4019462AF + +Count = 871 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B +CT = 80773800F9D9FD812B90B29A952F923B371ACF311E2A6256263E953CC612E4C337C06961F447666E3C76 + +Count = 872 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C +CT = 4B545651763C2125F6D70A82EC1F1B8CEC40B4774610A27AEF21FA64653B05DDA347DCD9175E70EC774B + +Count = 873 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D +CT = 9A46E7D0ED9467E13609C9DC6B57FD2C073105ADF9E013C4FA9979FC3DB6BF954E66F09BE83E6DD7E483 + +Count = 874 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E +CT = DC0A3D64F0101A354C5E09B9E88FD869FA04B419288D8E0B8952770BD132C8D1761AC6DF757FAF205DF6 + +Count = 875 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F +CT = 7E07DC89779C365A87B73A3A32E4D6AA0885524CC23B8266DDE48A31C1806EF9320090FBBF4AEC257D49 + +Count = 876 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = D89692073EC99EE6BAB2E4E5953C8AAEBB02DB0EBDF0048835013AD3781A7A3B00781574E48845F40372 + +Count = 877 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 4ACB2196062983C474184A500F221525EDE764F35E725CD2DCBB6DBA2781CA23A3A939F141A890B830E7 + +Count = 878 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 7608B3540DEE7EEB0D07E68ACCDD5BF8D94C6BD4C4141C049F6C576C6B9AF6BD3E22711C37E8D45C51C9 + +Count = 879 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = CC3FA47F7667B09C40AA0D1C168D3C180A3ADB9A9BEE3A00620563BB63E299AB4D32F47EA65C61662397 + +Count = 880 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 48198078D1A4C96CC87732659FA12795EB1369680567C74661C23B4B5512B28597FF427E7BC412BAEFF0 + +Count = 881 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = F421DF62F8B729EDCA7D3FCFEF7EBD6218160CB08AA5455ECD410C117FCD6AADE20A98B99B33F3BD1606 + +Count = 882 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 817DEA984D5DEEC575D5C34111734D1FDDC531465E82F487ED0D44A09A9797E7F186368340DAB30EF216 + +Count = 883 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 54B488DEA696AB95944D1CA6CBB493B09DFFC77591FD4F76A2E3984CA8D4BE63CBD101D5C98545621E47 + +Count = 884 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 61F38F2EA0D5B188F007FCCCCC5A0BE47A6BD38498A08EAB42F4383E333B4BE111CC7F973C7E81CD8EE5 + +Count = 885 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = FD20037A1BDBCE3B5CA3F19D081D8F53727D31F0EFD156AB2D7CC92803A6E8BF6E6E0DC365CF88BC614A + +Count = 886 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 6B233034B356D13D4AA190D349FE71C7BAC975B870BA5C2307E8654E8B61EF2143E88D4CC0395FC90E0D + +Count = 887 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 36E4E1C14D057C36DFF3AEC43A0038087E9B5B6CB7A90876D0622EFF442AB536E7DCC841E9A31BC43D29 + +Count = 888 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 8FF0C9F01EB2474B92C6D9C080595CB38BC2B796E767C6BB5C7CB40FBAE44303C26DEFBD605EB8D4B56E + +Count = 889 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = B9F40B184D6A9F8F687777AE14EA0653F7DFCF479564A20EE7B6C52B2C9293A3AAFA84C0C114284764D9 + +Count = 890 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 4D0D8A0675DA4E6C2945AD2D5A3A60DCB2C46EC5BB08DA1EDC210968F2950F317E490A34FDD5FF5C1C86 + +Count = 891 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 51B00DE55EF93FA3D636E19DBCEC81D9D79EFDB37FA99CE6ED2CC88BA65068DB6A0C25409B2838ACD6BC + +Count = 892 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = +CT = F2E21C8F7FCA30DFC73A8EF3089568A405C1CD2D1E0659ABD5DF5F28228E4F12631D50C429A62A5A186103 + +Count = 893 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00 +CT = D193DB059A883B840F0C10D24286BED3CC3AE43D456DA94F85C5C40BB93882CADE3F83B31D1D6312280DE6 + +Count = 894 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001 +CT = 0600545F11F2A96019159E3F37F262ACAD959E97BEFE57C3945AE38A4A5CEC4EF82A45ED9CBFB4FD46DADC + +Count = 895 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102 +CT = 71D12E18CACF651E3EEB3553222E36E8944F8F6F55F7915C3C2CAB5C1BEC6A99AC5AFE32768AEEC74CE9BA + +Count = 896 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203 +CT = 723D5B69C542D808EEABEB34771977AB9E07CBDEBC367E2076248BD0D8B0340C1CE3F2876512D510692ACF + +Count = 897 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304 +CT = 2F42B21BD65E18A7B67EDF2DEEDFFF9F153C8D9CDF785243DBF4046067E0BD3C98B6A220BBFF8BF11750A0 + +Count = 898 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405 +CT = 4D2B120D2CF0C9CCAB90A0A8380F66E2D5103AAB66CA02C03B6EC1B47A3C28ED2B1A2932DC22D742F3CC0B + +Count = 899 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506 +CT = D9CD13E58093FB45EA1C0B1B3ECBDF631E06B543718E9EF70E9D528FBFB610F31B3CE48D1C124AD597BC59 + +Count = 900 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304050607 +CT = FD642CBE3CD82141394C87D6874729E9AFE5AF623206F738E045D41523698469150FF6ED595EF3CD0D5338 + +Count = 901 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708 +CT = C617BCC3DE1FA3524B9019FFFE05CD9C4B243830B2231E2B01330FF152FB37C002B85CDCCC2BB707778E68 + +Count = 902 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506070809 +CT = A76A99F5C213B1FB4B02B6FFA408A47F2CA840C95B9D37DC04686B11085808BA64AD2CEF2893E8E784C520 + +Count = 903 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A +CT = C7C892C0ED0CFE339F40A67330899D19EE5CDDC4562A251040B3C79F855FA7916794B89E9C052A8EF0A491 + +Count = 904 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B +CT = 0E49FDFDFDBF3C9A39960B13E0AD74BCC08B68B13B3B34B106CEE7913CE9D586E9677632DB387EDE306F09 + +Count = 905 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C +CT = DB9F186CC4FA64549078A7348460807E751122F19F643F86DE2ABF03F6CB35157AD3FD856F52F30B308D3B + +Count = 906 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D +CT = 47B1AB9D977E7F389C73166A2FEBD053CA96FDC7ABA12E0612B84E2E3500BD766D9D4E7424CE85D0E51634 + +Count = 907 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E +CT = 101074C03F9CB3B42C8DD7F572A49A093B1E2A5C017993A3F726B60D936B538D253CE84A8D29E1E85B40EB + +Count = 908 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F +CT = 155C7AD1876C3DA5678132730422E48C3B73942F1051F782DB84B5F1C70DE1122D4E1BBB4CB227EEFA6955 + +Count = 909 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 6C3B27FEC386CF119988F2D17F4AC4CFF73AEADA18F5E4CAB4BCAE79DD67F473A2A7643A608BD45364456F + +Count = 910 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = CE3CE9F1F1C09ED6319E557ADD4BB0E505FFC4F21862FC983CF4FB76B7651280C712C08514CFDD39381674 + +Count = 911 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F815F8CABF46B20027886E5E1D843C63CB59D575EB4A70A581C855CA76C9FA2064A7EFD7D26C0C64B03165 + +Count = 912 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 969DD4AB3363AD45593CDB09F5E897064CA8E694D4333689684013112139B6EFCC419F5B2695EC173F2AC4 + +Count = 913 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 5642072157E26636092F8B30CFD109ACF18A1E8167DFB0DA5EC26E63B089CBF3F07E07C3EC7A51C142D2F3 + +Count = 914 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 0F15F6DA00C966B57FC572EB42DA8181852307D89EB3CDCF975C9362F1BE79B2900167471849078111DEE4 + +Count = 915 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 9F90061E714F9FC973166EFD46025C8321DD06EDDBA649C9F2059789A189C07E32B77D1EA23E89C1A63214 + +Count = 916 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = CE886499D31DC40CFF0E9797AB3F894FD0DB32F7A3EB049BA9519514FEB2DB3FB3D6CF7993F3AE42170A20 + +Count = 917 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = FC183C633855953E29AC3BF745A1BDB55015522A86DC0AE734B6BB620A044C33EC922976346D94D37ED9FC + +Count = 918 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 01F1F4D719B18B3A40C930D4B613BD6BC2F950FEA9962200CA3EF73CBE0003E46411437C063DE31B13FEDD + +Count = 919 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = F7D4BA9A3B57DA489E154D97405861F10F8CF4B00F6C477487E1B318F2E111D176A323C760122B17D40E8A + +Count = 920 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = EE36D428BAD6E3901FFC7E4120D767C160E638A1A2590EA336164648112BAA0CEBEB655285A46DD96E99A7 + +Count = 921 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = CF96D84E70A1C5ECF18D96397216B6612F7E12EF26F7DE79E538D4043370C37A99A33FE952261B242FFF2D + +Count = 922 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E1707B9CEB74857EC13A0EB3190C05C90F6D797673D4818B009FE8F1FEDD3F7B1C6B18E0AE0E22AF386F5F + +Count = 923 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = BF5AECC86F81A7B24B3856B335E4107E86D99F2BE4C3B56352D82953EB5F9F25A473B02935597F46A7B93F + +Count = 924 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 4581AB92CDFD5A97745915AF2D8C604599B836C7265B534C294D315FF9A4F27219103F5E189F7BEFDFC3E0 + +Count = 925 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = +CT = 89DCD6C69995B8269D08E4A958B0DF061001B88CA48DA3C7212D6D0A8C24111BF44D9BE6279708C990F8D5FB + +Count = 926 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00 +CT = AE5F84185561E0DB43EB3FE10E2FB008148D2D99DCABC1FA80F424B13E8838804D9AF5A0CCBDF561D704B0B8 + +Count = 927 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001 +CT = 58CA96439F3DB11518C22EE7A0F541E77E762B6A2C73559A76771FB1D7BA18225AC37DD0CD53EBB6120C596E + +Count = 928 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102 +CT = 665703649040E56059B60368BDFA0CB2DF652790A0149994885035F12827ED1EEB4CC502C6CE94A287FFCD7C + +Count = 929 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203 +CT = D2A088F6A0D0D6A6AB4F31915A123CEE93AE8CC0DFE7094BF51D62F45B5E3522B8BF4704B8B60915DBF11BA3 + +Count = 930 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304 +CT = A4433A764D6BE41F1968EF46B98AC675669B2E983A3B48B44CF578C5BFCE510C16FB3193ED3629AB246C2C88 + +Count = 931 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405 +CT = E5C649AB224A7BBF5E18265E312ACA291992BCA73D95E3C4AD11C3B817455112FE02107028E31CEDAB0FE1D0 + +Count = 932 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506 +CT = 7EE2B53675EE57515C36DB3A6CCD567BD3ED5687BB0457EF4AF23865BE7154803969E39EFA08400B5C7D77D2 + +Count = 933 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304050607 +CT = B59BE789C1E2EC4A535D4C5123F353C79E5B927488622AA07D0F0D8C49E54B90DD6FAE2744B587C5ABBE9853 + +Count = 934 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708 +CT = C3DD58FF0913A7395A6D43AA254C8DD93A3E9407D803FDFA0F412FF12E9F9461E1C9A7CB0ABA7ABC804EAC3F + +Count = 935 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506070809 +CT = 5212A4C796E6E3CD2A71798D82FE62CE5D098391DC5D69B136648B1FC0E9438BF085BF8015ED3679E32C69EB + +Count = 936 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A +CT = FD2FF2C2EC29F1DE683D31EF7FA5813A156FF3748C6EC86CD1AAB941F576F2274B5CB53B9DF592CC306C5DA6 + +Count = 937 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B +CT = 6271A11D4624EECD2CE39AE1243F03B004E81AD809200A09196B907FFD785AA89D21B16574329AAC91C3C1EF + +Count = 938 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C +CT = B361733657C17FACC8BC674E2145063F181FC0A272CDA24B689E69921D88D6083F355DB8FE6CD069B7168302 + +Count = 939 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D +CT = 1D544D1067B9E42FB6317B9DA8DD7C9891F531144D459B85DE83BA941A9D20B2F8F4B76BBD7C6831A60F69F9 + +Count = 940 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E +CT = AEEA0F96149FB2368333A831164FDD91AE90C54F29D7B0140816A0C6F8AE944FBC6E5BC9790A0B3B452739F2 + +Count = 941 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F +CT = 36F11412AA07FE0BD0FE930CCEF1EF4CB7DE5F168274D4C60B48496D663636ADC3A7A885194084E209820649 + +Count = 942 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = CE5EEA17D07A107634C7AEB06969FBDE926A58314B9089F323692D985613172B4B76C3214D8128ADCB15F2F1 + +Count = 943 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E16D0167C21A223FDCBFBCCE44624708F80EA4DEBA18217AAC790EBEC5A27C493DF18CF11542B8AB18FD5CE2 + +Count = 944 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = CCC7E5B42427A0B697E4FAD60619A6DF95DB0695EE456A1995CDF56E9394330E02F48E6815B7DCB7EAEF3990 + +Count = 945 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = D9448B255E8A84EA4DB91A1BCFB0FB306585F6A392B50FA42EA53BC56649EB93C80CC6C5EE658D01977B5234 + +Count = 946 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 597E8BDFEB15536D7C79F9ECD0311724B10439BA94823E709871F206BBE449D7E9A5C032A06422C101C88188 + +Count = 947 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = F96ABD9CC3AA699D8E5EF1BCE6EF9589D9C1B158343F540C97162C645432D8F89BAE08A94EAADFA41135ACBE + +Count = 948 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 95DEB425618EE095DA36DBC4ABF304DDDB2897B4766C5725AD6FB6C544EAD4C84590023F3DBA0BAD95359848 + +Count = 949 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 7E884D82165A741294B49CB7805CA7333E28DFCAF36F897D91D1D278710D77A472C637CD2B78FF4506A70493 + +Count = 950 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = A268197F83A85A3A5969C724A1FD154A143EB3E56B81EB4BB0FEE9B3CE01369976EB98A9D732D164CD09386B + +Count = 951 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = A3CBC69F29FCE5E2FF1F289C446D041CABFB7D290AB6BA39F6E04935E36537B22E241D620A62799125001B62 + +Count = 952 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = B555961F952D7F2606C1D4358B6E287A7D3EB016DC0607EE06D4674F2E3BA0C2F454A2C48A8474CFE54D125B + +Count = 953 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 5DC536822D8B2B935CB56E2A2BBC088312E65186ECB8ABC1750EDF6B9BDD48C9823B4AD42BA44E292BA078B7 + +Count = 954 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = F70B5102CB608E74DF3B04E2069D17D4E2EE9DBA1C46C95CBA703DBE53FD2B222871432DD9E4066875811040 + +Count = 955 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = BDBF2A734F116257CA6779060F59A1013733C9328E7D83D732ABD902399023F4768947472BCE6D35F75B5B9E + +Count = 956 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 0ED340023E426B2DA909C5FDD6FC0D28387D495B1B59B441D67078375F9446A539FF8F0EBB8A05F3E5CEA70B + +Count = 957 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 4FC88AC68DC354CC75BC980927EAC6BC6845B73040E46036D0C911CAC2B1230B3AF6EC03103047F45F5211FC + +Count = 958 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = +CT = 5BECB8F1C73A85B3B3F4E27BBA3267E73C49507B96AB415FF03CE369FB19AC5EF9178D34B69875A8E64AABA695 + +Count = 959 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00 +CT = DC20D4969955BFDF400A3E3C65D53F17126786ABDD42621D43193D2A952E4CDE49728903D1FE7FD259722C3C6D + +Count = 960 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001 +CT = 89801DF7D0C8511EA4D33FCC9F41D352335240EE9E7344D23992BEA729316492011BAB6F1A584BA8E5B23EE24B + +Count = 961 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102 +CT = A535779595181AA7D271DB96EC0167976DFDC783EFBF3E6197E7A219E80007A1D6D6777C91FF991810C9FE83C5 + +Count = 962 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203 +CT = 34416EE41ECC9D585BF0BF0131357FAAE399AED0C6AA6B744D68F5694C0209E9EB74971723AE554C1A9A114EAB + +Count = 963 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304 +CT = AC205AFF748D9EDEDF908044A496B2CEBCA4C0EC032ED9151250B7A6E989FB4B13249B3A0BBC47618DFD8875F7 + +Count = 964 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405 +CT = A11D3F46C0C00DA1B1B39178D7170E48FD5398F4F50C59A87209B3A783E849A14FF242AC024290B6C68B8C9B33 + +Count = 965 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506 +CT = 933449C60326706449F9DDBA5ECF3B97BFD3D41F9A7F08B1ADB96FE34265583D8C7A3027163705218251D989FF + +Count = 966 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304050607 +CT = 8F0C040AF77EC955C8D386607895FD548F1D5FF6C8F2F50101BCBEAB4FCFF4A7345A43E5AA3415B250808475D4 + +Count = 967 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708 +CT = 8F63EE79DAC276FA245B11BDCF103DCE431AD99893218DF023F38367335D3B9F60678888053A028A385021553A + +Count = 968 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506070809 +CT = AB608713FBE23EFB7D8B5D0FCD7F93F4286344340FF51B245FA06B44193C28548491C6FA4FD1B48D883EFE19C7 + +Count = 969 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A +CT = EB8E6075CFD228B29B8B0EBCD0670FA17D971D8B29CBCC9CA4A923654E56EFC0D389EC5B5D4CBD89A757B83A8A + +Count = 970 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B +CT = C7C5974345FFC8158E7A86390E7ADA67E32EA8DBFF7FCCD04DDAC2D5D7C762CF4C8C43DCD4E047C2E382EC6EEC + +Count = 971 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C +CT = A67916E06996BE652ABB9D463CD406E149E166FDD5930A8C8463FE87B527CDD97689DF6C5A0D74374B64EBED19 + +Count = 972 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D +CT = D02719BDE52A6E0BE03AEEB020C5E94AFB5BC175CC5D8A90D16397BBA1DDF8290331344037C503A5D754F8B263 + +Count = 973 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E +CT = 04E4DB7FB0CD5E82DC510EA1C018D807FFF7A5E05B47CDF1B9BCAA54AB7DD6B24DA74BA5A4ED41D57665C1C0D1 + +Count = 974 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F +CT = 4E54BA0EC07B188A1510BA1FB47D58B05A2A28746EDD40F141C65C53646D77CA15662EA0B47045A06DA6B439B0 + +Count = 975 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = C2D9703A91A09CBDF03FA8D5E1D3491D12EFEFB78952B8F99BD13E0CEFC7A2381A79ED49951A1BF02772221785 + +Count = 976 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = D583D8F6B7283BE885DA6AA7FD035AE3F4DCF9F77935B1D17DE8D5C7C3D1EAF729BE90D2E1713319375A6D75D8 + +Count = 977 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 61FDAA3BFB1F53A142ABF43A0AD887F41D62B8DBACE075BCE17C92DAF7F7AB22AA58D2A32F154B14BA0CAD97A3 + +Count = 978 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 13614E426D15B41022825840BD6293F6D1C53786EDEB307B93A24A6BFF92465895CF60A51B3848531E455A5ED7 + +Count = 979 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 35E62D092ABF45438909C842BEC93E0C5A7477EFCDA8CEAA007A0B2839F81DAFD0E58F74DF305FC4433238853D + +Count = 980 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 1F5433AE3413FF0AFB39CBC3530F4C7A9206EB40506F4D2A1A0074FF31530A01A7CF8B89851E29A9FDC02E3076 + +Count = 981 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E330230E92AD51FBC4BC065A51F972E83E6C21952F243C5042B9D72D89E3DE4729A8EBFE846BCA81EC7F36A0A9 + +Count = 982 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E053C3CCD93606672243446746B136CB1EA9D727E34A85D1311C1F300BCF1D3FBF5717DC284595171A18851361 + +Count = 983 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 7614FFF72AFF37A06AAD7614A9C86557A2C06E15FAF8B1FBAA13D735B981A0F61C56A04B5C7727B6DC6E2BF521 + +Count = 984 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = A9A35CC93AA2EA16BE0B4764B2778BDF5486A480F54B3D7DCD22C26A14EE4892384F8E6BE7727F7061FDA779A0 + +Count = 985 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 070E4AE6E7A50C554F4EB193A8CF343D8996679E79E594F305D4C968CB83D433978A047F4B407F004C74C249C7 + +Count = 986 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = D91335D6B8C0FC089A0ACC1F6C3B826BABB4B0F52037A482B13D8D315C009D40832A7111C834D0B5ED00453F73 + +Count = 987 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 16072473B039F9D516B857F7435B6D0DC286862BA7D929285C9D4084B7E1CC1B0DF879B7C05A63385C59B75D79 + +Count = 988 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = A5F8D9E8F762AA0E90750C6CA7183E669AB7046E27DA7033B2A2A2511A702FD8462DF15199E26D81D3BB8E6EC7 + +Count = 989 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = D3AEA0D48F11EC1DFDFAD2D4E93B2D7406B788B5B8211B454D007A8E142E65A03C043A1AC914A596FA5EF61EFF + +Count = 990 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8FB96D82A57BD284F00D36BD47F0A1B17AC10ABA8FFE2A5BBA8861A67AB10414DF9DF848658C9911CD4F8179BA + +Count = 991 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = +CT = 2370658D0C95EB0D1A5D8775900A8BDDF0062505CE2E63BBE9B89423492DF8EB52410E29EF641F126D67691E05FC + +Count = 992 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00 +CT = 8206456FBEA6CFF4A9C31B9452CDCBE46347C09DB83D461C26CEB16733AC613D31F4591997BA5B514EE24A4F9845 + +Count = 993 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001 +CT = 433BAF8509EA4E4F24E310C97872E8452CE6E3F6799FB7E0F332E84954558088DF04946DF6521584AE4AB7512D94 + +Count = 994 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102 +CT = A25E179FE7702845DACADA152BC52699FAE1C592AEAD30C2E5598D036DD2954AB6EDE22D32A8B48E9BBF6876E586 + +Count = 995 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203 +CT = 435C9C3A51A23A7B74108A1D0151A40C6F6553FD05BB171BC284D8B53D524612CAB0B5A642236218FA04E5746120 + +Count = 996 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304 +CT = 986E25CC3D38DFF8F672AD26E1B8ECE6F291755C654DAA3B4082E38FE459523E374E95E54346B739C52D927D178A + +Count = 997 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405 +CT = F21161DD1E41023A2D2B9DA4F81F1574EFAE2F620828DF02B0AAB78633B41EAA496FA9B277295FE038C94197E172 + +Count = 998 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506 +CT = CF63CA01DA92C8FD16B684ADEC2926FC60115924DF04A8BBFA5D249A709271630627676175C4FF3C1EAB933DDFDD + +Count = 999 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304050607 +CT = 5A4038541B99E0A2E2E0018146FCE081B087F60CC9C7FEB87A372A3B71F43BF0CEDFA4FFE13CC2D4E1B74BDBFDBC + +Count = 1000 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708 +CT = 87A910C11201684B6CD7EE14AE85DDFFDD1E58185D8F0FA5853DCAA6E742F91D88104F0115792871626D0ADBD851 + +Count = 1001 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506070809 +CT = 53EF5B5F921D084AF23873F0D03F1220700E5E73A7289D86392E030279C4625718F3A9FC2929204F4804AA4B988A + +Count = 1002 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A +CT = 32B1289769BEB0756CE996B2E9E637B10E5B97DBD080B5B21B3DF1E998D6A2A5C153FA01B5CA5B3798DDBC892BF4 + +Count = 1003 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B +CT = 333E89843F69B1188CAF741DD08B3BD452194D4625C8099696DF87502F3512C771E0A9884914869A0C4B39FB70E5 + +Count = 1004 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C +CT = FB179E5964ABBFF3D671AF5008F2148891ABF5BB5CD83B1889C2E144FA525972EB6AB9BBE948B06A726B11D50BD7 + +Count = 1005 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D +CT = CFC7D53931CB0F11E79C5ECA4BD13F50ACB7099B260F22AC7E6D28D27B05EB376246388A169B36CDDE369C0106C2 + +Count = 1006 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E +CT = 247855303B112571885102345CC45E3C2D227D6C5B12100A9930775FCEDAAEA1A300FE98FCEAE7803186206D69FA + +Count = 1007 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F +CT = 65E31C7A893BF7D505FFE1F61BAD96B7C0376466B6DEE44D8744FD7C53E77352A335EA70E499AECA0853C734BC8F + +Count = 1008 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = CBB31E9C67A9E2550CA3460425446C3B26A735CFA25B7FD2EB641527E6343CC8D67326C2FE98BA106B819988F14D + +Count = 1009 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 69D2BC1C40E9BA13A05A95972E152FFDAF9D660F99D0B57ACC2649C5A6E3AA570B4DA9E0C531D9E3ED01F4B299A0 + +Count = 1010 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 3F23E6A2757545AE2558B2F6776420B489E1AEFBB65AD9B872F7ED5E96740E8363AE01C173FB45A5450BD0A09121 + +Count = 1011 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4E0A6E3AEB356944E94DCF0ED42CAB56FC284C6B69E1E15173839FEA52C5D665BA1E90725712BF011FCD11B936BF + +Count = 1012 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = AFA973D22E7D7EF3C717F33C941DAD4ABF01899A522027BCC3E18D990FB4D2E2B556ABCD0A732A9F45B35917185F + +Count = 1013 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = DEF758DC420B46CB389B56F69E0A9BEE0245C19A632355F90DFE7140C8495E9CCC30269305700CE2EC9F5133E111 + +Count = 1014 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 466C7C9D09CB300C6F24B1AF814A0B6A96EBDAB8A4D8C882C47DDCD29A0EE6DFA381EF52CC5B338DE5AE4222FA2F + +Count = 1015 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 847CDC8CDAC1624BD209CC99FE3A3D378B0082F3EDAA018D39658B29E705F31EC86FCA03BE0D6378A56B1CDF7078 + +Count = 1016 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 452A05DDFA0239DC6850C38DFB3BFB60044C96EBC45716257053B7740489EE673B42F55053122371B9071F3D88B4 + +Count = 1017 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = FE638EFF673E9B19424507DEE2B95966F499CA2472E9E60D45B5F28475681F119ABE44B3F4B0444C653EB3C77DB5 + +Count = 1018 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 3034696BEC1DCFBD83F7E431EB999CBCC615FA4F214C455E400013165056384018D6EF6A49909323FADB1E1E878D + +Count = 1019 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 00A1F250619ECE02A1588F7B9F545E9CFA53CE90B3833ED85B0942D4D314948706B4E2F42188E54323E96D193528 + +Count = 1020 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 725224341C6E30657A7CA51FBF9A63FA85667FB64FD80056F68AEB101B4F74D9507A0D908700D5728AFDDA90B275 + +Count = 1021 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 7FE5D3AFD2D314A2CC1B6F8FB39752EAB85B924FA66010E3CB3A01AC3B403DC0E547B7B9E5B4507D36EB5E97E8AE + +Count = 1022 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 302239E8F9AE8FF616F6E914EAE077D841E7FDC8A9D536295655E8C89A227924AA17B06E786175C2E5AE63A1E272 + +Count = 1023 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1CA222752CB92A1BE8AD1D25751E884B2C39B8B8E37E0E9AEB8AB79113EB3994FF9EA22FFEE053E1101EBE48F34C + +Count = 1024 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = +CT = 1939803835F71AF5F76A26ABFE5B4ED950AF5FF5CC06BF3D68992C1AA14C0BC0DD187C2EED9B7AAD51F7E139122303 + +Count = 1025 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00 +CT = 53EFA83F4F1E582CD951D13AE7CF8DAD819AA7F99C49EF6C08EC01D305A03EDBE927E92DFD222D545C6D35C0E79ECC + +Count = 1026 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001 +CT = 7F0A097597C2A620A4F374EE495F3376158883C881C80961DCF04610B5B415AAEC63AA53E6ABFEFD1447A42D15CF14 + +Count = 1027 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102 +CT = BE2F0EB9EEAF732D5BEE9174063A3944DF2626E667028DA2ABD1E17D22BEC836BCBD1017BC7859F4689435A86FE4FC + +Count = 1028 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203 +CT = DC8EA97E2D99363B8413BBC26558570AC3BC01075C7ACA010E734CD22250157AC2CC0BDFD1DEF951B5B8412316FCD6 + +Count = 1029 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304 +CT = E8022E170269D19802C006700AB6F51AA6ADB76C0D0C7101F4CC228FE7A8E557FF167F5C4E69A80A419EE91BC346B3 + +Count = 1030 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405 +CT = 612194DDBBC85EA3115F1D2026CF3CFB98B1517EA6AE59202D2BAF55320B9C978D795D50D4474A97D19E925C6BAA86 + +Count = 1031 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506 +CT = 65157E2B120EC6FE8A8A61BE932AB88104DBABDFD1F9A134A130A713D8D93EEDE6997A5505C63730B0AEB75DEB7DAC + +Count = 1032 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304050607 +CT = 32E15DA07CE98F7F8A3B99A015B55F614A6D99F5F267611E2C14E2A5FB4403F771F42C822A939A4CB264AE484799DC + +Count = 1033 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708 +CT = 2E5371FEED954F526DB7CE729C6FF44C5652B03B5E696B05C2E141C6448955520FD957D7BE5F19860C10301C568DE0 + +Count = 1034 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506070809 +CT = DBAD2359B40ABFF16F1DB33B29B2106055E4ED013365F96693676D5A2C07DB7B1E853D8083C2CDBF340D037A9CF347 + +Count = 1035 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A +CT = E02C8A1DF26EC5687CA56974909CD997AF0D5C44606C9DBD513C84A250CA58C247AB50F877AB93358869BA79D316A3 + +Count = 1036 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B +CT = E36E4A8FA2305C1B2FD7FE363E09E57A1CECDB389BACD8C8E119C89048E6D6B6BFD21113F5D8A1C22AC0DD43CDCDFD + +Count = 1037 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C +CT = FC506BB221FA62F90A27A33FD4E654DAFFAD145A002B9DCE1C1A8D815007E2975324F3AC1845D80AE137334DF123CC + +Count = 1038 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D +CT = E772C5DCBF8291B194F236E866BC643DB0E13D981EBEFAC29055B932BBD095A4A0A2D424228FBFE1BED08AD6E6F85F + +Count = 1039 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E +CT = B4A919DC5F838BDA077D4DB5776BCD952C795ED4BD3604F8598F4571EDBAD6C3CC9B6F3E3C55456D9DD5C894B356A1 + +Count = 1040 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F +CT = 70B2A8ED2593B3B6315A15914E148BAAE58B6303341F0BA95CC5A16E9C5DAA4BD0CFE41C196B57994D816629894FA2 + +Count = 1041 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = D122CEFD796992D02A737272AA00E9E3B778E3F151F1E651A010E047325AC37A1CD7E41DA1017763CC6213BA1081BC + +Count = 1042 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 8C0A25D9B41AAEA7F27EB1B16F48AF7AD8E8A17AB7578325596D6E733EECFB4E37296832A1E019DF399921BC54A600 + +Count = 1043 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 2B1EFAE9C6165951C0EA91ADB4F7268ECD612BC84E375C40D396679AC27BF630C090E1BD0DAE062EA9BA59FF279AD3 + +Count = 1044 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 5ED6DF1B25E5820A8432DCF91EFBF4570BC6EF5E2404F9C0E228BD497CBB71F6F8FE3CB5688CEE5F4FCAE8BCBFC128 + +Count = 1045 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = A879D7A0A1C97A5E6BD5578D96B1ACA0A2A0C7F64D9CAF2F721D30C4CE651DAFDEF1E95914FAA7DCBF86EF17483F58 + +Count = 1046 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C5C4B461D0BF049006B2E3B22B7AFD85E84967EA97DA45C0C2C39D5C634DFB3E8783E8CA0B0F3A49D71A1EF4AB61EC + +Count = 1047 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = B47397120FEE8341A297582A0EF8ED0AEF0D7B7BBC973535CE4D26C8DDD52ECE1E51C43E20B946774B1E9F2D6C7C01 + +Count = 1048 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = AF80FD34D7CDE8D535E60C2B215144D2A422AF88AE08AE9AB5F237D8BC80DE61E58D80D8B8E6E6C8DA096E574309DA + +Count = 1049 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 8EDC54382B037B3F4EDBD439DF514A32E7EC6849871089B1934594FCDE2D390F5EAA2BC60B1A54D590FFDC47E4A80C + +Count = 1050 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 9008E8E6CF4D68D387F3FD79869981C6EDE8E3FB5AD232CAF7B39098696C2F5404386C81B29304F98838C852981CF6 + +Count = 1051 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 9EC1EA974935503E608D67E669E672C5F2D013E43DD14768FE0A47FD2E835FB62247964E75C1E9C0661E6C33F4F1E0 + +Count = 1052 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = EDCD94F4D44169F04FF807C1DCDDECCDA63B34158B6C68BFF1AE842184279A6D729BE79F0F26F4147D5841E8C0939D + +Count = 1053 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 5FA0A4E138DBC93D9B23E3AA8F3DBE6382A9B467AEDE53BD81350527B88EAF8B392DA0893B5B9D02412CF0F7D50350 + +Count = 1054 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 1040BBF069791D0C5C80E535604879651EA5ECF6CCF64E8F7F6D060832A260A8A0275443939E08DB233F0B1314CE85 + +Count = 1055 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = F8E14234D6E1F3CDC8FC2EB2D735B14B49758990E2703BD44061659C0AEBA1AB5C94F00B216C8FCCEFDF265BE661C7 + +Count = 1056 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = DAC32E172659EA149589F2593EC44124E951DF9FE2373DB651D3AEAE74F1CEBB53C2E33CB423FDCEFA44EA20A52C7F + +Count = 1057 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = +CT = 42494509C7406E43F61FBF06F885CDF4F2C2D87430736130FFF7907E71C7CA384E16C54C859F0E17CFF78E92FAB564C5 + +Count = 1058 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00 +CT = CB5A29175C2CF4B0EF917C3C56D65BF46677F5E0BE2AC00A098E69B5BD0B2A9E1C0B5FC3F18F79415CEF03C670D34B11 + +Count = 1059 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001 +CT = 6AFEA5365BA595A03F75EE28CF127AF76A42D5C5A2347C3A355481445A9B842BA769FE62FAC06C0EF3540624C5A76936 + +Count = 1060 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102 +CT = E27AF5BEB783F21124A2EF6DD75BA94B602A333ECCEA3EB043C04C9EF99926307231CBBE492B767A0CF2AAE19F4A0548 + +Count = 1061 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203 +CT = C2733CCE8416CEFB175501253408F6767C412536649751D63D758EC809AEEE72933CC4F62962A37C3EDA915C7CB0B10D + +Count = 1062 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304 +CT = 09D5A115BC8E30DCE572250709B93F11412939F2738BD7B3A51109EDB0D1CE92D961F58697735D2CAF1791AAEF88AA15 + +Count = 1063 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405 +CT = D76C5F8FA6CDF860F36A0BD80C1A010EC5493A1697C91DA17D47C7293EDB85793435CB82E02217E236A4268A90E3ACD4 + +Count = 1064 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506 +CT = 1DC180F09D7001563379865F014987917BE39DE70C2A8A714750C86ED3A1967F03B4C4E7674617B8E274B169F4BFADB5 + +Count = 1065 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304050607 +CT = FE93F5A11132479F2FC8082FFE87917379AA6291752B62C6EA12CC6AB8A67FCC45645BE7EBB8AA9B7A3177D72760B597 + +Count = 1066 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708 +CT = ED2C0C3418B6033DB5F70C4CC587E69BEF0FAAF72DDC4CA87180A1C8DD238107C63F336C39BB2D0002506382B35ED53B + +Count = 1067 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506070809 +CT = 63ED601B27EF5C4D5262CE556D4D9E06B0473FB6C19A7BA27100AB25F776731AD3CC461EDF2DB5BB5A00B8E72E4791F8 + +Count = 1068 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A +CT = 3241FA626E6DB0BFE9C0B2BB77C84E6B5D89D065C7F875E7DD53F5E9FD584396DB24AB26764C015AB49B634DE6820904 + +Count = 1069 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B +CT = C20C08CF78FFD6E6E98B62DE938C328B8D7800ED7D83EED5F667A95B55E00E17DAE827F1F8A0B319F6B87E14C1AC3CF8 + +Count = 1070 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C +CT = 69A3E5A023459BBB606552E822FD273BD82B66E74E7F4F58871B777ABF266313D44ABD1808B13566ED442D0DE0377530 + +Count = 1071 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D +CT = 524741D704105F3BEE700B5AEE3E2D25473486EFA3FC1FF0E8FAB427F971A818C529714322399778C1F5573F011C6D0A + +Count = 1072 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E +CT = 3B750FDF94272134EDA14AA019E0F720DB3ECBC57C3564CFB3BB786436D0D895165353EF53B8F707A723EFC42F8CF711 + +Count = 1073 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F +CT = 68B710D7B16974580DE1B71602947CAEF8897A5D0A0719DDF614D1853B314183B9491762858F2820C11A4CF6EC023D70 + +Count = 1074 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = A1F56278B46E18D4F3EBD7981824798CAF8056C20E8C70394320361C50BBF812ECB9E07A81E26741DAA8FAEB7DDBFE00 + +Count = 1075 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = DB9BDEA0A80CC6DFDC9FD20C6EAE4D5229C5673748265B358A09FE50A63B8DC4C204AF80B3927FCC2D511952C22DEDE5 + +Count = 1076 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 92001B02F3E79F07D50D7CF8220A78FD1D31AC28F315431D53BF854108FC37709A42A64A2592C99A62B54E36C52A57BD + +Count = 1077 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 34FB1217BCE173AE129F86BE52C95E6D04F5923057016187C0A363CDF6BB30D4A4C4E96B651E88FE5377DF8112E5C281 + +Count = 1078 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 60B8203504EB09A7AAC923B3100448F11B1ABAF0D428B74C94185455284ADE98A669F7EB8C63ECB721D05C017349066C + +Count = 1079 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = BF9A6EAB965AC9FCC02138B17AFE018CA53D611B2FB3BD46B8415B6511489886EDA6D3B86D70CEC5D0EB6B3839E39FFB + +Count = 1080 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 77620F5B16AF222DF6B8C063AEA5F0ACA7C36E0CC7DD0E8382EA793013888D663D1682F1C3EE6422216A5A5369B1B0B7 + +Count = 1081 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 8EED905B044634CC334414EDCE46214BA2B54BA3CD9F384DD6B652E788794122A697CCDCC63218388CA5547E14267254 + +Count = 1082 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = DAAA1AE219D1DFE3DCB6D42E4A2FB387383DD777EB0A4CA3F9FEFCC4BA4876E82CD3FEB14A55871F964747A1867E8194 + +Count = 1083 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 0565216CEE83173206D99D9ABA5E8CA3D80081D5341D38C9DB7034323504B6CAFEADFA6EF511578B3FD0DA3EB46856BD + +Count = 1084 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 80DBD4D7E64447F037AD4F13047B39436126F3B82238AEB0978B743FFD6D9852D82444D31A63EB0E923469A4EA486F1E + +Count = 1085 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FE6E62858A6F55983254B2F72DF074BCD888639A5FEC4AF6E952BB1D6D9B062846673F450F819C3B7FA505F01880F6BC + +Count = 1086 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = B1322523B52BFCD33BCC4C19E01463E4C03D881EEA62DD6BB82C82C48F106F672A0682A040055991A9D52F3CEDFB5517 + +Count = 1087 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E85EAF4D6FECF969A44CF24358191A59A8B8D2BCA0AE2A4F3B168674DAFB3C31E9B6533486A76E1AA7F2D1141783A8C0 + +Count = 1088 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 57D14CA7AD8AD04A4221317D915D61619327E3F409050B6D827C1392B88D5CEA665B74F7685330185666E7F4CE26CBC9 + +Count = 1089 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = A617E429C7DD351098375900EA5EC8CA23DF17B8DEEA71EA0E8C49A46E01FFEB7C7EA84D0540657671018B9248EA9BD7 + diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/api.h b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/crypto_aead.h new file mode 100644 index 0000000..6f4ee42 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/crypto_aead.h @@ -0,0 +1,13 @@ +//API required by the NIST for the LWC competition +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); + +//API required by the NIST for the LWC competition +int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, + 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); diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/encrypt.c b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/encrypt.c new file mode 100644 index 0000000..ade5211 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/encrypt.c @@ -0,0 +1,383 @@ +#include "skinny128.h" +#include "romulus.h" +#include + +u8 final_ad_domain (unsigned long long adlen, unsigned long long mlen) { + u8 domain = 0; + u32 leftover; + //Determine which domain bits we need based on the length of the ad + if (adlen == 0) { + domain ^= 0x02; // No message, so only 1 block with padding + } else { + leftover = (u32)(adlen % (2 * BLOCKBYTES)); + if (leftover == 0) { // Even or odd ad length? + domain ^= 0x08; // Even with a full double block at the end + } else if (leftover < BLOCKBYTES) { + domain ^= 0x02; // Odd with a partial single block at the end + } else if (leftover > BLOCKBYTES) { + domain ^= 0x0A; // Even with a partial double block at the end + } + } + //Determine which domain bits we need based on the length of the message + if (mlen == 0) { + domain ^= 0x01; // No message, so only 1 block with padding + } else { + leftover = (u32)(mlen % (2 * BLOCKBYTES)); + if (leftover == 0) { // Even or odd message length? + domain ^= 0x04; // Even with a full double block at the end + } else if (leftover < BLOCKBYTES) { + domain ^= 0x01; // Odd with a partial single block at the end + } else if (leftover > BLOCKBYTES) { + domain ^= 0x05; // Even with a partial double block at the end + } + } + return domain; +} + +//Encryption and authentication using Romulus-N1 +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) { + + u64 tmp_mlen = mlen; + u32 tmp; + const u8* m_auth = m; + u8 final_domain = 0x30; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + memset(state, 0x00, BLOCKBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the associated data ----------------- + final_domain ^= final_ad_domain(adlen, mlen); + SET_DOMAIN(tks, 0x28); + while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + // Pad and process the left-over blocks + if (adlen == 2*BLOCKBYTES) { // Left-over complete double block + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + } else if (adlen > BLOCKBYTES) { // Left-over partial double block + adlen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; // Padding + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + } else { + SET_DOMAIN(tks, 0x2C); + UPDATE_CTR(tks.tk1); + if (adlen == BLOCKBYTES) { // Left-over complete single block + XOR_BLOCK(state, state, ad); + } else { // Left-over partial single block + for(int i =0; i < adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; // Padding + } + if (tmp_mlen >= BLOCKBYTES) { + tkschedule_lfsr(tks.rtk, m_auth, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + if (tmp_mlen > BLOCKBYTES) + UPDATE_CTR(tks.tk1); + m_auth += BLOCKBYTES; + tmp_mlen -= BLOCKBYTES; + } else { + memcpy(pad, m_auth, tmp_mlen); + memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); + pad[15] = (u8)tmp_mlen; // Padding + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + tmp_mlen = 0; + } + } + // Process all message double blocks except the last + SET_DOMAIN(tks, 0x2C); + while (tmp_mlen > 32) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + m_auth += 2 * BLOCKBYTES; + tmp_mlen -= 2 * BLOCKBYTES; + } + // Process the last message double block + if (tmp_mlen == 2 * BLOCKBYTES) { // Last message double block is full + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else if (tmp_mlen > BLOCKBYTES) { // Last message double block is partial + tmp_mlen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + memcpy(pad, m_auth + BLOCKBYTES, tmp_mlen); + memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); + pad[15] = (u8)tmp_mlen; // Padding + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else if (tmp_mlen == BLOCKBYTES) { // Last message single block is full + XOR_BLOCK(state, state, m_auth); + } else if (tmp_mlen > 0) { // Last message single block is partial + for(int i =0; i < (int)tmp_mlen; i++) + state[i] ^= m_auth[i]; + state[15] ^= (u8)tmp_mlen; // Padding + } + // Process the last partial block + SET_DOMAIN(tks, final_domain); + UPDATE_CTR(tks.tk1); + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + // ----------------- Process the associated data ----------------- + + + // ----------------- Generate the tag ----------------- + G(state,state); + memcpy(c + mlen, state, TAGBYTES); + // ----------------- Generate the tag ----------------- + + memset(tks.tk1, 0x00, KEYBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + if (mlen > 0) { + SET_DOMAIN(tks, 0x24); + while (mlen > BLOCKBYTES) { + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + RHO(state,c,m); + UPDATE_CTR(tks.tk1); + c += BLOCKBYTES; + m += BLOCKBYTES; + mlen -= BLOCKBYTES; + } + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + for(int i = 0; i < (int)mlen; i++) { + tmp = m[i]; // Use of tmp variable in case c = m + c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= (u8)tmp; + } + state[15] ^= (u8)mlen; // Padding + } + + return 0; +} + +//Decryption and tag verification using Romulus-N1 +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) { + + u32 tmp, tmp_mlen; + u8 final_domain = 0x30; + u8* m_auth = m; + const u8* c_tmp = c; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + *mlen = clen - TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the ciphertext ----------------- + clen -= TAGBYTES; + memcpy(state, c + clen, TAGBYTES); + tmp_mlen = clen; + if (tmp_mlen > 0) { + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + SET_DOMAIN(tks, 0x24); + while (tmp_mlen > BLOCKBYTES) { + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + RHO_INV(state, c, m); + UPDATE_CTR(tks.tk1); + c += BLOCKBYTES; + m += BLOCKBYTES; + tmp_mlen -= BLOCKBYTES; + } + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + for(int i = 0; i < (int)tmp_mlen; i++) { + m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= m[i]; + } + state[15] ^= (u8)tmp_mlen; // Padding + } + // ----------------- Process the ciphertext ----------------- + + // ----------------- Process the associated data ----------------- + memset(tks.tk1, 0x00, KEYBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + memset(state, 0x00, BLOCKBYTES); + final_domain ^= final_ad_domain(adlen, clen); + SET_DOMAIN(tks, 0x28); + while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + // Pad and process the left-over blocks + if (adlen == 2*BLOCKBYTES) { // Left-over complete double block + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + } else if (adlen > BLOCKBYTES) { // Left-over partial double block + adlen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; // Padding + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + } else { + SET_DOMAIN(tks, 0x2C); + UPDATE_CTR(tks.tk1); + if (adlen == BLOCKBYTES) { // Left-over complete single block + XOR_BLOCK(state, state, ad); + } else { // Left-over partial single block + for(int i =0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; // Padding + } + if (clen >= BLOCKBYTES) { + tkschedule_lfsr(tks.rtk, m_auth, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + if (clen > BLOCKBYTES) + UPDATE_CTR(tks.tk1); + m_auth += BLOCKBYTES; + clen -= BLOCKBYTES; + } else { + memcpy(pad, m_auth, clen); + memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); + pad[15] = (u8)clen; // Padding + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + clen = 0; + } + } + // Process all message double blocks except the last + SET_DOMAIN(tks, 0x2C); + while (clen > 32) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + m_auth += 2 * BLOCKBYTES; + clen -= 2 * BLOCKBYTES; + } + // Process the last message double block + if (clen == 2 * BLOCKBYTES) { // Last message double block is full + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + tkschedule_lfsr(tks.rtk, m_auth + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else if (clen > BLOCKBYTES) { // Last message double block is partial + clen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + memcpy(pad, m_auth + BLOCKBYTES, clen); + memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); + pad[15] = (u8)clen; // Padding + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else if (clen == BLOCKBYTES) { // Last message single block is full + XOR_BLOCK(state, state, m_auth); + } else if (clen > 0) { // Last message single block is partial + for(int i =0; i < (int)clen; i++) + state[i] ^= m[i]; + state[15] ^= (u8)clen; // Padding + } + // Process the last partial block + SET_DOMAIN(tks, final_domain); + UPDATE_CTR(tks.tk1); + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + // ----------------- Process the associated data ----------------- + + // ----------------- Generate and check the tag ----------------- + G(state,state); + tmp = 0; + for(int i = 0; i < TAGBYTES; i++) + tmp |= state[i] ^ c_tmp[*mlen+i]; //constant-time tag comparison + // ----------------- Generate and check the tag ----------------- + + return tmp; +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/romulus.h b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/romulus.h new file mode 100644 index 0000000..626a767 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/romulus.h @@ -0,0 +1,69 @@ +#ifndef ROMULUSN1_H_ +#define ROMULUSN1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef unsigned int u64; +typedef struct { + u8 tk1[16]; //to manipulate tk1 byte-wise + u32 rtk1[4*16]; //to avoid tk schedule recomputations + u32 rtk[4*SKINNY128_384_ROUNDS]; //all round tweakeys +} skinny_128_384_tks; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) + +//G as defined in the Romulus specification in a 32-bit word-wise manner +#define G(x,y) ({ \ + tmp = ((u32*)(y))[0]; \ + ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[1]; \ + ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[2]; \ + ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[3]; \ + ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ +}) + +//update the counter in tk1 in a 32-bit word-wise manner +#define UPDATE_CTR(tk1) ({ \ + tmp = ((u32*)(tk1))[1]; \ + ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ + ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ + ((u32*)(tk1))[1] |= tmp & 0xff000000; \ + ((u32*)(tk1))[0] <<= 1; \ + if ((tmp >> 23) & 0x01) \ + ((u32*)(tk1))[0] ^= 0x95; \ +}) + +//x <- y ^ z for 128-bit blocks +#define XOR_BLOCK(x,y,z) ({ \ + ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ + ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ + ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ + ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ +}) + + +//Rho as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO(x,y,z) ({ \ + G(pad,x); \ + XOR_BLOCK(y, pad, z); \ + XOR_BLOCK(x, x, z); \ +}) + +//Rho inverse as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO_INV(x, y, z) ({ \ + G(pad, x); \ + XOR_BLOCK(z, pad, y); \ + XOR_BLOCK(x, x, z); \ +}) + +#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.h b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.h new file mode 100644 index 0000000..7f53b7d --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.h @@ -0,0 +1,15 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +#define SKINNY128_384_ROUNDS 40 + +extern void skinny128_384(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1); +extern void tkschedule_lfsr(u32* rtk, const u8* tk2, const u8* tk3, const int rounds); +extern void tkschedule_perm(u32* rtk); +extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1); + + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.s b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.s new file mode 100644 index 0000000..2f938a0 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/armcortexm/skinny128.s @@ -0,0 +1,1706 @@ +/******************************************************************************* +* ARM assembly implementation of fixsliced SKINNY-128-384. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +*******************************************************************************/ + +.syntax unified +.thumb + +/******************************************************************************* +* applies P^2 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p2: + movw r1, #0xcc00 + movt r1, #0xcc00 //r1 <- 0xcc00cc00 + movw r10, #0xcc00 + movt r10, #0x0033 //r10<- 0xcc000033 + and r11, r1, r6, ror #14 + bfi r11, r6, #16, #8 + and r12, r6, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r6 + orr r11, r11, r12, lsr #8 + and r12, r6, #0x00cc0000 + orr r6, r11, r12, lsr #18 + and r11, r1, r7, ror #14 + bfi r11, r7, #16, #8 + and r12, r7, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r7 + orr r11, r11, r12, lsr #8 + and r12, r7, #0x00cc0000 + orr r7, r11, r12, lsr #18 + and r11, r1, r8, ror #14 + bfi r11, r8, #16, #8 + and r12, r8, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r8 + orr r11, r11, r12, lsr #8 + and r12, r8, #0x00cc0000 + orr r8, r11, r12, lsr #18 + and r11, r1, r9, ror #14 + bfi r11, r9, #16, #8 + and r12, r9, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r9 + orr r11, r11, r12, lsr #8 + and r12, r9, #0x00cc0000 + orr r9, r11, r12, lsr #18 + bx lr + +/******************************************************************************* +* applies P^4 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p4: + str.w r14, [sp] //store r14 on the stack + movw r14, #0x00cc + movt r14, #0xcc00 //r14<- 0xcc0000cc + movw r12, #0xcc00 + movt r12, #0x3300 //r12<- 0x3300cc00 + movw r11, #0x00cc + movt r11, #0x00cc //r11<- 0x00cc00cc + and r10, r14, r6, ror #22 + and r1, r12, r6, ror #16 + orr r10, r10, r1 + and r1, r6, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r6, r6, r1 + orr r6, r10, r6, ror #24 + and r10, r14, r7, ror #22 + and r1, r12, r7, ror #16 + orr r10, r10, r1 + and r1, r7, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r7, r7, r1 + orr r7, r10, r7, ror #24 + and r10, r14, r8, ror #22 + and r1, r12, r8, ror #16 + orr r10, r10, r1 + and r1, r8, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r8, r8, r1 + orr r8, r10, r8, ror #24 + and r10, r14, r9, ror #22 + ldr.w r14, [sp] //restore r14 + and r12, r12, r9, ror #16 + orr r10, r10, r12 + and r12, r9, r11 + orr r10, r10, r12, lsr #2 + movw r12, #0xcc33 //r1 <- 0x0000cc33 + and r9, r9, r12 + orr r9, r10, r9, ror #24 + bx lr + +/******************************************************************************* +* applies P^6 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p6: + movw r1, #0x3333 //r1 <- 0x00003333 + movw r12, #0x00cc + movt r12, #0x3300 //r12<- 0x330000cc + and r10, r6, r1, ror #8 // --- permute r6 6 times + and r11, r12, r6, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r6, ror #10 + orr r11, r11, r10 + and r10, r6, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r6, #0x00003300 + orr r6, r11, r10, lsl #2 // permute r6 6 times --- + and r10, r7, r1, ror #8 // --- permute r7 6 times + and r11, r12, r7, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r7, ror #10 + orr r11, r11, r10 + and r10, r7, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r7, #0x00003300 + orr r7, r11, r10, lsl #2 // permute r7 6 times --- + and r10, r8, r1, ror #8 // --- permute r8 6 times + and r11, r12, r8, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r8, ror #10 + orr r11, r11, r10 + and r10, r8, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r8, #0x00003300 + orr r8, r11, r10, lsl #2 // permute r8 6 times --- + and r10, r9, r1, ror #8 // --- permute r9 6 times + and r11, r12, r9, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r9, ror #10 + orr r11, r11, r10 + and r10, r9, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r9, #0x00003300 // permute r9 6 times --- + orr r9, r11, r10, lsl #2 + bx lr + +/******************************************************************************* +* applies P^8 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p8: + movw r12, #0x3333 //r12<- 0x00003333 + movw r1, #0x0000 + movt r1, #0x33cc //r1 <- 0x33cc0000 + and r10, r6, r1 // --- permute r6 8 times + and r11, r1, r6, ror #8 + orr r11, r11, r10, ror #24 + and r10, r6, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r6, r12, lsl #8 + orr r6, r11, r10, lsr #6 // permute r6 8 times --- + and r10, r7, r1 // --- permute r7 8 times + and r11, r1, r7, ror #8 + orr r11, r11, r10, ror #24 + and r10, r7, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r7, r12, lsl #8 + orr r7, r11, r10, lsr #6 // permute r7 8 times --- + and r10, r8, r1 // --- permute r8 8 times + and r11, r1, r8, ror #8 + orr r11, r11, r10, ror #24 + and r10, r8, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r8, r12, lsl #8 + orr r8, r11, r10, lsr #6 // permute r8 8 times --- + and r10, r9, r1 // --- permute r9 8 times + and r11, r1, r9, ror #8 + orr r11, r11, r10, ror #24 + and r10, r9, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r9, r12, lsl #8 + orr r9, r11, r10, lsr #6 // permute r9 8 times --- + bx lr + +/******************************************************************************* +* applies P^10 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p10: + movw r12, #0x0033 + movt r12, #0x3300 //r12<- 0x33000033 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r10, r6, r1, ror #8 // --- permute r6 10 times + and r11, r12, r6, ror #26 + orr r11, r11, r10, ror #8 + and r10, r6, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r6, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r6, #0x0000cc00 + orr r6, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r7, r1, ror #8 // --- permute r6 10 times + and r11, r12, r7, ror #26 + orr r11, r11, r10, ror #8 + and r10, r7, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r7, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r7, #0x0000cc00 + orr r7, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r8, r1, ror #8 // --- permute r6 10 times + and r11, r12, r8, ror #26 + orr r11, r11, r10, ror #8 + and r10, r8, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r8, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r8, #0x0000cc00 + orr r8, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r9, r1, ror #8 // --- permute r6 10 times + and r11, r12, r9, ror #26 + orr r11, r11, r10, ror #8 + and r10, r9, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r9, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r9, #0x0000cc00 + orr r9, r11, r10, lsr #2 // permute r6 10 times --- + bx lr + +/******************************************************************************* +* applies P^12 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p12: + str.w r14, [sp] //store r14 on the stack + movw r14, #0xcc33 //r14<- 0x0000cc33 + movw r12, #0x00cc + movt r12, #0x00cc //r12<- 0x00cc00cc + movw r1, #0x3300 + movt r1, #0xcc00 //r1 <- 0xcc003300 + and r10, r14, r6, ror #8 // --- permute r6 12 times + and r11, r12, r6, ror #30 + orr r11, r11, r10 + and r10, r1, r6, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r6, r10, ror #8 + orr r6, r11, r10, ror #10 // permute r6 12 times --- + and r10, r14, r7, ror #8 // --- permute r7 12 times + and r11, r12, r7, ror #30 + orr r11, r11, r10 + and r10, r1, r7, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r7, r10, ror #8 + orr r7, r11, r10, ror #10 // permute r7 12 times --- + and r10, r14, r8, ror #8 // --- permute r8 12 times + and r11, r12, r8, ror #30 + orr r11, r11, r10 + and r10, r1, r8, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r8, r10, ror #8 + orr r8, r11, r10, ror #10 // permute r8 12 times --- + and r10, r14, r9, ror #8 // --- permute r9 12 times + and r11, r12, r9, ror #30 + orr r11, r11, r10 + and r10, r1, r9, ror #16 + ldr.w r14, [sp] + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r9, r10, ror #8 + orr r9, r11, r10, ror #10 // permute r9 12 times --- + bx lr + +/******************************************************************************* +* applies P^14 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p14: + movw r1, #0xcc00 + movt r1, #0x0033 //r1 <- 0x0033cc00 + movw r12, #0xcc00 + movt r12, #0xcc00 //r12<- 0x33003300 + and r10, r1, r6, ror #24 // --- permute r6 14 times + and r11, r6, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r6, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r6, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r6, r12 + orr r6, r11, r10, ror #18 // permute r6 14 times --- + and r10, r1, r7, ror #24 // --- permute r7 14 times + and r11, r7, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r7, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r7, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r7, r12 + orr r7, r11, r10, ror #18 // permute r7 14 times --- + and r10, r1, r8, ror #24 // --- permute r8 14 times + and r11, r8, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r8, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r8, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r8, r12 + orr r8, r11, r10, ror #18 // permute r8 14 times --- + and r10, r1, r9, ror #24 // --- permute r9 14 times + and r11, r9, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r9, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r9, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r9, r12 + orr r9, r11, r10, ror #18 // permute r9 14 times --- + bx lr + +.align 2 +packing: + eor r12, r2, r2, lsr #3 + and r12, r12, r10 + eor r2, r2, r12 + eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + eor r12, r3, r3, lsr #3 + and r12, r12, r10 + eor r3, r3, r12 + eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r12, r4, r4, lsr #3 + and r12, r12, r10 + eor r4, r4, r12 + eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r12, r5, r5, lsr #3 + and r12, r12, r10 + eor r5, r5, r12 + eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r12, r2, r4, lsr #2 + and r12, r12, r11 + eor r2, r2, r12 + eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r12, r2, r3, lsr #4 + and r12, r12, r11, lsr #2 + eor r2, r2, r12 + eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r12, r2, r5, lsr #6 + and r12, r12, r11, lsr #4 + eor r2, r2, r12 + eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r12, r4, r3, lsr #2 + and r12, r12, r11, lsr #2 + eor r4, r4, r12 + eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r12, r4, r5, lsr #4 + and r12, r12, r11, lsr #4 + eor r4, r4, r12 + eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r12, r3, r5, lsr #2 + and r12, r12, r11, lsr #4 + eor r3, r3, r12 + eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + bx lr + +/****************************************************************************** +* Compute LFSR2(TK2) ^ LFSR3(TK3) for all rounds. +* Performing both at the same time allows to save some memory accesses. +******************************************************************************/ +@ void tkschedule_lfsr(u32* tk, const u8* tk2, const u8* tk3, const int rounds) +.global tkschedule_lfsr +.type tkschedule_lfsr,%function +.align 2 +tkschedule_lfsr: + push {r0-r12, r14} + ldr.w r3, [r1, #8] //load tk2 (3rd word) + ldr.w r4, [r1, #4] //load tk2 (2nd word) + ldr.w r5, [r1, #12] //load tk2 (4th word) + ldr.w r12, [r1] //load tk2 (1st word) + mov r1, r2 //move tk3 address in r1 + mov r2, r12 //move 1st tk2 word in r2 + movw r10, #0x0a0a + movt r10, #0x0a0a //r10 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r7 <- 0x30303030 + bl packing //pack tk2 + mov r6, r2 //move tk2 from r2-r5 to r6-r9 + mov r7, r3 //move tk2 from r2-r5 to r6-r9 + mov r8, r4 //move tk2 from r2-r5 to r6-r9 + mov r9, r5 //move tk2 from r2-r5 to r6-r9 + ldr.w r3, [r1, #8] //load tk3 (3rd word) + ldr.w r4, [r1, #4] //load tk3 (2nd word) + ldr.w r5, [r1, #12] //load tk3 (4th) word) + ldr.w r2, [r1] //load tk3 (1st) word) + bl packing //pack tk3 + eor r10, r10, r10, lsl #4 //r10<- 0xaaaaaaaa + ldr.w r1, [sp, #12] //load loop counter in r1 + eor r11, r2, r6 //tk2 ^ tk3 (1st word) + eor r12, r3, r7 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r4, r8 //tk2 ^ tk3 (3rd word) + eor r12, r5, r9 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #8 //store in tk + loop: + and r12, r8, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r6 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r6, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r3, r10 // --- apply LFSR3 to tk3 + eor r12, r5, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r5, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r5, r7 //tk2 ^ tk3 (1st word) + eor r12, r2, r8 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r3, r9 //tk2 ^ tk3 (3rd word) + eor r12, r4, r6 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r9, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r7 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r7, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r2, r10 // --- apply LFSR3 to tk3 + eor r12, r4, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r4, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r4, r8 //tk2 ^ tk3 (1st word) + eor r12, r5, r9 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r2, r6 //tk2 ^ tk3 (3rd word) + eor r12, r3, r7 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r6, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r8 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r8, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r5, r10 // --- apply LFSR3 to tk3 + eor r12, r3, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r3, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r3, r9 //tk2 ^ tk3 (1st word) + eor r12, r4, r6 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r5, r7 //tk2 ^ tk3 (3rd word) + eor r12, r2, r8 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r7, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r9 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r9, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r4, r10 // --- apply LFSR3 to tk3 + eor r12, r2, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r2, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r2, r6 //tk2 ^ tk3 (1st word) + eor r12, r3, r7 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r4, r8 //tk2 ^ tk3 (3rd word) + eor r12, r5, r9 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + subs.w r1, r1, #8 //decrease loop counter by 8 + bne loop + pop {r0-r12, r14} + bx lr + +@ void tkschedule_perm(u32* tk) +.global tkschedule_perm +.type tkschedule_perm,%function +.align 2 +tkschedule_perm: + push {r0-r12, lr} + sub.w sp, #4 //to store r14 in subroutines + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r6, r6, r10 //tk &= 0xf0f0f0f0 (1st word) + and r7, r7, r10 //tk &= 0xf0f0f0f0 (2nd word) + and r8, r8, r10 //tk &= 0xf0f0f0f0 (3rd word) + and r9, r9, r10 //tk &= 0xf0f0f0f0 (4th word) + eor r8, r8, #0x00000004 //add rconst + eor r9, r9, #0x00000040 //add rconst + mvn r9, r9 //to remove a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 1st round + strd r6, r7, [r0], #8 //store 2nd half tk for 1st round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 2nd round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000100 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 3rd round + strd r6, r7, [r0], #8 //store 2nd half tk for 3rd round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 5th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 5th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 4th round + strd r8, r9, [r0], #24 //store 2nd half tk for 4th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 6th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x00400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 6th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + eor r9, r9, #0x00000400 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 7th round + strd r6, r7, [r0], #8 //store 2nd half tk for 7th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + eor r12, r12, #0x00000040 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 9th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000054 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 9th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r8, r8, #0x00010000 + eor r8, r8, #0x00000410 + eor r9, r9, #0x00000410 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 8th round + strd r8, r9, [r0], #24 //store 2nd half tk for 8th round + ldm r0, {r6-r9} //load tk + bl p10 //apply the permutation 10 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x00000100 //add rconst + eor r12, r12, #0x00000100 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 10th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 10th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r6, r6, #0x04000000 //add rconst + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + eor r9, r9, #0x00000100 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 11th round + strd r6, r7, [r0], #8 //store 2nd half tk for 11th round + ldm r0, {r6-r9} //load tk + bl p12 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 13th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00140000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 13th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x04000000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 12th round + strd r8, r9, [r0], #24 //store 2nd half tk for 12th round + ldm r0, {r6-r9} //load tk + bl p14 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 14th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x01400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 14th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 //add rconst + eor r8, r8, #0x00004400 //add rconst + eor r9, r9, #0x00000400 //add const + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 15th round + strd r6, r7, [r0], #8 //store 2nd half tk for 15th round + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + eor r11, r11, #0x00000040 //add rconst + eor r12, r12, #0x00000040 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 17th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000004 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 17th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r7 ,r7, #0x00000010 + eor r8, r8, #0x00000010 + eor r8, r8, #0x00010000 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 16th round + strd r8, r9, [r0], #24 //store 2nd half tk for 16th round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x00000100 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 18th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000040 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 18th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x40000000 //add rconst + eor r8, r8, #0x00000100 //add rconst + eor r9, r9, #0x04000000 //add rconst + eor r9, r9, #0x00000100 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 19th round + strd r6, r7, [r0], #8 //store 2nd half tk for 19th round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 21th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00100000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 21th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r8, r8, #0x04100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 20th round + strd r8, r9, [r0], #24 //store 2nd half tk for 20th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 22th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 22th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 23th round + strd r6, r7, [r0], #8 //store 2nd half tk for 23th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #24] //store 2nd half tk for 25th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000014 //add rconst + eor r12, r12, #0x00000040 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 25th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r8, r8, #0x00010400 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 24th round + strd r8, r9, [r0], #24 //store 2nd half tk for 24th round + ldm r0, {r6-r9} //load tk + bl p10 //apply the permutation 10 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 26th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 26th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x40000000 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 27th round + strd r6, r7, [r0], #8 //store 2nd half tk for 27th round + ldm r0, {r6-r9} //load tk + bl p12 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 29th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 29th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r8, r8, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 28th round + strd r8, r9, [r0], #24 //store 2nd half tk for 28th round + ldm r0, {r6-r9} //load tk + bl p14 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 30th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 30th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 31th round + strd r6, r7, [r0], #8 //store 2nd half tk for 31th round + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #24] //store 2nd half tk for 33th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000014 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 33th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r8, r8, #0x00010400 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 32th round + strd r8, r9, [r0], #24 //store 2nd half tk for 32th round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 34th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 34th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 35th round + strd r6, r7, [r0], #8 //store 2nd half tk for 35th round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 37th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 37th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 36th round + strd r8, r9, [r0], #24 //store 2nd half tk for 36th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 38th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x00400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 38th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x00000400 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 39th round + strd r6, r7, [r0], #8 //store 2nd half tk for 39th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0x3030 + movt r10, #0x3030 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000010 + eor r8, r8, #0x00010000 + eor r8, r8, #0x00000010 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 40th round + strd r8, r9, [r0] //store 2nd half tk for 40th round + add.w sp, #4 + pop {r0-r12, lr} + bx lr + +/****************************************************************************** +* Applies the permutations P^2, ..., P^14 for rounds 0 to 16. Since P^16=Id, we +* don't need more calculations as no LFSR is applied to TK1. +******************************************************************************/ +@ void tkschedule_perm_tk1(u32* tk, const u8* key) +.global tkschedule_perm_tk1 +.type tkschedule_perm_tk1,%function +.align 2 +tkschedule_perm_tk1: + push {r0-r12, lr} + ldr.w r3, [r1, #8] //load tk1 (3rd word) + ldr.w r4, [r1, #4] //load tk1 (2nd word) + ldr.w r5, [r1, #12] //load tk1 (4th word) + ldr.w r2, [r1] //load tk1 (1st word) + movw r10, #0x0a0a + movt r10, #0x0a0a //r6 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r7 <- 0x30303030 + bl packing //pack tk1 + mov r6, r2 //move tk1 from r2-r5 to r6-r9 + mov r7, r3 //move tk1 from r2-r5 to r6-r9 + mov r8, r4 //move tk1 from r2-r5 to r6-r9 + mov r9, r5 //move tk1 from r2-r5 to r6-r9 + movw r2, #0xf0f0 + movt r2, #0xf0f0 //r2<- 0xf0f0f0f0 + and r11, r8, r2 //tk &= 0xf0f0f0f0 (3rd word) + and r12, r9, r2 //tk &= 0xf0f0f0f0 (4th word) + strd r11, r12, [r0], #8 //store 1st half tk for 1st round + and r11, r6, r2 //tk &= 0xf0f0f0f0 (1st word) + and r12, r7, r2 //tk &= 0xf0f0f0f0 (2nd word) + strd r11, r12, [r0], #8 //store 2nd half tk for 1st round + + bl p2 //apply the permutation twice + movw r3, #0x0303 + movt r3, #0x0303 //r3<- 0x03030303 + and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #8] + and r11, r3, r7, ror #28 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #12] + and r11, r3, r9, ror #28 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #4] + and r11, r3, r8, ror #28 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 4 times + and r11, r2, r6, ror #16 //ror and mask to match fixslicing + and r12, r2, r7, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 5th round + and r11, r2, r8, ror #16 //ror and mask to match fixslicing + and r12, r2, r9, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 5th round + bl p2 //apply the permutation 6 times + and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #8] + and r11, r3, r7, ror #12 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #12] + and r11, r3, r9, ror #12 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #4] + and r11, r3, r8, ror #12 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 8 times + and r11, r2, r6 //ror and mask to match fixslicing + and r12, r2, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 9th round + and r11, r2, r8 //ror and mask to match fixslicing + and r12, r2, r9 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 9th round + bl p2 //apply the permutation 10 + and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #8] + and r11, r3, r7, ror #28 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #12] + and r11, r3, r9, ror #28 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #4] + and r11, r3, r8, ror #28 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 12 times + and r11, r2, r6, ror #16 //ror and mask to match fixslicing + and r12, r2, r7, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 5th round + and r11, r2, r8, ror #16 //ror and mask to match fixslicing + and r12, r2, r9, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 5th round + bl p2 //apply the permutation 14 times + and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #8] + and r11, r3, r7, ror #12 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #12] + and r11, r3, r9, ror #12 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #4] + and r11, r3, r8, ror #12 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0] //ror and masks to match fixslicing --- + pop {r0-r12, lr} + bx lr + +.align 2 +quadruple_round: + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rtk_2_3 + rconst + eor r3, r3, r9 //add rtk_2_3 + rconst + eor r4, r4, r10 //add rtk_2_3 + rconst + eor r5, r5, r11 //add rtk_2_3 + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #30 // --- mixcolumns 0 --- + eor r2, r2, r8, ror #24 + and r8, r7, r2, ror #18 + eor r2, r2, r8, ror #2 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #4 + and r8, r7, r3, ror #30 + eor r3, r3, r8, ror #24 + and r8, r7, r3, ror #18 + eor r3, r3, r8, ror #2 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #4 + and r8, r7, r4, ror #30 + eor r4, r4, r8, ror #24 + and r8, r7, r4, ror #18 + eor r4, r4, r8, ror #2 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #4 + and r8, r7, r5, ror #30 + eor r5, r5, r8, ror #24 + and r8, r7, r5, ror #18 + eor r5, r5, r8, ror #2 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #4 + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + and r8, r7, r2, ror #16 // --- mixcolumns 1 --- + eor r2, r2, r8, ror #30 + and r8, r7, r2, ror #28 + eor r2, r2, r8 + and r8, r7, r2, ror #16 + eor r2, r2, r8, ror #2 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #30 + and r8, r7, r3, ror #28 + eor r3, r3, r8 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #2 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #30 + and r8, r7, r4, ror #28 + eor r4, r4, r8 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #2 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #30 + and r8, r7, r5, ror #28 + eor r5, r5, r8 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #2 + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rtk_2_3 + rconst + eor r3, r3, r9 //add rtk_2_3 + rconst + eor r4, r4, r10 //add rtk_2_3 + rconst + eor r5, r5, r11 //add rtk_2_3 + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #10 // --- mixcolumns 2 --- + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #6 + and r8, r7, r2, ror #26 + eor r2, r2, r8 + and r8, r7, r3, ror #10 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #6 + and r8, r7, r3, ror #26 + eor r3, r3, r8 + and r8, r7, r4, ror #10 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #6 + and r8, r7, r4, ror #26 + eor r4, r4, r8 + and r8, r7, r5, ror #10 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #6 + and r8, r7, r5, ror #26 + eor r5, r5, r8 + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + ldmia r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + and r8, r7, r2, ror #4 // --- mixcolumns 3 --- + eor r2, r2, r8, ror #26 + and r8, r7, r2 + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #4 + eor r2, r2, r8, ror #22 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #26 + and r8, r7, r3 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #22 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #26 + and r8, r7, r4 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #22 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #26 + and r8, r7, r5 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #22 + bx lr + +/****************************************************************************** +* Encrypt a single block using fixsliced SKINNY-128-128. +******************************************************************************/ +@ void skinny128_384(u8* ctext, const u32* tk, const u8* ptext) +.global skinny128_384 +.type skinny128_384,%function +.align 2 +skinny128_384: + push {r0-r12, r14} + mov.w r0, r3 + ldr.w r3, [r2, #8] + ldr.w r4, [r2, #4] + ldr.w r5, [r2, #12] + ldr.w r2, [r2] + movw r6, #0x0a0a + movt r6, #0x0a0a //r6 <- 0x0a0a0a0a + movw r7, #0x3030 + movt r7, #0x3030 //r7 <- 0x30303030 + eor r12, r2, r2, lsr #3 + and r12, r12, r6 + eor r2, r2, r12 + eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + eor r12, r3, r3, lsr #3 + and r12, r12, r6 + eor r3, r3, r12 + eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r12, r4, r4, lsr #3 + and r12, r12, r6 + eor r4, r4, r12 + eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r12, r5, r5, lsr #3 + and r12, r12, r6 + eor r5, r5, r12 + eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r12, r2, r4, lsr #2 + and r12, r12, r7 + eor r2, r2, r12 + eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r12, r2, r3, lsr #4 + and r12, r12, r7, lsr #2 + eor r2, r2, r12 + eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r12, r2, r5, lsr #6 + and r12, r12, r7, lsr #4 + eor r2, r2, r12 + eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r12, r4, r3, lsr #2 + and r12, r12, r7, lsr #2 + eor r4, r4, r12 + eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r12, r4, r5, lsr #4 + and r12, r12, r7, lsr #4 + eor r4, r4, r12 + eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r12, r3, r5, lsr #2 + and r12, r12, r7, lsr #4 + eor r3, r3, r12 + eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + movw r6, #0x5555 + movt r6, #0x5555 //r6 <- 0x55555555 + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #128 // rtk1 repeats every 16 rounds + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #128 // rtk1 repeats every 16 rounds + bl quadruple_round + bl quadruple_round + movw r6, #0x0a0a + movt r6, #0x0a0a //r6 <- 0x0a0a0a0a + eor r10, r3, r5, lsr #2 + and r10, r10, r7, lsr #4 + eor r3, r3, r10 + eor r5, r5, r10, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + eor r10, r4, r5, lsr #4 + and r10, r10, r7, lsr #4 + eor r4, r4, r10 + eor r5, r5, r10, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r10, r4, r3, lsr #2 + and r10, r10, r7, lsr #2 + eor r4, r4, r10 + eor r3, r3, r10, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r10, r2, r5, lsr #6 + and r10, r10, r7, lsr #4 + eor r2, r2, r10 + eor r5, r5, r10, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r10, r2, r3, lsr #4 + and r10, r10, r7, lsr #2 + eor r2, r2, r10 + eor r3, r3, r10, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r10, r2, r4, lsr #2 + and r10, r10, r7 + eor r2, r2, r10 + eor r4, r4, r10, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r10, r5, r5, lsr #3 + and r10, r10, r6 + eor r5, r5, r10 + eor r5, r5, r10, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r10, r4, r4, lsr #3 + and r10, r10, r6 + eor r4, r4, r10 + eor r4, r4, r10, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r10, r3, r3, lsr #3 + and r10, r10, r6 + eor r3, r3, r10 + eor r3, r3, r10, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r10, r2, r2, lsr #3 + and r10, r10, r6 + eor r2, r2, r10 + eor r2, r2, r10, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + ldr.w r0, [sp], #4 + strd r2, r4, [r0] + strd r3, r5, [r0, #8] + pop {r1-r12,r14} + bx lr + \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/api.h b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/crypto_aead.h new file mode 100644 index 0000000..e2ca9b0 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/crypto_aead.h @@ -0,0 +1,18 @@ + +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 +); + +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 +); \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/encrypt.c b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/encrypt.c new file mode 100644 index 0000000..ba9f51d --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/encrypt.c @@ -0,0 +1,367 @@ +#include "skinny128.h" +#include "tk_schedule.h" +#include "romulus.h" +#include +#include + +static u8 final_ad_domain (unsigned long long adlen, unsigned long long mlen) { + u8 domain = 0; + u32 leftover; + //Determine which domain bits we need based on the length of the ad + if (adlen == 0) { + domain ^= 0x02; // No message, so only 1 block with padding + } else { + leftover = (u32)(adlen % (2 * BLOCKBYTES)); + if (leftover == 0) { // Even or odd ad length? + domain ^= 0x08; // Even with a full double block at the end + } else if (leftover < BLOCKBYTES) { + domain ^= 0x02; // Odd with a partial single block at the end + } else if (leftover > BLOCKBYTES) { + domain ^= 0x0A; // Even with a partial double block at the end + } + } + //Determine which domain bits we need based on the length of the message + if (mlen == 0) { + domain ^= 0x01; // No message, so only 1 block with padding + } else { + leftover = (unsigned)(mlen % (2 * BLOCKBYTES)); + if (leftover == 0) { // Even or odd message length? + domain ^= 0x04; // Even with a full double block at the end + } else if (leftover < BLOCKBYTES) { + domain ^= 0x01; // Odd with a partial single block at the end + } else if (leftover > BLOCKBYTES) { + domain ^= 0x05; // Even with a partial double block at the end + } + } + return domain; +} + +//Encryption and authentication using Romulus-N1 +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) { + + u32 tmp; + u64 tmp_mlen = mlen; + const u8* m_auth = m; + u8 final_domain = 0x30; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + memset(state, 0x00, BLOCKBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the associated data ----------------- + final_domain ^= final_ad_domain(adlen, mlen); + SET_DOMAIN(tks, 0x28); + while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + // Pad and process the left-over blocks + if (adlen == 2*BLOCKBYTES) { // Left-over complete double block + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + } else if (adlen > BLOCKBYTES) { // Left-over partial double block + adlen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; // Padding + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + } else { + SET_DOMAIN(tks, 0x2C); + UPDATE_CTR(tks.tk1); + if (adlen == BLOCKBYTES) { // Left-over complete single block + XOR_BLOCK(state, state, ad); + } else { // Left-over partial single block + for(int i =0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; // Padding + } + if (tmp_mlen >= BLOCKBYTES) { + precompute_rtk2_3(tks.rtk2_3, m_auth, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + if (tmp_mlen > BLOCKBYTES) + UPDATE_CTR(tks.tk1); + tmp_mlen -= BLOCKBYTES; + m_auth += BLOCKBYTES; + } else { + memcpy(pad, m_auth, tmp_mlen); + memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); + pad[15] = (u8)tmp_mlen; // Padding + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + tmp_mlen = 0; + } + } + // Process all message double blocks except the last + SET_DOMAIN(tks, 0x2C); + while (tmp_mlen > 32) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + m_auth += 2 * BLOCKBYTES; + tmp_mlen -= 2 * BLOCKBYTES; + } + // Process the last message double block + if (tmp_mlen == 2 * BLOCKBYTES) { // Last message double block is full + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else if (tmp_mlen > BLOCKBYTES) { // Last message double block is partial + tmp_mlen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + memcpy(pad, m_auth + BLOCKBYTES, tmp_mlen); + memset(pad + tmp_mlen, 0x00, BLOCKBYTES - tmp_mlen - 1); + pad[15] = (u8)tmp_mlen; // Padding + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else if (tmp_mlen == BLOCKBYTES) { // Last message single block is full + XOR_BLOCK(state, state, m_auth); + } else if (tmp_mlen > 0) { // Last message single block is partial + for(int i =0; i < (int)tmp_mlen; i++) + state[i] ^= m_auth[i]; + state[15] ^= (u8)tmp_mlen; // Padding + } + // Process the last partial block + SET_DOMAIN(tks, final_domain); + UPDATE_CTR(tks.tk1); + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + // ----------------- Process the associated data ----------------- + + + // ----------------- Generate the tag ----------------- + G(state,state); + memcpy(c + mlen, state, TAGBYTES); + // ----------------- Generate the tag ----------------- + + memset(tks.tk1, 0x00, KEYBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + if (mlen > 0) { + SET_DOMAIN(tks, 0x24); + while (mlen > BLOCKBYTES) { + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + RHO(state,c,m); + UPDATE_CTR(tks.tk1); + c += BLOCKBYTES; + m += BLOCKBYTES; + mlen -= BLOCKBYTES; + } + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + for(int i = 0; i < (int)mlen; i++) { + tmp = m[i]; // Use of tmp variable in case c = m + c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= (u8)tmp; + } + state[15] ^= (u8)mlen; // Padding + } + + return 0; +} + +//Decryption and tag verification using Romulus-N1 +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) { + + u32 tmp; + u64 tmp_mlen; + u8 final_domain = 0x30; + u8* m_auth = m; + const u8* c_tmp = c; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + *mlen = clen - TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the ciphertext ----------------- + clen -= TAGBYTES; + memcpy(state, c + clen, TAGBYTES); + tmp_mlen = clen; + if (tmp_mlen > 0) { + SET_DOMAIN(tks, 0x24); + precompute_rtk2_3(tks.rtk2_3, npub, k); + while (tmp_mlen > BLOCKBYTES) { + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + RHO_INV(state, c, m); + UPDATE_CTR(tks.tk1); + c += BLOCKBYTES; + m += BLOCKBYTES; + tmp_mlen -= BLOCKBYTES; + } + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + for(int i = 0; i < (int)tmp_mlen; i++) { + m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= m[i]; + } + state[15] ^= (u8)tmp_mlen; // Padding + } + // ----------------- Process the ciphertext ----------------- + + // ----------------- Process the associated data ----------------- + memset(tks.tk1, 0x00, KEYBYTES); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + memset(state, 0x00, BLOCKBYTES); + final_domain ^= final_ad_domain(adlen, clen); + SET_DOMAIN(tks, 0x28); + while (adlen > 2*BLOCKBYTES) { // Process double blocks but the last + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + // Pad and process the left-over blocks + if (adlen == 2*BLOCKBYTES) { // Left-over complete double block + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + } else if (adlen > BLOCKBYTES) { // Left-over partial double block + adlen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; // Padding + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + } else { + SET_DOMAIN(tks, 0x2C); + UPDATE_CTR(tks.tk1); + if (adlen == BLOCKBYTES) { // Left-over complete single block + XOR_BLOCK(state, state, ad); + } else { // Left-over partial single block + for(int i =0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; // Padding + } + if (clen >= BLOCKBYTES) { + precompute_rtk2_3(tks.rtk2_3, m_auth, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + if (clen > BLOCKBYTES) + UPDATE_CTR(tks.tk1); + m_auth += BLOCKBYTES; + clen -= BLOCKBYTES; + } else { + memcpy(pad, m_auth, clen); + memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); + pad[15] = (u8)clen; // Padding + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + clen = 0; + } + } + // Process all message double blocks except the last + SET_DOMAIN(tks, 0x2C); + while (clen > 32) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + m_auth += 2 * BLOCKBYTES; + clen -= 2 * BLOCKBYTES; + } + // Process the last message double block + if (clen == 2 * BLOCKBYTES) { // Last message double block is full + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + precompute_rtk2_3(tks.rtk2_3, m_auth + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else if (clen > BLOCKBYTES) { // Last message double block is partial + clen -= BLOCKBYTES; + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, m_auth); + memcpy(pad, m_auth + BLOCKBYTES, clen); + memset(pad + clen, 0x00, BLOCKBYTES - clen - 1); + pad[15] = (u8)clen; // Padding + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else if (clen == BLOCKBYTES) { // Last message single block is full + XOR_BLOCK(state, state, m_auth); + } else if (clen > 0) { // Last message single block is partial + for(int i =0; i < (int)clen; i++) + state[i] ^= m[i]; + state[15] ^= (u8)clen; // Padding + } + // Process the last partial block + SET_DOMAIN(tks, final_domain); + UPDATE_CTR(tks.tk1); + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + // ----------------- Process the associated data ----------------- + + // ----------------- Generate and check the tag ----------------- + G(state,state); + tmp = 0; + for(int i = 0; i < TAGBYTES; i++) + tmp |= state[i] ^ c_tmp[*mlen+i]; //constant-time tag comparison + // ----------------- Generate and check the tag ----------------- + + return tmp; +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/romulus.h b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/romulus.h new file mode 100644 index 0000000..b254e2a --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/romulus.h @@ -0,0 +1,69 @@ +#ifndef ROMULUSN1_H_ +#define ROMULUSN1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef unsigned int u64; +typedef struct { + u8 tk1[16]; //to manipulate tk1 byte-wise + u32 rtk1[4*16]; //to avoid tk schedule recomputations + u32 rtk2_3[4*SKINNY128_384_ROUNDS]; //all round tweakeys +} skinny_128_384_tks; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) + +//G as defined in the Romulus specification in a 32-bit word-wise manner +#define G(x,y) ({ \ + tmp = ((u32*)(y))[0]; \ + ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[1]; \ + ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[2]; \ + ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[3]; \ + ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ +}) + +//update the counter in tk1 in a 32-bit word-wise manner +#define UPDATE_CTR(tk1) ({ \ + tmp = ((u32*)(tk1))[1]; \ + ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ + ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ + ((u32*)(tk1))[1] |= tmp & 0xff000000; \ + ((u32*)(tk1))[0] <<= 1; \ + if ((tmp >> 23) & 0x01) \ + ((u32*)(tk1))[0] ^= 0x95; \ +}) + +//x <- y ^ z for 128-bit blocks +#define XOR_BLOCK(x,y,z) ({ \ + ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ + ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ + ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ + ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ +}) + + +//Rho as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO(x,y,z) ({ \ + G(pad,x); \ + XOR_BLOCK(y, pad, z); \ + XOR_BLOCK(x, x, z); \ +}) + +//Rho inverse as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO_INV(x, y, z) ({ \ + G(pad, x); \ + XOR_BLOCK(z, pad, y); \ + XOR_BLOCK(x, x, z); \ +}) + +#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.c b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.c new file mode 100644 index 0000000..a1061d5 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.c @@ -0,0 +1,107 @@ +/****************************************************************************** +* Constant-time implementation of the SKINNY tweakable block ciphers. +* +* This implementation doesn't compute the ShiftRows operation. Some masks and +* shifts are applied during the MixColumns operation so that the proper bits +* are XORed together. Moreover, the row permutation within the MixColumns +* is omitted, as well as the bit permutation at the end of the Sbox. The rows +* are synchronized with the classical after only 4 rounds. Therefore, this +* implementation relies on a "QUADRUPLE_ROUND" routine. +* +* The Sbox computation takes advantage of some symmetry in the 8-bit Sbox to +* turn it into a 4-bit S-box computation. Although the last bit permutation +* within the Sbox is not computed, the bit ordering is synchronized with the +* classical representation after 2 calls. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include +#include "skinny128.h" +#include "tk_schedule.h" + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void mixcolumns_0(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],24) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,30); + tmp = ROR(state[i],16) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,4); + tmp = ROR(state[i],8) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 1 +******************************************************************************/ +void mixcolumns_1(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 2 +******************************************************************************/ +void mixcolumns_2(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],8) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,6); + tmp = ROR(state[i],16) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],24) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 3 +******************************************************************************/ +void mixcolumns_3(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x30303030; + state[i] ^= ROR(tmp,4); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,26); + } +} + +/****************************************************************************** +* Encryption of a single block without any operation mode using SKINNY-128-384. +* RTK1 and RTK2_3 are given separately to take advantage of the fact that +* TK2 and TK3 remains the same through the entire data encryption/decryption. +******************************************************************************/ +void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, + const u32* rtk2_3) { + u32 tmp; // used in SWAPMOVE macro + u32 state[4]; // 128-bit state + packing(state, ptext); // from byte to bitsliced representation + QUADRUPLE_ROUND(state, rtk1, rtk2_3); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); + QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); + QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); + QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); + QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); + QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); + QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); + unpacking(ctext, state); // from bitsliced to byte representation +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.h b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.h new file mode 100644 index 0000000..bda1e9b --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/skinny128.h @@ -0,0 +1,95 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); + +#define SKINNY128_384_ROUNDS 40 + +#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[0] ^= (rtk1)[0]; \ + state[1] ^= (rtk1)[1]; \ + state[2] ^= (rtk1)[2]; \ + state[3] ^= (rtk1)[3]; \ + state[0] ^= (rtk2_3)[0]; \ + state[1] ^= (rtk2_3)[1]; \ + state[2] ^= (rtk2_3)[2]; \ + state[3] ^= (rtk2_3)[3]; \ + mixcolumns_0(state); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[0] ^= (rtk1)[4]; \ + state[1] ^= (rtk1)[5]; \ + state[2] ^= (rtk1)[6]; \ + state[3] ^= (rtk1)[7]; \ + state[0] ^= (rtk2_3)[4]; \ + state[1] ^= (rtk2_3)[5]; \ + state[2] ^= (rtk2_3)[6]; \ + state[3] ^= (rtk2_3)[7]; \ + mixcolumns_1(state); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[0] ^= (rtk1)[8]; \ + state[1] ^= (rtk1)[9]; \ + state[2] ^= (rtk1)[10]; \ + state[3] ^= (rtk1)[11]; \ + state[0] ^= (rtk2_3)[8]; \ + state[1] ^= (rtk2_3)[9]; \ + state[2] ^= (rtk2_3)[10]; \ + state[3] ^= (rtk2_3)[11]; \ + mixcolumns_2(state); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[0] ^= (rtk1)[12]; \ + state[1] ^= (rtk1)[13]; \ + state[2] ^= (rtk1)[14]; \ + state[3] ^= (rtk1)[15]; \ + state[0] ^= (rtk2_3)[12]; \ + state[1] ^= (rtk2_3)[13]; \ + state[2] ^= (rtk2_3)[14]; \ + state[3] ^= (rtk2_3)[15]; \ + mixcolumns_3(state); \ +}) + + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.c b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.c new file mode 100644 index 0000000..1da4277 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.c @@ -0,0 +1,368 @@ +/****************************************************************************** +* Implementation of the SKINNY tweakey schedule to match fixslicing. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include //for memcmp +#include "tk_schedule.h" +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; + +/****************************************************************************** +* The round constants according to the new representation. +******************************************************************************/ +u32 rconst_32_bs[160] = { + 0x00000004, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000100, 0xfffffeff, 0x44000000, 0xfbffffff, 0x00000000, 0x04000000, + 0x00100000, 0x00100000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, + 0x00400000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffbfffff, + 0x01004000, 0xfefffbff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, + 0x00010410, 0xfffffbef, 0x00000054, 0xffffffaf, 0x00000000, 0x00000040, + 0x00000100, 0x00000100, 0x10000140, 0xfffffeff, 0x44000000, 0xfffffeff, + 0x04000000, 0x04000000, 0x00100000, 0x00100000, 0x04000001, 0xfbffffff, + 0x00140000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x00000000, + 0x01401000, 0xfebfffff, 0x01004400, 0xfffffbff, 0x00000000, 0x00000400, + 0x00000010, 0x00000010, 0x00010010, 0xffffffff, 0x00000004, 0xffffffaf, + 0x00000040, 0x00000040, 0x00000100, 0x00000000, 0x10000140, 0xffffffbf, + 0x40000100, 0xfbfffeff, 0x00000000, 0x04000000, 0x00100000, 0x00000000, + 0x04100001, 0xffefffff, 0x00440000, 0xffefffff, 0x00000000, 0x00400000, + 0x01000000, 0x01000000, 0x00401000, 0xffffffff, 0x00004000, 0xfeffffff, + 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00010400, 0xfffffbff, + 0x00000014, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000100, 0xffffffff, 0x40000000, 0xfbffffff, 0x00000000, 0x04000000, + 0x00100000, 0x00000000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, + 0x00000000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffffffff, + 0x00004000, 0xfeffffff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, + 0x00010400, 0xfffffbff, 0x00000014, 0xffffffaf, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x10000140, 0xfffffeff, 0x44000000, 0xffffffff, + 0x00000000, 0x04000000, 0x00100000, 0x00100000, 0x00000001, 0xffefffff, + 0x00440000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x01000000, + 0x01401000, 0xffbfffff, 0x01004000, 0xfffffbff, 0x00000400, 0x00000400, + 0x00000010, 0x00000000, 0x00010010, 0xfffffbff +}; + +/****************************************************************************** +* Pack the input into the bitsliced representation +* 24 28 56 60 88 92 120 124 | ... | 0 4 32 36 64 68 96 100 +* 25 29 57 61 89 93 121 125 | ... | 1 5 33 37 65 69 97 101 +* 26 30 58 62 90 94 122 126 | ... | 2 6 34 38 66 70 98 102 +* 27 31 59 63 91 95 123 127 | ... | 3 7 35 39 67 71 99 103 +******************************************************************************/ +void packing(u32* out, const u8* in) { + u32 tmp; + LE_LOAD(out, in); + LE_LOAD(out + 1, in + 8); + LE_LOAD(out + 2, in + 4); + LE_LOAD(out + 3, in + 12); + SWAPMOVE(out[0], out[0], 0x0a0a0a0a, 3); + SWAPMOVE(out[1], out[1], 0x0a0a0a0a, 3); + SWAPMOVE(out[2], out[2], 0x0a0a0a0a, 3); + SWAPMOVE(out[3], out[3], 0x0a0a0a0a, 3); + SWAPMOVE(out[2], out[0], 0x30303030, 2); + SWAPMOVE(out[1], out[0], 0x0c0c0c0c, 4); + SWAPMOVE(out[3], out[0], 0x03030303, 6); + SWAPMOVE(out[1], out[2], 0x0c0c0c0c, 2); + SWAPMOVE(out[3], out[2], 0x03030303, 4); + SWAPMOVE(out[3], out[1], 0x03030303, 2); +} + +/****************************************************************************** +* Unpack the input to a byte-wise representation +******************************************************************************/ +void unpacking(u8* out, u32 *in) { + u32 tmp; + SWAPMOVE(in[3], in[1], 0x03030303, 2); + SWAPMOVE(in[3], in[2], 0x03030303, 4); + SWAPMOVE(in[1], in[2], 0x0c0c0c0c, 2); + SWAPMOVE(in[3], in[0], 0x03030303, 6); + SWAPMOVE(in[1], in[0], 0x0c0c0c0c, 4); + SWAPMOVE(in[2], in[0], 0x30303030, 2); + SWAPMOVE(in[0], in[0], 0x0a0a0a0a, 3); + SWAPMOVE(in[1], in[1], 0x0a0a0a0a, 3); + SWAPMOVE(in[2], in[2], 0x0a0a0a0a, 3); + SWAPMOVE(in[3], in[3], 0x0a0a0a0a, 3); + LE_STORE(out, in[0]); + LE_STORE(out + 8, in[1]); + LE_STORE(out + 4, in[2]); + LE_STORE(out + 12, in[3]); +} + +/****************************************************************************** +* 0 4 1 5 +* 1 5 ---> 2 6 +* 2 6 3 7 +* 3 7 4 0 +******************************************************************************/ +void lfsr2_bs(u32* tk) { + u32 tmp; + tmp = tk[0] ^ (tk[2] & 0xaaaaaaaa); + tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); + tk[0] = tk[1]; + tk[1] = tk[2]; + tk[2] = tk[3]; + tk[3] = tmp; +} + +/****************************************************************************** +* 0 4 7 3 +* 1 5 ---> 0 4 +* 2 6 1 5 +* 3 7 2 6 +******************************************************************************/ +void lfsr3_bs(u32* tk) { + u32 tmp; + tmp = tk[3] ^ ((tk[1] & 0xaaaaaaaa) >> 1); + tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); + tk[3] = tk[2]; + tk[2] = tk[1]; + tk[1] = tk[0]; + tk[0] = tmp; +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, twice +******************************************************************************/ +void permute_tk_2(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,14) & 0xcc00cc00; + tk[i] |= (tmp & 0x000000ff) << 16; + tk[i] |= (tmp & 0xcc000000)>> 2; + tk[i] |= (tmp & 0x0033cc00) >> 8; + tk[i] |= (tmp & 0x00cc0000) >>18; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 4 times +******************************************************************************/ +void permute_tk_4(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,22) & 0xcc0000cc; + tk[i] |= ROR(tmp,16) & 0x3300cc00; + tk[i] |= ROR(tmp, 24) & 0x00cc3300; + tk[i] |= (tmp & 0x00cc00cc) >> 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 6 times +******************************************************************************/ +void permute_tk_6(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,6) & 0xcccc0000; + tk[i] |= ROR(tmp,24) & 0x330000cc; + tk[i] |= ROR(tmp,10) & 0x3333; + tk[i] |= (tmp & 0xcc) << 14; + tk[i] |= (tmp & 0x3300) << 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 8 times +******************************************************************************/ +void permute_tk_8(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0xcc000033; + tk[i] |= ROR(tmp,8) & 0x33cc0000; + tk[i] |= ROR(tmp,26) & 0x00333300; + tk[i] |= (tmp & 0x00333300) >> 6; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 10 times +******************************************************************************/ +void permute_tk_10(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc330000; + tk[i] |= ROR(tmp,26) & 0x33000033; + tk[i] |= ROR(tmp,22) & 0x00cccc00; + tk[i] |= (tmp & 0x00330000) >> 14; + tk[i] |= (tmp & 0xcc00) >> 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 12 times +******************************************************************************/ +void permute_tk_12(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc33; + tk[i] |= ROR(tmp,30) & 0x00cc00cc; + tk[i] |= ROR(tmp,10) & 0x33330000; + tk[i] |= ROR(tmp,16) & 0xcc003300; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 14 times +******************************************************************************/ +void permute_tk_14(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0x0033cc00; + tk[i] |= ROR(tmp,14) & 0x00cc0000; + tk[i] |= ROR(tmp,30) & 0xcc000000; + tk[i] |= ROR(tmp,16) & 0x000000ff; + tk[i] |= ROR(tmp,18) & 0x33003300; + } +} + +/****************************************************************************** +* Precompute all LFSRs on TK2 +******************************************************************************/ +void precompute_lfsr_tk2(u32* tk, const u8* key, const int rounds) { + u32 tk2[4]; + packing(tk2, key); + memcpy(tk, tk2, 16); + for(int i = 0 ; i < rounds; i+=2) { + lfsr2_bs(tk2); + memcpy(tk+i*4+4, tk2, 16); + } +} + +/****************************************************************************** +* Precompute all LFSRs on TK3 +******************************************************************************/ +void precompute_lfsr_tk3(u32* tk, const u8* key, const int rounds) { + u32 tk3[4]; + packing(tk3, key); + tk[0] ^= tk3[0]; + tk[1] ^= tk3[1]; + tk[2] ^= tk3[2]; + tk[3] ^= tk3[3]; + for(int i = 0 ; i < rounds; i+=2) { + lfsr3_bs(tk3); + tk[i*4+4] ^= tk3[0]; + tk[i*4+5] ^= tk3[1]; + tk[i*4+6] ^= tk3[2]; + tk[i*4+7] ^= tk3[3]; + } +} + +/****************************************************************************** +* XOR TK with TK1 before applying the permutations. +* The key is then rearranged to match the barrel shiftrows representation. +******************************************************************************/ +void permute_tk(u32* tk, const u8* key, const int rounds) { + u32 test; + u32 tk1[4], tmp[4]; + packing(tk1, key); + memcpy(tmp, tk, 16); + tmp[0] ^= tk1[0]; + tmp[1] ^= tk1[1]; + tmp[2] ^= tk1[2]; + tmp[3] ^= tk1[3]; + for(int i = 0 ; i < rounds; i += 8) { + test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P + tk[i*4] = tmp[2] & 0xf0f0f0f0; + tk[i*4+1] = tmp[3] & 0xf0f0f0f0; + tk[i*4+2] = tmp[0] & 0xf0f0f0f0; + tk[i*4+3] = tmp[1] & 0xf0f0f0f0; + memcpy(tmp, tk+i*4+4, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_2(tmp); // applies P^2 + else + permute_tk_10(tmp); // applies P^10 + tk[i*4+4] = ROR(tmp[0],26) & 0xc3c3c3c3; + tk[i*4+5] = ROR(tmp[1],26) & 0xc3c3c3c3; + tk[i*4+6] = ROR(tmp[2],26) & 0xc3c3c3c3; + tk[i*4+7] = ROR(tmp[3],26) & 0xc3c3c3c3; + tk[i*4+8] = ROR(tmp[2],28) & 0x03030303; + tk[i*4+8] |= ROR(tmp[2],12) & 0x0c0c0c0c; + tk[i*4+9] = ROR(tmp[3],28) & 0x03030303; + tk[i*4+9] |= ROR(tmp[3],12) & 0x0c0c0c0c; + tk[i*4+10] = ROR(tmp[0],28) & 0x03030303; + tk[i*4+10] |= ROR(tmp[0],12) & 0x0c0c0c0c; + tk[i*4+11] = ROR(tmp[1],28) & 0x03030303; + tk[i*4+11] |= ROR(tmp[1],12) & 0x0c0c0c0c; + memcpy(tmp, tk+i*4+12, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_4(tmp); // applies P^4 + else + permute_tk_12(tmp); // applies P^12 + for(int j = 0; j < 4; j++) { + tk[i*4+12+j] = ROR(tmp[j],14) & 0x30303030; + tk[i*4+12+j] |= ROR(tmp[j],6) & 0x0c0c0c0c; + } + tk[i*4+16] = ROR(tmp[2], 16) & 0xf0f0f0f0; + tk[i*4+17] = ROR(tmp[3], 16) & 0xf0f0f0f0; + tk[i*4+18] = ROR(tmp[0], 16) & 0xf0f0f0f0; + tk[i*4+19] = ROR(tmp[1], 16) & 0xf0f0f0f0; + memcpy(tmp, tk+i*4+20, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_6(tmp); // applies P^6 + else + permute_tk_14(tmp); // applies P^14 + tk[i*4+20] = ROR(tmp[0], 10) & 0xc3c3c3c3; + tk[i*4+21] = ROR(tmp[1], 10) & 0xc3c3c3c3; + tk[i*4+22] = ROR(tmp[2], 10) & 0xc3c3c3c3; + tk[i*4+23] = ROR(tmp[3], 10) & 0xc3c3c3c3; + tk[i*4+24] = ROR(tmp[2],12) & 0x03030303; + tk[i*4+24] |= ROR(tmp[2],28) & 0x0c0c0c0c; + tk[i*4+25] = ROR(tmp[3],12) & 0x03030303; + tk[i*4+25] |= ROR(tmp[3],28) & 0x0c0c0c0c; + tk[i*4+26] = ROR(tmp[0],12) & 0x03030303; + tk[i*4+26] |= ROR(tmp[0],28) & 0x0c0c0c0c; + tk[i*4+27] = ROR(tmp[1],12) & 0x03030303; + tk[i*4+27] |= ROR(tmp[1],28) & 0x0c0c0c0c; + memcpy(tmp, tk+i*4+28, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_8(tmp); // applies P^8 + for(int j = 0; j < 4; j++) { + tk[i*4+28+j] = ROR(tmp[j],30) & 0x30303030; + tk[i*4+28+j] |= ROR(tmp[j],22) & 0x0c0c0c0c; + } + if (test && (i+8 < rounds)) { //only if next loop iteration + tk[i*4+32] = tmp[2] & 0xf0f0f0f0; + tk[i*4+33] = tmp[3] & 0xf0f0f0f0; + tk[i*4+34] = tmp[0] & 0xf0f0f0f0; + tk[i*4+35] = tmp[1] & 0xf0f0f0f0; + } + } +} + +/****************************************************************************** +* Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst. +******************************************************************************/ +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3) { + memset(rtk, 0x00, 16*SKINNY128_384_ROUNDS); + precompute_lfsr_tk2(rtk, tk2, SKINNY128_384_ROUNDS); + precompute_lfsr_tk3(rtk, tk3, SKINNY128_384_ROUNDS); + permute_tk(rtk, (u8*)(rtk+8), SKINNY128_384_ROUNDS); // rtk+8 is NULL + for(int i = 0; i < SKINNY128_384_ROUNDS; i++) { // add rconsts + for(int j = 0; j < 4; j++) + rtk[i*4+j] ^= rconst_32_bs[i*4+j]; + } +} + +/****************************************************************************** +* Precompute RTK1. +******************************************************************************/ +void precompute_rtk1(u32* rtk1, const u8* tk1) { + memset(rtk1, 0x00, 16*16); + permute_tk(rtk1, tk1, 16); +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.h b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.h new file mode 100644 index 0000000..5615cbd --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1+v13/opt32/tk_schedule.h @@ -0,0 +1,39 @@ +#ifndef TK_SCHEDULE_H_ +#define TK_SCHEDULE_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +void packing(u32* out, const u8* in); +void unpacking(u8* out, u32 *in); +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3); +void precompute_rtk1(u32* rtk1, const u8* tk1); + +#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) + +#define XOR_BLOCKS(x,y) ({ \ + (x)[0] ^= (y)[0]; \ + (x)[1] ^= (y)[1]; \ + (x)[2] ^= (y)[2]; \ + (x)[3] ^= (y)[3]; \ +}) + +#define SWAPMOVE(a, b, mask, n) ({ \ + tmp = (b ^ (a >> n)) & mask; \ + b ^= tmp; \ + a ^= (tmp << n); \ +}) + +#define LE_LOAD(x, y) \ + *(x) = (((u32)(y)[3] << 24) | \ + ((u32)(y)[2] << 16) | \ + ((u32)(y)[1] << 8) | \ + (y)[0]); + +#define LE_STORE(x, y) \ + (x)[0] = (y) & 0xff; \ + (x)[1] = ((y) >> 8) & 0xff; \ + (x)[2] = ((y) >> 16) & 0xff; \ + (x)[3] = (y) >> 24; + +#endif // TK_SCHEDULE_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/api.h b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/api.h deleted file mode 100644 index a4aa567..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/crypto_aead.h deleted file mode 100644 index cfc09d6..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/crypto_aead.h +++ /dev/null @@ -1,11 +0,0 @@ -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); - -int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, - 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); diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/encrypt.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/encrypt.c deleted file mode 100644 index 91d0e6e..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/encrypt.c +++ /dev/null @@ -1,738 +0,0 @@ -/* - * Date: 29 November 2018 - * Contact: Thomas Peyrin - thomas.peyrin@gmail.com - * Mustafa Khairallah - mustafam001@e.ntu.edu.sg - */ - -#include "crypto_aead.h" -#include "api.h" -#include "skinny.h" -#include -#include - -void pad (const unsigned char* m, unsigned char* mp, int l, int len8) { - int i; - - for (i = 0; i < l; i++) { - if (i < len8) { - mp[i] = m[i]; - } - else if (i == l - 1) { - mp[i] = (len8 & 0x0f); - } - else { - mp[i] = 0x00; - } - } - -} - -void g8A (unsigned char* s, unsigned char* c) { - unsigned int tmps[4]; - unsigned int tmpc[4]; - - tmps[0] = *((unsigned int *)&s[0]); - tmps[1] = *((unsigned int *)&s[4]); - tmps[2] = *((unsigned int *)&s[8]); - tmps[3] = *((unsigned int *)&s[12]); - - // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); - // - // (s[i] >> 1) -> ((s[i]>>1)&0x7f) - // (s[i] & 0x80) -> (s[i])&0x80) not changed - // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) - - // use word access because of speeding up - tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); - tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); - tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); - tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); - - *((unsigned int *)&c[0]) = tmpc[0]; - *((unsigned int *)&c[4]) = tmpc[1]; - *((unsigned int *)&c[8]) = tmpc[2]; - *((unsigned int *)&c[12]) = tmpc[3]; -} - -void g8A_for_Tag_Generation (unsigned char* s, unsigned char* c) { - unsigned int tmps[4]; - unsigned int tmpc[4]; - - tmps[0] = *((unsigned int *)&s[0]); - tmps[1] = *((unsigned int *)&s[4]); - tmps[2] = *((unsigned int *)&s[8]); - tmps[3] = *((unsigned int *)&s[12]); - - // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); - // - // (s[i] >> 1) -> ((s[i]>>1)&0x7f) - // (s[i] & 0x80) -> (s[i])&0x80) not changed - // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) - - // use word access because of speeding up - tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); - tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); - tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); - tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); - - // use byte access because of memory alignment. - // c is not always in word(4 byte) alignment. - c[0] = tmpc[0] &0xFF; - c[1] = (tmpc[0]>>8) &0xFF; - c[2] = (tmpc[0]>>16)&0xFF; - c[3] = (tmpc[0]>>24)&0xFF; - c[4] = tmpc[1] &0xFF; - c[5] = (tmpc[1]>>8) &0xFF; - c[6] = (tmpc[1]>>16)&0xFF; - c[7] = (tmpc[1]>>24)&0xFF; - c[8] = tmpc[2] &0xFF; - c[9] = (tmpc[2]>>8) &0xFF; - c[10] = (tmpc[2]>>16)&0xFF; - c[11] = (tmpc[2]>>24)&0xFF; - c[12] = tmpc[3] &0xFF; - c[13] = (tmpc[3]>>8) &0xFF; - c[14] = (tmpc[3]>>16)&0xFF; - c[15] = (tmpc[3]>>24)&0xFF; -} - -void rho_ad_eqov16 (const unsigned char* m, - unsigned char* s) { - *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); -} - -void rho_ad_ud16 (const unsigned char* m, - unsigned char* s, - int len8) { - unsigned char mp [16]; - - pad(m,mp,16,len8); - *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); -} - -void rho_eqov16 (const unsigned char* m, - unsigned char* c, - unsigned char* s) { - g8A(s,c); - - *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); - - *((unsigned int *)&c[0]) ^= *((unsigned int *)&m[0]); - *((unsigned int *)&c[4]) ^= *((unsigned int *)&m[4]); - *((unsigned int *)&c[8]) ^= *((unsigned int *)&m[8]); - *((unsigned int *)&c[12]) ^= *((unsigned int *)&m[12]); -} - -void rho_ud16 (const unsigned char* m, - unsigned char* c, - unsigned char* s, - int len8, - int ver) { - int i; - unsigned char mp [16]; - - pad(m,mp,ver,len8); - - g8A(s,c); - *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); - for (i = 0; i < ver; i++) { - if (i < len8) { - c[i] = c[i] ^ mp[i]; - } - else { - c[i] = 0; - } - } -} - -void irho (unsigned char* m, - const unsigned char* c, - unsigned char* s, - int len8, - int ver) { - int i; - unsigned char cp [16]; - - pad(c,cp,ver,len8); - - g8A(s,m); - for (i = 0; i < ver; i++) { - if (i < len8) { - s[i] = s[i] ^ cp[i] ^ m[i]; - } - else { - s[i] = s[i] ^ cp[i]; - } - if (i < len8) { - m[i] = m[i] ^ cp[i]; - } - else { - m[i] = 0; - } - } -} - -void reset_lfsr_gf56 (unsigned char* CNT) { - *((unsigned int *)&CNT[0]) = 0x00000001; - *((unsigned int *)&CNT[4]) = 0x00000000; -} - -void lfsr_gf56 (unsigned char* CNT) { - unsigned int tmpCNT[2]; - unsigned int fb0; - - tmpCNT[0] = *((unsigned int *)&CNT[0]); // CNT3 CNT2 CNT1 CNT0 - tmpCNT[1] = *((unsigned int *)&CNT[4]); // CNT7 CNT6 CNT5 CNT4 - - fb0 = 0; - if ((tmpCNT[1] >> 23)&0x01) { - fb0 = 0x95; - } - - tmpCNT[1] = tmpCNT[1] << 1 | tmpCNT[0] >> 31; - tmpCNT[0] = tmpCNT[0] << 1 ^ fb0; - - *((unsigned int *)&CNT[0]) = tmpCNT[0]; - *((unsigned int *)&CNT[4]) = tmpCNT[1]; -} - -void block_cipher(unsigned char* s, - const unsigned char* k, unsigned char* T, - unsigned char* CNT, - skinny_ctrl* p_skinny_ctrl) { - p_skinny_ctrl->func_skinny_128_384_enc (s,p_skinny_ctrl,CNT,T,k); -} - -void nonce_encryption (const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - skinny_ctrl* p_skinny_ctrl) { - unsigned char T [16]; - *((unsigned int *)&T[0]) = *((unsigned int *)&N[0]); - *((unsigned int *)&T[4]) = *((unsigned int *)&N[4]); - *((unsigned int *)&T[8]) = *((unsigned int *)&N[8]); - *((unsigned int *)&T[12]) = *((unsigned int *)&N[12]); - CNT[7] = D; - block_cipher(s,k,T,CNT,p_skinny_ctrl); - -} - -void generate_tag (unsigned char** c, unsigned char* s, - int n, unsigned long long* clen) { - - g8A_for_Tag_Generation(s, *c); - *c = *c + n; - *c = *c - *clen; - -} - -unsigned long long msg_encryption (const unsigned char** M, unsigned char** c, - const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - unsigned long long mlen, - skinny_ctrl* p_skinny_ctrl) { - int len8; - - if (mlen >= 16) { - len8 = 16; - mlen = mlen - 16; - rho_eqov16(*M, *c, s); - } - else { - len8 = mlen; - mlen = 0; - rho_ud16(*M, *c, s, len8, 16); - } - *c = *c + len8; - *M = *M + len8; - lfsr_gf56(CNT); - if (mlen != 0) { - nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); - } - return mlen; -} - - - -unsigned long long msg_decryption (unsigned char** M, const unsigned char** c, - const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - unsigned long long clen, - skinny_ctrl* p_skinny_ctrl) { - int len8; - - if (clen >= 16) { - len8 = 16; - clen = clen - 16; - } - else { - len8 = clen; - clen = 0; - } - irho(*M, *c, s, len8, 16); - *c = *c + len8; - *M = *M + len8; - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); - return clen; -} - -unsigned long long ad2msg_encryption (const unsigned char** M, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - unsigned long long mlen, - skinny_ctrl* p_skinny_ctrl) { - unsigned char T [16]; - int len8; - - if (mlen <= 16) { - len8 = mlen; - mlen = 0; - - pad (*M,T,16,len8); - } - else { - len8 = 16; - mlen = mlen - 16; - - unsigned char *pM = (unsigned char *)(*M); - *((unsigned int *)&T[0]) = *((unsigned int *)&pM[0]); - *((unsigned int *)&T[4]) = *((unsigned int *)&pM[4]); - *((unsigned int *)&T[8]) = *((unsigned int *)&pM[8]); - *((unsigned int *)&T[12]) = *((unsigned int *)&pM[12]); - } - - CNT[7] = D; - block_cipher(s,k,T,CNT,p_skinny_ctrl); - lfsr_gf56(CNT); - *M = *M + len8; - - return mlen; - -} - - -unsigned long long ad_encryption (const unsigned char** A, unsigned char* s, - const unsigned char* k, unsigned long long adlen, - unsigned char* CNT, - unsigned char D, - skinny_ctrl* p_skinny_ctrl) { - - unsigned char T [16]; - int len8; - - if (adlen >= 16) { - len8 = 16; - adlen = adlen - 16; - rho_ad_eqov16(*A, s); - } - else { - len8 = adlen; - adlen = 0; - rho_ad_ud16(*A, s, len8); - } - *A = *A + len8; - lfsr_gf56(CNT); - if (adlen != 0) { - if (adlen >= 16) { - len8 = 16; - adlen = adlen - 16; - - unsigned char *pA = (unsigned char *)(*A); - *((unsigned int *)&T[0]) = *((unsigned int *)&pA[0]); - *((unsigned int *)&T[4]) = *((unsigned int *)&pA[4]); - *((unsigned int *)&T[8]) = *((unsigned int *)&pA[8]); - *((unsigned int *)&T[12]) = *((unsigned int *)&pA[12]); - } - else { - len8 = adlen; - adlen = 0; - - pad(*A, T, 16, len8); - } - *A = *A + len8; - CNT[7] = D; - block_cipher(s,k,T,CNT,p_skinny_ctrl); - lfsr_gf56(CNT); - } - - return adlen; -} - -int crypto_aead_encrypt ( - unsigned char* c, unsigned long long* clen, - const unsigned char* m, unsigned long long mlen, - const unsigned char* ad, unsigned long long adlen, - const unsigned char* nsec, - const unsigned char* npub, - const unsigned char* k - ) -{ - unsigned char s[16]; - unsigned char CNT[8]; // size 7 -> 8 for word access - unsigned char T[16]; - const unsigned char* N; - unsigned char w; - unsigned long long xlen; - - skinny_ctrl l_skinny_ctrl; - l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; - - (void)nsec; - N = npub; - - xlen = mlen; - - *((unsigned int *)&s[0]) = 0x00000000; - *((unsigned int *)&s[4]) = 0x00000000; - *((unsigned int *)&s[8]) = 0x00000000; - *((unsigned int *)&s[12]) = 0x00000000; - reset_lfsr_gf56(CNT); - - w = 48; - - if (adlen == 0) { - w = w ^ 2; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else if (adlen%(32) == 0) { - w = w ^ 8; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else if (adlen%(32) < 16) { - w = w ^ 2; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else if (adlen%(32) == 16) { - w = w ^ 0; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else { - w = w ^ 10; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - - if (adlen == 0) { // AD is an empty string - lfsr_gf56(CNT); - } - else while (adlen > 0) { - adlen = ad_encryption(&ad,s,k,adlen,CNT,40,&l_skinny_ctrl); - } - - if ((w & 8) == 0) { - xlen = ad2msg_encryption (&m,CNT,s,k,44,xlen,&l_skinny_ctrl); - } - else if (mlen == 0) { - lfsr_gf56(CNT); - } - while (xlen > 0) { - xlen = ad_encryption(&m,s,k,xlen,CNT,44,&l_skinny_ctrl); - } - nonce_encryption(N,CNT,s,k,w,&l_skinny_ctrl); - - // because, nonce_encryption is called at the last block of AD encryption - l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc1_1; - - // Tag generation - g8A(s, T); - - m = m - mlen; - - reset_lfsr_gf56(CNT); - - *((unsigned int *)&s[0]) = *((unsigned int *)&T[0]); - *((unsigned int *)&s[4]) = *((unsigned int *)&T[4]); - *((unsigned int *)&s[8]) = *((unsigned int *)&T[8]); - *((unsigned int *)&s[12]) = *((unsigned int *)&T[12]); - - *clen = mlen + 16; - - if (mlen > 0) { - nonce_encryption(N,CNT,s,k,36,&l_skinny_ctrl); - while (mlen > 16) { - mlen = msg_encryption(&m,&c,N,CNT,s,k,36,mlen,&l_skinny_ctrl); - } - rho_ud16(m, c, s, mlen, 16); - c = c + mlen; - m = m + mlen; - } - - // Tag Concatenation - - // use byte access because of memory alignment. - // c is not always in word(4 byte) alignment. - - for (int i = 0; i < 16; i = i + 1) { - *(c + i) = T[i]; - } - - c = c - *clen; - - return 0; -} - -int crypto_aead_decrypt( -unsigned char *m,unsigned long long *mlen, -unsigned char *nsec, -const unsigned char *c,unsigned long long clen, -const unsigned char *ad,unsigned long long adlen, -const unsigned char *npub, -const unsigned char *k -) -{ - unsigned char s[16]; - unsigned char CNT[8]; // size 7 -> 8 for word access - unsigned char T[16]; - const unsigned char* N; - unsigned char w; - unsigned long long xlen; - const unsigned char* mauth; - - skinny_ctrl l_skinny_ctrl; - l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; - - (void)nsec; - mauth = m; - - N = npub; - - xlen = clen-16; - - reset_lfsr_gf56(CNT); - - for (int i = 0; i < 16; i++) { - T[i] = *(c + clen - 16 + i); - } - - *((unsigned int *)&s[0]) = *((unsigned int *)&T[0]); - *((unsigned int *)&s[4]) = *((unsigned int *)&T[4]); - *((unsigned int *)&s[8]) = *((unsigned int *)&T[8]); - *((unsigned int *)&s[12]) = *((unsigned int *)&T[12]); - - clen = clen - 16; - *mlen = clen; - - if (clen > 0) { - nonce_encryption(N,CNT,s,k,36,&l_skinny_ctrl); - while (clen > 16) { - clen = msg_decryption(&m,&c,N,CNT,s,k,36,clen,&l_skinny_ctrl); - } - irho(m, c, s, clen, 16); - c = c + clen; - m = m + clen; - } - - *((unsigned int *)&s[0]) = 0x00000000; - *((unsigned int *)&s[4]) = 0x00000000; - *((unsigned int *)&s[8]) = 0x00000000; - *((unsigned int *)&s[12]) = 0x00000000; - reset_lfsr_gf56(CNT); - - w = 48; - - if (adlen == 0) { - w = w ^ 2; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else if (adlen%(32) == 0) { - w = w ^ 8; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else if (adlen%(32) < 16) { - w = w ^ 2; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else if (adlen%(32) == 16) { - w = w ^ 0; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - else { - w = w ^ 10; - if (xlen == 0) { - w =w ^ 1; - } - else if (xlen%(32) == 0) { - w = w ^ 4; - } - else if (xlen%(32) < 16) { - w = w ^ 1; - } - else if (xlen%(32) == 16) { - w = w ^ 0; - } - else { - w = w ^ 5; - } - } - - if (adlen == 0) { // AD is an empty string - lfsr_gf56(CNT); - } - else while (adlen > 0) { - adlen = ad_encryption(&ad,s,k,adlen,CNT,40,&l_skinny_ctrl); - } - - if ((w & 8) == 0) { - xlen = ad2msg_encryption (&mauth,CNT,s,k,44,xlen,&l_skinny_ctrl); - } - else if (clen == 0) { - lfsr_gf56(CNT); - } - while (xlen > 0) { - xlen = ad_encryption(&mauth,s,k,xlen,CNT,44,&l_skinny_ctrl); - } - nonce_encryption(N,CNT,s,k,w,&l_skinny_ctrl); - - // Tag generation - g8A_for_Tag_Generation(s, T); - for (int i = 0; i < 16; i++) { - if (T[i] != (*(c+i))) { - return -1; - } - } - - return 0; -} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/genkat_aead.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/genkat_aead.c deleted file mode 100644 index 21f840f..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/genkat_aead.c +++ /dev/null @@ -1,161 +0,0 @@ -// -// NIST-developed software is provided by NIST as a public service. -// You may use, copy and distribute copies of the software in any medium, -// provided that you keep intact this entire notice. You may improve, -// modify and create derivative works of the software or any portion of -// the software, and you may copy and distribute such modifications or -// works. Modified works should carry a notice stating that you changed -// the software and should note the date and nature of any such change. -// Please explicitly acknowledge the National Institute of Standards and -// Technology as the source of the software. -// -// NIST-developed software is expressly provided "AS IS." NIST MAKES NO -// WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION -// OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST -// NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE -// UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST -// DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE -// OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, -// RELIABILITY, OR USEFULNESS OF THE SOFTWARE. -// -// You are solely responsible for determining the appropriateness of using and -// distributing the software and you assume all risks associated with its use, -// including but not limited to the risks and costs of program errors, compliance -// with applicable laws, damage to or loss of data, programs or equipment, and -// the unavailability or interruption of operation. This software is not intended -// to be used in any situation where a failure could cause risk of injury or -// damage to property. The software developed by NIST employees is not subject to -// copyright protection within the United States. -// - -// disable deprecation for sprintf and fopen -#ifdef _MSC_VER -#define _CRT_SECURE_NO_WARNINGS -#endif - -#include -#include - -#include "crypto_aead.h" -#include "api.h" - -#define KAT_SUCCESS 0 -#define KAT_FILE_OPEN_ERROR -1 -#define KAT_DATA_ERROR -3 -#define KAT_CRYPTO_FAILURE -4 - -#define MAX_FILE_NAME 256 -#define MAX_MESSAGE_LENGTH 32 -#define MAX_ASSOCIATED_DATA_LENGTH 32 - -void init_buffer(unsigned char *buffer, unsigned long long numbytes); - -void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length); - -int generate_test_vectors(); - -int main() -{ - int ret = generate_test_vectors(); - - if (ret != KAT_SUCCESS) { - fprintf(stderr, "test vector generation failed with code %d\n", ret); - } - - return ret; -} - -int generate_test_vectors() -{ - FILE *fp; - char fileName[MAX_FILE_NAME]; - unsigned char key[CRYPTO_KEYBYTES]; - unsigned char nonce[CRYPTO_NPUBBYTES]; - unsigned char msg[MAX_MESSAGE_LENGTH]; - unsigned char msg2[MAX_MESSAGE_LENGTH]; - unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH]; - unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES]; - unsigned long long clen, mlen2; - int count = 1; - int func_ret, ret_val = KAT_SUCCESS; - - init_buffer(key, sizeof(key)); - init_buffer(nonce, sizeof(nonce)); - init_buffer(msg, sizeof(msg)); - init_buffer(ad, sizeof(ad)); - - sprintf(fileName, "LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8)); - - if ((fp = fopen(fileName, "w")) == NULL) { - fprintf(stderr, "Couldn't open <%s> for write\n", fileName); - return KAT_FILE_OPEN_ERROR; - } - - for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) { - for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) { - - printf("%0d\n", (int)clen); - - fprintf(fp, "Count = %d\n", count++); - printf("Count = %d\n", count - 1); - - fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES); - - fprint_bstr(fp, "Nonce = ", nonce, CRYPTO_NPUBBYTES); - - fprint_bstr(fp, "PT = ", msg, mlen); - - fprint_bstr(fp, "AD = ", ad, adlen); - - if ((func_ret = crypto_aead_encrypt(ct, &clen, msg, mlen, ad, adlen, NULL, nonce, key)) != 0) { - fprintf(fp, "crypto_aead_encrypt returned <%d>\n", func_ret); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - - fprint_bstr(fp, "CT = ", ct, clen); - - fprintf(fp, "\n"); - - if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) { - fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - - if (mlen != mlen2) { - fprintf(fp, "crypto_aead_decrypt returned bad 'mlen': Got <%llu>, expected <%llu>\n", mlen2, mlen); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - - if (memcmp(msg, msg2, mlen)) { - fprintf(fp, "crypto_aead_decrypt did not recover the plaintext\n"); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - } - } - - fclose(fp); - - return ret_val; -} - - -void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length) -{ - fprintf(fp, "%s", label); - - for (unsigned long long i = 0; i < length; i++) - fprintf(fp, "%02X", data[i]); - - fprintf(fp, "\n"); -} - -void init_buffer(unsigned char *buffer, unsigned long long numbytes) -{ - for (unsigned long long i = 0; i < numbytes; i++) - buffer[i] = (unsigned char)i; -} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny.h b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny.h deleted file mode 100644 index 6392b0f..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny.h +++ /dev/null @@ -1,8 +0,0 @@ -typedef struct ___skinny_ctrl { - unsigned char roundKeys[960]; // number of round : 56 - void (*func_skinny_128_384_enc)(unsigned char*, struct ___skinny_ctrl*, unsigned char* CNT, unsigned char* T, const unsigned char* K); -} skinny_ctrl; - -extern void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); -extern void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); -extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule2.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule2.c deleted file mode 100644 index 58006f2..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule2.c +++ /dev/null @@ -1,3027 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2020, NEC Corporation. - * - * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. - * - *****************************************************************************/ - -/* - * SKINNY-128-384 - * - * load * AC(c0 c1) ^ TK3 - * calc AC(c0 c1) ^ TK2 -> store - * ART(TK2) - * - * number of rounds : 56 - */ - -__attribute__((aligned(4))) -void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) -{ - // r0 : points to roundKeys(& masterKey) - // r1-r4 : key state - // r5-r6 : temp use - // r7 : constant(0xfefefefe) - // r8 : constant(0x01010101) - // r9 : temp use - // r10 : temp use - asm volatile( - "stmdb sp!, {r4-r10} \n\t" - "ldr.w r1, [r0,#16] \n\t" // load master key - "ldr.w r2, [r0,#20] \n\t" // load master key - "ldr.w r3, [r0,#24] \n\t" // load master key - "ldr.w r4, [r0,#28] \n\t" // load master key - "mov.w r7, #0xfefefefe \n\t" - "mov.w r8, #0x01010101 \n\t" - - // round 1 - - "ldr.w r9, [r0,#512] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#516] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#64] \n\t" - "str.w r10, [r0,#68] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 2 - - "ldr.w r9, [r0,#520] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#524] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#72] \n\t" - "str.w r10, [r0,#76] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 3 - - "ldr.w r9, [r0,#528] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#532] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#80] \n\t" - "str.w r10, [r0,#84] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 4 - - "ldr.w r9, [r0,#536] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#540] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#88] \n\t" - "str.w r10, [r0,#92] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 5 - - "ldr.w r9, [r0,#544] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#548] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#96] \n\t" - "str.w r10, [r0,#100] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 6 - - "ldr.w r9, [r0,#552] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#556] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#104] \n\t" - "str.w r10, [r0,#108] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 7 - - "ldr.w r9, [r0,#560] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#564] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#112] \n\t" - "str.w r10, [r0,#116] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 8 - - "ldr.w r9, [r0,#568] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#572] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#120] \n\t" - "str.w r10, [r0,#124] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 9 - - "ldr.w r9, [r0,#576] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#580] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#128] \n\t" - "str.w r10, [r0,#132] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 10 - - "ldr.w r9, [r0,#584] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#588] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#136] \n\t" - "str.w r10, [r0,#140] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 11 - - "ldr.w r9, [r0,#592] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#596] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#144] \n\t" - "str.w r10, [r0,#148] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 12 - - "ldr.w r9, [r0,#600] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#604] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#152] \n\t" - "str.w r10, [r0,#156] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 13 - - "ldr.w r9, [r0,#608] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#612] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#160] \n\t" - "str.w r10, [r0,#164] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 14 - - "ldr.w r9, [r0,#616] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#620] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#168] \n\t" - "str.w r10, [r0,#172] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 15 - - "ldr.w r9, [r0,#624] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#628] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#176] \n\t" - "str.w r10, [r0,#180] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 16 - - "ldr.w r9, [r0,#632] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#636] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#184] \n\t" - "str.w r10, [r0,#188] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 17 - - "ldr.w r9, [r0,#640] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#644] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#192] \n\t" - "str.w r10, [r0,#196] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 18 - - "ldr.w r9, [r0,#648] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#652] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#200] \n\t" - "str.w r10, [r0,#204] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 19 - - "ldr.w r9, [r0,#656] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#660] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#208] \n\t" - "str.w r10, [r0,#212] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 20 - - "ldr.w r9, [r0,#664] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#668] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#216] \n\t" - "str.w r10, [r0,#220] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 21 - - "ldr.w r9, [r0,#672] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#676] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#224] \n\t" - "str.w r10, [r0,#228] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 22 - - "ldr.w r9, [r0,#680] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#684] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#232] \n\t" - "str.w r10, [r0,#236] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 23 - - "ldr.w r9, [r0,#688] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#692] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#240] \n\t" - "str.w r10, [r0,#244] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 24 - - "ldr.w r9, [r0,#696] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#700] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#248] \n\t" - "str.w r10, [r0,#252] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 25 - - "ldr.w r9, [r0,#704] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#708] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#256] \n\t" - "str.w r10, [r0,#260] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 26 - - "ldr.w r9, [r0,#712] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#716] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#264] \n\t" - "str.w r10, [r0,#268] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 27 - - "ldr.w r9, [r0,#720] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#724] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#272] \n\t" - "str.w r10, [r0,#276] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 28 - - "ldr.w r9, [r0,#728] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#732] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#280] \n\t" - "str.w r10, [r0,#284] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 29 - - "ldr.w r9, [r0,#736] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#740] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#288] \n\t" - "str.w r10, [r0,#292] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 30 - - "ldr.w r9, [r0,#744] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#748] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#296] \n\t" - "str.w r10, [r0,#300] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 31 - - "ldr.w r9, [r0,#752] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#756] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#304] \n\t" - "str.w r10, [r0,#308] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 32 - - "ldr.w r9, [r0,#760] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#764] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#312] \n\t" - "str.w r10, [r0,#316] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 33 - - "ldr.w r9, [r0,#768] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#772] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#320] \n\t" - "str.w r10, [r0,#324] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 34 - - "ldr.w r9, [r0,#776] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#780] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#328] \n\t" - "str.w r10, [r0,#332] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 35 - - "ldr.w r9, [r0,#784] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#788] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#336] \n\t" - "str.w r10, [r0,#340] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 36 - - "ldr.w r9, [r0,#792] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#796] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#344] \n\t" - "str.w r10, [r0,#348] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 37 - - "ldr.w r9, [r0,#800] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#804] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#352] \n\t" - "str.w r10, [r0,#356] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 38 - - "ldr.w r9, [r0,#808] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#812] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#360] \n\t" - "str.w r10, [r0,#364] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 39 - - "ldr.w r9, [r0,#816] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#820] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#368] \n\t" - "str.w r10, [r0,#372] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 40 - - "ldr.w r9, [r0,#824] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#828] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#376] \n\t" - "str.w r10, [r0,#380] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 41 - - "ldr.w r9, [r0,#832] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#836] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#384] \n\t" - "str.w r10, [r0,#388] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 42 - - "ldr.w r9, [r0,#840] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#844] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#392] \n\t" - "str.w r10, [r0,#396] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 43 - - "ldr.w r9, [r0,#848] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#852] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#400] \n\t" - "str.w r10, [r0,#404] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 44 - - "ldr.w r9, [r0,#856] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#860] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#408] \n\t" - "str.w r10, [r0,#412] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 45 - - "ldr.w r9, [r0,#864] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#868] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#416] \n\t" - "str.w r10, [r0,#420] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 46 - - "ldr.w r9, [r0,#872] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#876] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#424] \n\t" - "str.w r10, [r0,#428] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 47 - - "ldr.w r9, [r0,#880] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#884] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#432] \n\t" - "str.w r10, [r0,#436] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 48 - - "ldr.w r9, [r0,#888] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#892] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#440] \n\t" - "str.w r10, [r0,#444] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 49 - - "ldr.w r9, [r0,#896] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#900] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#448] \n\t" - "str.w r10, [r0,#452] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 50 - - "ldr.w r9, [r0,#904] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#908] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#456] \n\t" - "str.w r10, [r0,#460] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 51 - - "ldr.w r9, [r0,#912] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#916] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#464] \n\t" - "str.w r10, [r0,#468] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 52 - - "ldr.w r9, [r0,#920] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#924] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#472] \n\t" - "str.w r10, [r0,#476] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 53 - - "ldr.w r9, [r0,#928] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#932] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#480] \n\t" - "str.w r10, [r0,#484] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 54 - - "ldr.w r9, [r0,#936] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#940] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#488] \n\t" - "str.w r10, [r0,#492] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 55 - - "ldr.w r9, [r0,#944] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#948] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#496] \n\t" - "str.w r10, [r0,#500] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 56 - - "ldr.w r9, [r0,#952] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#956] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#504] \n\t" - "str.w r10, [r0,#508] \n\t" - - // permutation - - // not need to calculate (not used) - - "ldmia.w sp!, {r4-r10} \n\t" - : - : [roundKeys] "r" (roundKeys) - : "cc"); -} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c deleted file mode 100644 index 81c4406..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c +++ /dev/null @@ -1,2898 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2020, NEC Corporation. - * - * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. - * - *****************************************************************************/ - -/* - * SKINNY-128-384 - * - * AC(c0 c1) ^ TK3 -> store - * ART(TK3) - * - * number of rounds : 56 - */ - -__attribute__((aligned(4))) -void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) -{ - // r0 : points to roundKeys(& masterKey) - // r1 : points to RC - // r2-r5 : key state - // r6-r7 : temp use - // r8 : constant(0x7f7f7f7f) - // r9 : constant(0x80808080) - asm volatile( - "stmdb sp!, {r4-r9} \n\t" - "ldr.w r2, [r0,#32] \n\t" // load master key - "ldr.w r3, [r0,#36] \n\t" // load master key - "ldr.w r4, [r0,#40] \n\t" // load master key - "ldr.w r5, [r0,#44] \n\t" // load master key - "mov.w r8, #0x7f7f7f7f \n\t" - "mov.w r9, #0x80808080 \n\t" - - // round 1 - - // AC(c0 c1) - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#512] \n\t" - "str.w r3, [r0,#516] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 2 - - // AC(c0 c1) - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#520] \n\t" - "str.w r3, [r0,#524] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 3 - - // AC(c0 c1) - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#528] \n\t" - "str.w r3, [r0,#532] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 4 - - // AC(c0 c1) - "eor.w r6, r2, #0xf \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#536] \n\t" - "str.w r3, [r0,#540] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 5 - - // AC(c0 c1) - "eor.w r6, r2, #0xf \n\t" // k0^rc - "eor.w r7, r3, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#544] \n\t" - "str.w r7, [r0,#548] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 6 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#552] \n\t" - "str.w r7, [r0,#556] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 7 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xd \n\t" // k0^rc - - - // round key store - "str.w r6, [r0,#560] \n\t" - "str.w r7, [r0,#564] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 8 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#568] \n\t" - "str.w r7, [r0,#572] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 9 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#576] \n\t" - "str.w r7, [r0,#580] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 10 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xf \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#584] \n\t" - "str.w r7, [r0,#588] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 11 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#592] \n\t" - "str.w r7, [r0,#596] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 12 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#600] \n\t" - "str.w r7, [r0,#604] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 13 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#608] \n\t" - "str.w r7, [r0,#612] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 14 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#616] \n\t" - "str.w r7, [r0,#620] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 15 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#624] \n\t" - "str.w r7, [r0,#628] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 16 - - // AC(c0 c1) - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#632] \n\t" - "str.w r3, [r0,#636] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 17 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xd \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#640] \n\t" - "str.w r7, [r0,#644] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 18 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xa \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#648] \n\t" - "str.w r7, [r0,#652] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 19 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x5 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#656] \n\t" - "str.w r7, [r0,#660] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 20 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#664] \n\t" - "str.w r7, [r0,#668] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 21 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#672] \n\t" - "str.w r7, [r0,#676] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 22 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#680] \n\t" - "str.w r7, [r0,#684] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 23 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x8 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#688] \n\t" - "str.w r7, [r0,#692] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 24 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x0 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#696] \n\t" - "str.w r7, [r0,#700] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 25 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#704] \n\t" - "str.w r7, [r0,#708] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 26 - - // AC(c0 c1) - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#712] \n\t" - "str.w r3, [r0,#716] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 27 - - // AC(c0 c1) - "eor.w r6, r2, #0x5 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#720] \n\t" - "str.w r3, [r0,#724] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 28 - - // AC(c0 c1) - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#728] \n\t" - "str.w r3, [r0,#732] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 29 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#736] \n\t" - "str.w r7, [r0,#740] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 30 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#744] \n\t" - "str.w r7, [r0,#748] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 31 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#752] \n\t" - "str.w r7, [r0,#756] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 32 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x8 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#760] \n\t" - "str.w r7, [r0,#764] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 33 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#768] \n\t" - "str.w r7, [r0,#772] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 34 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#776] \n\t" - "str.w r7, [r0,#780] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 35 - - // AC(c0 c1) - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#784] \n\t" - "str.w r3, [r0,#788] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 36 - - // AC(c0 c1) - "eor.w r6, r2, #0xd \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#792] \n\t" - "str.w r3, [r0,#796] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 37 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#800] \n\t" - "str.w r7, [r0,#804] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 38 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#808] \n\t" - "str.w r7, [r0,#812] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 39 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xd \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#816] \n\t" - "str.w r7, [r0,#820] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 40 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xa \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#824] \n\t" - "str.w r7, [r0,#828] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 41 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x4 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#832] \n\t" - "str.w r7, [r0,#836] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 42 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#840] \n\t" - "str.w r7, [r0,#844] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 43 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#848] \n\t" - "str.w r7, [r0,#852] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 44 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x4 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#856] \n\t" - "str.w r7, [r0,#860] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 45 - - // AC(c0 c1) - "eor.w r6, r2, #0x8 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#864] \n\t" - "str.w r3, [r0,#868] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 46 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#872] \n\t" - "str.w r7, [r0,#876] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 47 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#880] \n\t" - "str.w r7, [r0,#884] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 48 - - // AC(c0 c1) - "eor.w r6, r2, #0x4 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#888] \n\t" - "str.w r3, [r0,#892] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 49 - - // AC(c0 c1) - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#896] \n\t" - "str.w r3, [r0,#900] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 50 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#904] \n\t" - "str.w r7, [r0,#908] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 51 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#912] \n\t" - "str.w r7, [r0,#916] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 52 - - // AC(c0 c1) - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#920] \n\t" - "str.w r3, [r0,#924] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 53 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#928] \n\t" - "str.w r7, [r0,#932] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 54 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#936] \n\t" - "str.w r7, [r0,#940] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 55 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x5 \n\t" // k0^rc - // round key store - "str.w r6, [r0,#944] \n\t" - "str.w r7, [r0,#948] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 56 - - // AC(c0 c1) - "eor.w r6, r2, #0xa \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#952] \n\t" - "str.w r3, [r0,#956] \n\t" - - // permutation - - // not need to calculate (not used) - - "ldmia.w sp!, {r4-r9} \n\t" - : - : [roundKeys] "r" (roundKeys), [pRC] "r" (pRC) - : "cc"); -} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_main.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_main.c deleted file mode 100644 index 217b8a6..0000000 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_main.c +++ /dev/null @@ -1,4687 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2020, NEC Corporation. - * - * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. - * - *****************************************************************************/ - -/* - * SKINNY-128-384 - * - * ART(TK1) -> store - * load AC(c0 c1) ^ TK3 ^ TK2 - * load TK1 - * calc AC(c0 c1) ^ TK3 ^ TK2 ^ TK1 -> use at (AC->ART) - * SC->SR->(AC->ART)->MC - * - * number of rounds : 56 - */ - -#include "skinny.h" - -/* - * S-BOX - */ -unsigned char SBOX[512] -= { - // Original - 0x65, 0x4c, 0x6a, 0x42, 0x4b, 0x63, 0x43, 0x6b, 0x55, 0x75, 0x5a, 0x7a, 0x53, 0x73, 0x5b, 0x7b, - 0x35, 0x8c, 0x3a, 0x81, 0x89, 0x33, 0x80, 0x3b, 0x95, 0x25, 0x98, 0x2a, 0x90, 0x23, 0x99, 0x2b, - 0xe5, 0xcc, 0xe8, 0xc1, 0xc9, 0xe0, 0xc0, 0xe9, 0xd5, 0xf5, 0xd8, 0xf8, 0xd0, 0xf0, 0xd9, 0xf9, - 0xa5, 0x1c, 0xa8, 0x12, 0x1b, 0xa0, 0x13, 0xa9, 0x05, 0xb5, 0x0a, 0xb8, 0x03, 0xb0, 0x0b, 0xb9, - 0x32, 0x88, 0x3c, 0x85, 0x8d, 0x34, 0x84, 0x3d, 0x91, 0x22, 0x9c, 0x2c, 0x94, 0x24, 0x9d, 0x2d, - 0x62, 0x4a, 0x6c, 0x45, 0x4d, 0x64, 0x44, 0x6d, 0x52, 0x72, 0x5c, 0x7c, 0x54, 0x74, 0x5d, 0x7d, - 0xa1, 0x1a, 0xac, 0x15, 0x1d, 0xa4, 0x14, 0xad, 0x02, 0xb1, 0x0c, 0xbc, 0x04, 0xb4, 0x0d, 0xbd, - 0xe1, 0xc8, 0xec, 0xc5, 0xcd, 0xe4, 0xc4, 0xed, 0xd1, 0xf1, 0xdc, 0xfc, 0xd4, 0xf4, 0xdd, 0xfd, - 0x36, 0x8e, 0x38, 0x82, 0x8b, 0x30, 0x83, 0x39, 0x96, 0x26, 0x9a, 0x28, 0x93, 0x20, 0x9b, 0x29, - 0x66, 0x4e, 0x68, 0x41, 0x49, 0x60, 0x40, 0x69, 0x56, 0x76, 0x58, 0x78, 0x50, 0x70, 0x59, 0x79, - 0xa6, 0x1e, 0xaa, 0x11, 0x19, 0xa3, 0x10, 0xab, 0x06, 0xb6, 0x08, 0xba, 0x00, 0xb3, 0x09, 0xbb, - 0xe6, 0xce, 0xea, 0xc2, 0xcb, 0xe3, 0xc3, 0xeb, 0xd6, 0xf6, 0xda, 0xfa, 0xd3, 0xf3, 0xdb, 0xfb, - 0x31, 0x8a, 0x3e, 0x86, 0x8f, 0x37, 0x87, 0x3f, 0x92, 0x21, 0x9e, 0x2e, 0x97, 0x27, 0x9f, 0x2f, - 0x61, 0x48, 0x6e, 0x46, 0x4f, 0x67, 0x47, 0x6f, 0x51, 0x71, 0x5e, 0x7e, 0x57, 0x77, 0x5f, 0x7f, - 0xa2, 0x18, 0xae, 0x16, 0x1f, 0xa7, 0x17, 0xaf, 0x01, 0xb2, 0x0e, 0xbe, 0x07, 0xb7, 0x0f, 0xbf, - 0xe2, 0xca, 0xee, 0xc6, 0xcf, 0xe7, 0xc7, 0xef, 0xd2, 0xf2, 0xde, 0xfe, 0xd7, 0xf7, 0xdf, 0xff, - - // Original ^ c2(0x02) - 0x67, 0x4e, 0x68, 0x40, 0x49, 0x61, 0x41, 0x69, 0x57, 0x77, 0x58, 0x78, 0x51, 0x71, 0x59, 0x79, - 0x37, 0x8e, 0x38, 0x83, 0x8b, 0x31, 0x82, 0x39, 0x97, 0x27, 0x9a, 0x28, 0x92, 0x21, 0x9b, 0x29, - 0xe7, 0xce, 0xea, 0xc3, 0xcb, 0xe2, 0xc2, 0xeb, 0xd7, 0xf7, 0xda, 0xfa, 0xd2, 0xf2, 0xdb, 0xfb, - 0xa7, 0x1e, 0xaa, 0x10, 0x19, 0xa2, 0x11, 0xab, 0x07, 0xb7, 0x08, 0xba, 0x01, 0xb2, 0x09, 0xbb, - 0x30, 0x8a, 0x3e, 0x87, 0x8f, 0x36, 0x86, 0x3f, 0x93, 0x20, 0x9e, 0x2e, 0x96, 0x26, 0x9f, 0x2f, - 0x60, 0x48, 0x6e, 0x47, 0x4f, 0x66, 0x46, 0x6f, 0x50, 0x70, 0x5e, 0x7e, 0x56, 0x76, 0x5f, 0x7f, - 0xa3, 0x18, 0xae, 0x17, 0x1f, 0xa6, 0x16, 0xaf, 0x00, 0xb3, 0x0e, 0xbe, 0x06, 0xb6, 0x0f, 0xbf, - 0xe3, 0xca, 0xee, 0xc7, 0xcf, 0xe6, 0xc6, 0xef, 0xd3, 0xf3, 0xde, 0xfe, 0xd6, 0xf6, 0xdf, 0xff, - 0x34, 0x8c, 0x3a, 0x80, 0x89, 0x32, 0x81, 0x3b, 0x94, 0x24, 0x98, 0x2a, 0x91, 0x22, 0x99, 0x2b, - 0x64, 0x4c, 0x6a, 0x43, 0x4b, 0x62, 0x42, 0x6b, 0x54, 0x74, 0x5a, 0x7a, 0x52, 0x72, 0x5b, 0x7b, - 0xa4, 0x1c, 0xa8, 0x13, 0x1b, 0xa1, 0x12, 0xa9, 0x04, 0xb4, 0x0a, 0xb8, 0x02, 0xb1, 0x0b, 0xb9, - 0xe4, 0xcc, 0xe8, 0xc0, 0xc9, 0xe1, 0xc1, 0xe9, 0xd4, 0xf4, 0xd8, 0xf8, 0xd1, 0xf1, 0xd9, 0xf9, - 0x33, 0x88, 0x3c, 0x84, 0x8d, 0x35, 0x85, 0x3d, 0x90, 0x23, 0x9c, 0x2c, 0x95, 0x25, 0x9d, 0x2d, - 0x63, 0x4a, 0x6c, 0x44, 0x4d, 0x65, 0x45, 0x6d, 0x53, 0x73, 0x5c, 0x7c, 0x55, 0x75, 0x5d, 0x7d, - 0xa0, 0x1a, 0xac, 0x14, 0x1d, 0xa5, 0x15, 0xad, 0x03, 0xb0, 0x0c, 0xbc, 0x05, 0xb5, 0x0d, 0xbd, - 0xe0, 0xc8, 0xec, 0xc4, 0xcd, 0xe5, 0xc5, 0xed, 0xd0, 0xf0, 0xdc, 0xfc, 0xd5, 0xf5, 0xdd, 0xfd, -}; - -/* - * Round Constants - */ -unsigned char RC[56] -= { - 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, - 0x34, 0x29, 0x12, 0x24, 0x08, 0x11, 0x22, 0x04, - 0x09, 0x13, 0x26, 0x0c, 0x19, 0x32, 0x25, 0x0a,}; - -extern void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) __attribute__((noinline)); -extern void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) __attribute__((noinline)); -extern void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) __attribute__((noinline)); - -void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) -{ - *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); - *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); - *((unsigned int *)&pskinny_ctrl->roundKeys[32]) = *((unsigned int *)&K[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[36]) = *((unsigned int *)&K[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[40]) = *((unsigned int *)&K[8]); - *((unsigned int *)&pskinny_ctrl->roundKeys[44]) = *((unsigned int *)&K[12]); - - RunEncryptionKeyScheduleTK3(pskinny_ctrl->roundKeys, RC); - RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); - Encrypt(input, pskinny_ctrl->roundKeys, SBOX); - - pskinny_ctrl->func_skinny_128_384_enc = skinny_128_384_enc12_12; -} - -void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) -{ - (void)K; - - *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); - *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); - - RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); - Encrypt(input, pskinny_ctrl->roundKeys, SBOX); -} - -extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) -{ - (void)T; - (void)K; - - *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); - - Encrypt(input, pskinny_ctrl->roundKeys, SBOX); -} - -__attribute__((aligned(4))) -void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) -{ - // r0 : ponits to plaintext - // r1 : points to roundKeys(& masterKey) - // r2 : points to SBOX - // r3-r6 : cipher state - // r7-r12: temp use - // r14 : temp use - asm volatile( - "stmdb sp!, {r4-r12,r14} \n\t" - "stmdb.w sp!, {r0} \n\t" // push store pointer - -// ART(TK1) - - "ldm.w r1, {r3-r4} \n\t" // load master key - - // round 1-2 - -// // round key store(do not need) -// "str.w r3, [r1,#0] \n\t" -// "str.w r4, [r1,#4] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 3-4 - - // round key store - "str.w r5, [r1,#8] \n\t" - "str.w r6, [r1,#12] \n\t" - - // premutation - - // r3 (--- --- --- ---) k5 k0 k7 k1 - // r4 (--- --- --- ---) k3 k4 k6 k2 - // r5 ( k3 k2 k1 k0) -----> --- --- --- --- - // r6 ( k7 k6 k5 k4) --- --- --- --- -#ifdef STM32F4 // for Cortex-M4 - "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) - "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) - "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) - "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) - "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) - "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) - "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) - "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) - "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) - "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) - "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) - "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) -#endif - - // round 5-6 - - // round key store - "str.w r3, [r1,#16] \n\t" - "str.w r4, [r1,#20] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 7-8 - - // round key store - "str.w r5, [r1,#24] \n\t" - "str.w r6, [r1,#28] \n\t" - - // premutation - - // r3 (--- --- --- ---) k5 k0 k7 k1 - // r4 (--- --- --- ---) k3 k4 k6 k2 - // r5 ( k3 k2 k1 k0) -----> --- --- --- --- - // r6 ( k7 k6 k5 k4) --- --- --- --- -#ifdef STM32F4 // for Cortex-M4 - "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) - "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) - "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) - "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) - "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) - "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) - "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) - "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) - "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) - "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) - "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) - "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) -#endif - - // round 9-10 - - // round key store - "str.w r3, [r1,#32] \n\t" - "str.w r4, [r1,#36] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 11-12 - - // round key store - "str.w r5, [r1,#40] \n\t" - "str.w r6, [r1,#44] \n\t" - - // premutation - - // r3 (--- --- --- ---) k5 k0 k7 k1 - // r4 (--- --- --- ---) k3 k4 k6 k2 - // r5 ( k3 k2 k1 k0) -----> --- --- --- --- - // r6 ( k7 k6 k5 k4) --- --- --- --- -#ifdef STM32F4 // for Cortex-M4 - "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) - "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) - "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) - "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) - "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) - "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) - "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) - "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) - "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) - "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) - "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) - "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) -#endif - - // round 13-14 - - // round key store - "str.w r3, [r1,#48] \n\t" - "str.w r4, [r1,#52] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 15-16 - - // round key store - "str.w r5, [r1,#56] \n\t" - "str.w r6, [r1,#60] \n\t" - - // premutation - - // not need to calculate (not used) - -// SC->(AC->ART)->SR->MC - - "add.w r14, r2, #256 \n\t" // point to SBOX ^ c2(0x02) - - "ldm.w r0, {r3-r6} \n\t" // load plaintext - // r0 now free to overwrite - - // round 1 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#64] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#68] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 2 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#72] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#76] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 3 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#80] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#84] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 4 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#88] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#92] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 5 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#96] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#100] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 6 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#104] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#108] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 7 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#112] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#116] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 8 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#120] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#124] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 9 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#32] \n\t" // load TK1 - "ldr.w r10, [r1,#36] \n\t" // load TK1 - "ldr.w r11, [r1,#128] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#132] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 10 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#136] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#140] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 11 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#40] \n\t" // load TK1 - "ldr.w r10, [r1,#44] \n\t" // load TK1 - "ldr.w r11, [r1,#144] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#148] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 12 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#152] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#156] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 13 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#48] \n\t" // load TK1 - "ldr.w r10, [r1,#52] \n\t" // load TK1 - "ldr.w r11, [r1,#160] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#164] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 14 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#168] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#172] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 15 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#56] \n\t" // load TK1 - "ldr.w r10, [r1,#60] \n\t" // load TK1 - "ldr.w r11, [r1,#176] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#180] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 16 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#184] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#188] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 17 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#192] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#196] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 18 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#200] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#204] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 19 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#208] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#212] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 20 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#216] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#220] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 21 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#224] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#228] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 22 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#232] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#236] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 23 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#240] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#244] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 24 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#248] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#252] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 25 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#32] \n\t" // load TK1 - "ldr.w r10, [r1,#36] \n\t" // load TK1 - "ldr.w r11, [r1,#256] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#260] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 26 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#264] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#268] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 27 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#40] \n\t" // load TK1 - "ldr.w r10, [r1,#44] \n\t" // load TK1 - "ldr.w r11, [r1,#272] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#276] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 28 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#280] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#284] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 29 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#48] \n\t" // load TK1 - "ldr.w r10, [r1,#52] \n\t" // load TK1 - "ldr.w r11, [r1,#288] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#292] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 30 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#296] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#300] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 31 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#56] \n\t" // load TK1 - "ldr.w r10, [r1,#60] \n\t" // load TK1 - "ldr.w r11, [r1,#304] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#308] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 32 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#312] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#316] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 33 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#320] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#324] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 34 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#328] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#332] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 35 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#336] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#340] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 36 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#344] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#348] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 37 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#352] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#356] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 38 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#360] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#364] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 39 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#368] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#372] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 40 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#376] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#380] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - - // round 41 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#32] \n\t" // load TK1 - "ldr.w r10, [r1,#36] \n\t" // load TK1 - "ldr.w r11, [r1,#384] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#388] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 42 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#392] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#396] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 43 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#40] \n\t" // load TK1 - "ldr.w r10, [r1,#44] \n\t" // load TK1 - "ldr.w r11, [r1,#400] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#404] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 44 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#408] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#412] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 45 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#48] \n\t" // load TK1 - "ldr.w r10, [r1,#52] \n\t" // load TK1 - "ldr.w r11, [r1,#416] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#420] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 46 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#424] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#428] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 47 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#56] \n\t" // load TK1 - "ldr.w r10, [r1,#60] \n\t" // load TK1 - "ldr.w r11, [r1,#432] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#436] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 48 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#440] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#444] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 49 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#448] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#452] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 50 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#456] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#460] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 51 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#464] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#468] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 52 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#472] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#476] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 53 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#480] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#484] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 54 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#488] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#492] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 55 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#496] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#500] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 56 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#504] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#508] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - - "ldmia.w sp!, {r0} \n\t" // pop store pointer - // r0 reload - - "str.w r3, [r0,#0] \n\t" // store ciphertext - "str.w r4, [r0,#4] \n\t" // store ciphertext - "str.w r5, [r0,#8] \n\t" // store ciphertext - "str.w r6, [r0,#12] \n\t" // store ciphertext - - "ldmia.w sp!, {r4-r12,r14} \n\t" - : - : [block] "r" (block), [roundKeys] "r" (roundKeys), [pSBOX] "" (pSBOX) - : "cc"); -} - diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/api.h b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/crypto_aead.h new file mode 100644 index 0000000..cfc09d6 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/crypto_aead.h @@ -0,0 +1,11 @@ +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); + +int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, + 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); diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/encrypt.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/encrypt.c new file mode 100644 index 0000000..91d0e6e --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/encrypt.c @@ -0,0 +1,738 @@ +/* + * Date: 29 November 2018 + * Contact: Thomas Peyrin - thomas.peyrin@gmail.com + * Mustafa Khairallah - mustafam001@e.ntu.edu.sg + */ + +#include "crypto_aead.h" +#include "api.h" +#include "skinny.h" +#include +#include + +void pad (const unsigned char* m, unsigned char* mp, int l, int len8) { + int i; + + for (i = 0; i < l; i++) { + if (i < len8) { + mp[i] = m[i]; + } + else if (i == l - 1) { + mp[i] = (len8 & 0x0f); + } + else { + mp[i] = 0x00; + } + } + +} + +void g8A (unsigned char* s, unsigned char* c) { + unsigned int tmps[4]; + unsigned int tmpc[4]; + + tmps[0] = *((unsigned int *)&s[0]); + tmps[1] = *((unsigned int *)&s[4]); + tmps[2] = *((unsigned int *)&s[8]); + tmps[3] = *((unsigned int *)&s[12]); + + // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); + // + // (s[i] >> 1) -> ((s[i]>>1)&0x7f) + // (s[i] & 0x80) -> (s[i])&0x80) not changed + // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) + + // use word access because of speeding up + tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); + tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); + tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); + tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); + + *((unsigned int *)&c[0]) = tmpc[0]; + *((unsigned int *)&c[4]) = tmpc[1]; + *((unsigned int *)&c[8]) = tmpc[2]; + *((unsigned int *)&c[12]) = tmpc[3]; +} + +void g8A_for_Tag_Generation (unsigned char* s, unsigned char* c) { + unsigned int tmps[4]; + unsigned int tmpc[4]; + + tmps[0] = *((unsigned int *)&s[0]); + tmps[1] = *((unsigned int *)&s[4]); + tmps[2] = *((unsigned int *)&s[8]); + tmps[3] = *((unsigned int *)&s[12]); + + // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); + // + // (s[i] >> 1) -> ((s[i]>>1)&0x7f) + // (s[i] & 0x80) -> (s[i])&0x80) not changed + // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) + + // use word access because of speeding up + tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); + tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); + tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); + tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); + + // use byte access because of memory alignment. + // c is not always in word(4 byte) alignment. + c[0] = tmpc[0] &0xFF; + c[1] = (tmpc[0]>>8) &0xFF; + c[2] = (tmpc[0]>>16)&0xFF; + c[3] = (tmpc[0]>>24)&0xFF; + c[4] = tmpc[1] &0xFF; + c[5] = (tmpc[1]>>8) &0xFF; + c[6] = (tmpc[1]>>16)&0xFF; + c[7] = (tmpc[1]>>24)&0xFF; + c[8] = tmpc[2] &0xFF; + c[9] = (tmpc[2]>>8) &0xFF; + c[10] = (tmpc[2]>>16)&0xFF; + c[11] = (tmpc[2]>>24)&0xFF; + c[12] = tmpc[3] &0xFF; + c[13] = (tmpc[3]>>8) &0xFF; + c[14] = (tmpc[3]>>16)&0xFF; + c[15] = (tmpc[3]>>24)&0xFF; +} + +void rho_ad_eqov16 (const unsigned char* m, + unsigned char* s) { + *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); +} + +void rho_ad_ud16 (const unsigned char* m, + unsigned char* s, + int len8) { + unsigned char mp [16]; + + pad(m,mp,16,len8); + *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); +} + +void rho_eqov16 (const unsigned char* m, + unsigned char* c, + unsigned char* s) { + g8A(s,c); + + *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); + + *((unsigned int *)&c[0]) ^= *((unsigned int *)&m[0]); + *((unsigned int *)&c[4]) ^= *((unsigned int *)&m[4]); + *((unsigned int *)&c[8]) ^= *((unsigned int *)&m[8]); + *((unsigned int *)&c[12]) ^= *((unsigned int *)&m[12]); +} + +void rho_ud16 (const unsigned char* m, + unsigned char* c, + unsigned char* s, + int len8, + int ver) { + int i; + unsigned char mp [16]; + + pad(m,mp,ver,len8); + + g8A(s,c); + *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); + for (i = 0; i < ver; i++) { + if (i < len8) { + c[i] = c[i] ^ mp[i]; + } + else { + c[i] = 0; + } + } +} + +void irho (unsigned char* m, + const unsigned char* c, + unsigned char* s, + int len8, + int ver) { + int i; + unsigned char cp [16]; + + pad(c,cp,ver,len8); + + g8A(s,m); + for (i = 0; i < ver; i++) { + if (i < len8) { + s[i] = s[i] ^ cp[i] ^ m[i]; + } + else { + s[i] = s[i] ^ cp[i]; + } + if (i < len8) { + m[i] = m[i] ^ cp[i]; + } + else { + m[i] = 0; + } + } +} + +void reset_lfsr_gf56 (unsigned char* CNT) { + *((unsigned int *)&CNT[0]) = 0x00000001; + *((unsigned int *)&CNT[4]) = 0x00000000; +} + +void lfsr_gf56 (unsigned char* CNT) { + unsigned int tmpCNT[2]; + unsigned int fb0; + + tmpCNT[0] = *((unsigned int *)&CNT[0]); // CNT3 CNT2 CNT1 CNT0 + tmpCNT[1] = *((unsigned int *)&CNT[4]); // CNT7 CNT6 CNT5 CNT4 + + fb0 = 0; + if ((tmpCNT[1] >> 23)&0x01) { + fb0 = 0x95; + } + + tmpCNT[1] = tmpCNT[1] << 1 | tmpCNT[0] >> 31; + tmpCNT[0] = tmpCNT[0] << 1 ^ fb0; + + *((unsigned int *)&CNT[0]) = tmpCNT[0]; + *((unsigned int *)&CNT[4]) = tmpCNT[1]; +} + +void block_cipher(unsigned char* s, + const unsigned char* k, unsigned char* T, + unsigned char* CNT, + skinny_ctrl* p_skinny_ctrl) { + p_skinny_ctrl->func_skinny_128_384_enc (s,p_skinny_ctrl,CNT,T,k); +} + +void nonce_encryption (const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + skinny_ctrl* p_skinny_ctrl) { + unsigned char T [16]; + *((unsigned int *)&T[0]) = *((unsigned int *)&N[0]); + *((unsigned int *)&T[4]) = *((unsigned int *)&N[4]); + *((unsigned int *)&T[8]) = *((unsigned int *)&N[8]); + *((unsigned int *)&T[12]) = *((unsigned int *)&N[12]); + CNT[7] = D; + block_cipher(s,k,T,CNT,p_skinny_ctrl); + +} + +void generate_tag (unsigned char** c, unsigned char* s, + int n, unsigned long long* clen) { + + g8A_for_Tag_Generation(s, *c); + *c = *c + n; + *c = *c - *clen; + +} + +unsigned long long msg_encryption (const unsigned char** M, unsigned char** c, + const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + unsigned long long mlen, + skinny_ctrl* p_skinny_ctrl) { + int len8; + + if (mlen >= 16) { + len8 = 16; + mlen = mlen - 16; + rho_eqov16(*M, *c, s); + } + else { + len8 = mlen; + mlen = 0; + rho_ud16(*M, *c, s, len8, 16); + } + *c = *c + len8; + *M = *M + len8; + lfsr_gf56(CNT); + if (mlen != 0) { + nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); + } + return mlen; +} + + + +unsigned long long msg_decryption (unsigned char** M, const unsigned char** c, + const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + unsigned long long clen, + skinny_ctrl* p_skinny_ctrl) { + int len8; + + if (clen >= 16) { + len8 = 16; + clen = clen - 16; + } + else { + len8 = clen; + clen = 0; + } + irho(*M, *c, s, len8, 16); + *c = *c + len8; + *M = *M + len8; + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); + return clen; +} + +unsigned long long ad2msg_encryption (const unsigned char** M, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + unsigned long long mlen, + skinny_ctrl* p_skinny_ctrl) { + unsigned char T [16]; + int len8; + + if (mlen <= 16) { + len8 = mlen; + mlen = 0; + + pad (*M,T,16,len8); + } + else { + len8 = 16; + mlen = mlen - 16; + + unsigned char *pM = (unsigned char *)(*M); + *((unsigned int *)&T[0]) = *((unsigned int *)&pM[0]); + *((unsigned int *)&T[4]) = *((unsigned int *)&pM[4]); + *((unsigned int *)&T[8]) = *((unsigned int *)&pM[8]); + *((unsigned int *)&T[12]) = *((unsigned int *)&pM[12]); + } + + CNT[7] = D; + block_cipher(s,k,T,CNT,p_skinny_ctrl); + lfsr_gf56(CNT); + *M = *M + len8; + + return mlen; + +} + + +unsigned long long ad_encryption (const unsigned char** A, unsigned char* s, + const unsigned char* k, unsigned long long adlen, + unsigned char* CNT, + unsigned char D, + skinny_ctrl* p_skinny_ctrl) { + + unsigned char T [16]; + int len8; + + if (adlen >= 16) { + len8 = 16; + adlen = adlen - 16; + rho_ad_eqov16(*A, s); + } + else { + len8 = adlen; + adlen = 0; + rho_ad_ud16(*A, s, len8); + } + *A = *A + len8; + lfsr_gf56(CNT); + if (adlen != 0) { + if (adlen >= 16) { + len8 = 16; + adlen = adlen - 16; + + unsigned char *pA = (unsigned char *)(*A); + *((unsigned int *)&T[0]) = *((unsigned int *)&pA[0]); + *((unsigned int *)&T[4]) = *((unsigned int *)&pA[4]); + *((unsigned int *)&T[8]) = *((unsigned int *)&pA[8]); + *((unsigned int *)&T[12]) = *((unsigned int *)&pA[12]); + } + else { + len8 = adlen; + adlen = 0; + + pad(*A, T, 16, len8); + } + *A = *A + len8; + CNT[7] = D; + block_cipher(s,k,T,CNT,p_skinny_ctrl); + lfsr_gf56(CNT); + } + + return adlen; +} + +int crypto_aead_encrypt ( + unsigned char* c, unsigned long long* clen, + const unsigned char* m, unsigned long long mlen, + const unsigned char* ad, unsigned long long adlen, + const unsigned char* nsec, + const unsigned char* npub, + const unsigned char* k + ) +{ + unsigned char s[16]; + unsigned char CNT[8]; // size 7 -> 8 for word access + unsigned char T[16]; + const unsigned char* N; + unsigned char w; + unsigned long long xlen; + + skinny_ctrl l_skinny_ctrl; + l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; + + (void)nsec; + N = npub; + + xlen = mlen; + + *((unsigned int *)&s[0]) = 0x00000000; + *((unsigned int *)&s[4]) = 0x00000000; + *((unsigned int *)&s[8]) = 0x00000000; + *((unsigned int *)&s[12]) = 0x00000000; + reset_lfsr_gf56(CNT); + + w = 48; + + if (adlen == 0) { + w = w ^ 2; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else if (adlen%(32) == 0) { + w = w ^ 8; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else if (adlen%(32) < 16) { + w = w ^ 2; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else if (adlen%(32) == 16) { + w = w ^ 0; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else { + w = w ^ 10; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + + if (adlen == 0) { // AD is an empty string + lfsr_gf56(CNT); + } + else while (adlen > 0) { + adlen = ad_encryption(&ad,s,k,adlen,CNT,40,&l_skinny_ctrl); + } + + if ((w & 8) == 0) { + xlen = ad2msg_encryption (&m,CNT,s,k,44,xlen,&l_skinny_ctrl); + } + else if (mlen == 0) { + lfsr_gf56(CNT); + } + while (xlen > 0) { + xlen = ad_encryption(&m,s,k,xlen,CNT,44,&l_skinny_ctrl); + } + nonce_encryption(N,CNT,s,k,w,&l_skinny_ctrl); + + // because, nonce_encryption is called at the last block of AD encryption + l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc1_1; + + // Tag generation + g8A(s, T); + + m = m - mlen; + + reset_lfsr_gf56(CNT); + + *((unsigned int *)&s[0]) = *((unsigned int *)&T[0]); + *((unsigned int *)&s[4]) = *((unsigned int *)&T[4]); + *((unsigned int *)&s[8]) = *((unsigned int *)&T[8]); + *((unsigned int *)&s[12]) = *((unsigned int *)&T[12]); + + *clen = mlen + 16; + + if (mlen > 0) { + nonce_encryption(N,CNT,s,k,36,&l_skinny_ctrl); + while (mlen > 16) { + mlen = msg_encryption(&m,&c,N,CNT,s,k,36,mlen,&l_skinny_ctrl); + } + rho_ud16(m, c, s, mlen, 16); + c = c + mlen; + m = m + mlen; + } + + // Tag Concatenation + + // use byte access because of memory alignment. + // c is not always in word(4 byte) alignment. + + for (int i = 0; i < 16; i = i + 1) { + *(c + i) = T[i]; + } + + c = c - *clen; + + return 0; +} + +int crypto_aead_decrypt( +unsigned char *m,unsigned long long *mlen, +unsigned char *nsec, +const unsigned char *c,unsigned long long clen, +const unsigned char *ad,unsigned long long adlen, +const unsigned char *npub, +const unsigned char *k +) +{ + unsigned char s[16]; + unsigned char CNT[8]; // size 7 -> 8 for word access + unsigned char T[16]; + const unsigned char* N; + unsigned char w; + unsigned long long xlen; + const unsigned char* mauth; + + skinny_ctrl l_skinny_ctrl; + l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; + + (void)nsec; + mauth = m; + + N = npub; + + xlen = clen-16; + + reset_lfsr_gf56(CNT); + + for (int i = 0; i < 16; i++) { + T[i] = *(c + clen - 16 + i); + } + + *((unsigned int *)&s[0]) = *((unsigned int *)&T[0]); + *((unsigned int *)&s[4]) = *((unsigned int *)&T[4]); + *((unsigned int *)&s[8]) = *((unsigned int *)&T[8]); + *((unsigned int *)&s[12]) = *((unsigned int *)&T[12]); + + clen = clen - 16; + *mlen = clen; + + if (clen > 0) { + nonce_encryption(N,CNT,s,k,36,&l_skinny_ctrl); + while (clen > 16) { + clen = msg_decryption(&m,&c,N,CNT,s,k,36,clen,&l_skinny_ctrl); + } + irho(m, c, s, clen, 16); + c = c + clen; + m = m + clen; + } + + *((unsigned int *)&s[0]) = 0x00000000; + *((unsigned int *)&s[4]) = 0x00000000; + *((unsigned int *)&s[8]) = 0x00000000; + *((unsigned int *)&s[12]) = 0x00000000; + reset_lfsr_gf56(CNT); + + w = 48; + + if (adlen == 0) { + w = w ^ 2; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else if (adlen%(32) == 0) { + w = w ^ 8; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else if (adlen%(32) < 16) { + w = w ^ 2; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else if (adlen%(32) == 16) { + w = w ^ 0; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + else { + w = w ^ 10; + if (xlen == 0) { + w =w ^ 1; + } + else if (xlen%(32) == 0) { + w = w ^ 4; + } + else if (xlen%(32) < 16) { + w = w ^ 1; + } + else if (xlen%(32) == 16) { + w = w ^ 0; + } + else { + w = w ^ 5; + } + } + + if (adlen == 0) { // AD is an empty string + lfsr_gf56(CNT); + } + else while (adlen > 0) { + adlen = ad_encryption(&ad,s,k,adlen,CNT,40,&l_skinny_ctrl); + } + + if ((w & 8) == 0) { + xlen = ad2msg_encryption (&mauth,CNT,s,k,44,xlen,&l_skinny_ctrl); + } + else if (clen == 0) { + lfsr_gf56(CNT); + } + while (xlen > 0) { + xlen = ad_encryption(&mauth,s,k,xlen,CNT,44,&l_skinny_ctrl); + } + nonce_encryption(N,CNT,s,k,w,&l_skinny_ctrl); + + // Tag generation + g8A_for_Tag_Generation(s, T); + for (int i = 0; i < 16; i++) { + if (T[i] != (*(c+i))) { + return -1; + } + } + + return 0; +} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/genkat_aead.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/genkat_aead.c new file mode 100644 index 0000000..21f840f --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/genkat_aead.c @@ -0,0 +1,161 @@ +// +// NIST-developed software is provided by NIST as a public service. +// You may use, copy and distribute copies of the software in any medium, +// provided that you keep intact this entire notice. You may improve, +// modify and create derivative works of the software or any portion of +// the software, and you may copy and distribute such modifications or +// works. Modified works should carry a notice stating that you changed +// the software and should note the date and nature of any such change. +// Please explicitly acknowledge the National Institute of Standards and +// Technology as the source of the software. +// +// NIST-developed software is expressly provided "AS IS." NIST MAKES NO +// WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION +// OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST +// NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE +// UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST +// DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE +// OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, +// RELIABILITY, OR USEFULNESS OF THE SOFTWARE. +// +// You are solely responsible for determining the appropriateness of using and +// distributing the software and you assume all risks associated with its use, +// including but not limited to the risks and costs of program errors, compliance +// with applicable laws, damage to or loss of data, programs or equipment, and +// the unavailability or interruption of operation. This software is not intended +// to be used in any situation where a failure could cause risk of injury or +// damage to property. The software developed by NIST employees is not subject to +// copyright protection within the United States. +// + +// disable deprecation for sprintf and fopen +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS +#endif + +#include +#include + +#include "crypto_aead.h" +#include "api.h" + +#define KAT_SUCCESS 0 +#define KAT_FILE_OPEN_ERROR -1 +#define KAT_DATA_ERROR -3 +#define KAT_CRYPTO_FAILURE -4 + +#define MAX_FILE_NAME 256 +#define MAX_MESSAGE_LENGTH 32 +#define MAX_ASSOCIATED_DATA_LENGTH 32 + +void init_buffer(unsigned char *buffer, unsigned long long numbytes); + +void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length); + +int generate_test_vectors(); + +int main() +{ + int ret = generate_test_vectors(); + + if (ret != KAT_SUCCESS) { + fprintf(stderr, "test vector generation failed with code %d\n", ret); + } + + return ret; +} + +int generate_test_vectors() +{ + FILE *fp; + char fileName[MAX_FILE_NAME]; + unsigned char key[CRYPTO_KEYBYTES]; + unsigned char nonce[CRYPTO_NPUBBYTES]; + unsigned char msg[MAX_MESSAGE_LENGTH]; + unsigned char msg2[MAX_MESSAGE_LENGTH]; + unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH]; + unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES]; + unsigned long long clen, mlen2; + int count = 1; + int func_ret, ret_val = KAT_SUCCESS; + + init_buffer(key, sizeof(key)); + init_buffer(nonce, sizeof(nonce)); + init_buffer(msg, sizeof(msg)); + init_buffer(ad, sizeof(ad)); + + sprintf(fileName, "LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8)); + + if ((fp = fopen(fileName, "w")) == NULL) { + fprintf(stderr, "Couldn't open <%s> for write\n", fileName); + return KAT_FILE_OPEN_ERROR; + } + + for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) { + for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) { + + printf("%0d\n", (int)clen); + + fprintf(fp, "Count = %d\n", count++); + printf("Count = %d\n", count - 1); + + fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES); + + fprint_bstr(fp, "Nonce = ", nonce, CRYPTO_NPUBBYTES); + + fprint_bstr(fp, "PT = ", msg, mlen); + + fprint_bstr(fp, "AD = ", ad, adlen); + + if ((func_ret = crypto_aead_encrypt(ct, &clen, msg, mlen, ad, adlen, NULL, nonce, key)) != 0) { + fprintf(fp, "crypto_aead_encrypt returned <%d>\n", func_ret); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + + fprint_bstr(fp, "CT = ", ct, clen); + + fprintf(fp, "\n"); + + if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) { + fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + + if (mlen != mlen2) { + fprintf(fp, "crypto_aead_decrypt returned bad 'mlen': Got <%llu>, expected <%llu>\n", mlen2, mlen); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + + if (memcmp(msg, msg2, mlen)) { + fprintf(fp, "crypto_aead_decrypt did not recover the plaintext\n"); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + } + } + + fclose(fp); + + return ret_val; +} + + +void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length) +{ + fprintf(fp, "%s", label); + + for (unsigned long long i = 0; i < length; i++) + fprintf(fp, "%02X", data[i]); + + fprintf(fp, "\n"); +} + +void init_buffer(unsigned char *buffer, unsigned long long numbytes) +{ + for (unsigned long long i = 0; i < numbytes; i++) + buffer[i] = (unsigned char)i; +} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny.h b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny.h new file mode 100644 index 0000000..6392b0f --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny.h @@ -0,0 +1,8 @@ +typedef struct ___skinny_ctrl { + unsigned char roundKeys[960]; // number of round : 56 + void (*func_skinny_128_384_enc)(unsigned char*, struct ___skinny_ctrl*, unsigned char* CNT, unsigned char* T, const unsigned char* K); +} skinny_ctrl; + +extern void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); +extern void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); +extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule2.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule2.c new file mode 100644 index 0000000..58006f2 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule2.c @@ -0,0 +1,3027 @@ +/****************************************************************************** + * Copyright (c) 2020, NEC Corporation. + * + * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. + * + *****************************************************************************/ + +/* + * SKINNY-128-384 + * + * load * AC(c0 c1) ^ TK3 + * calc AC(c0 c1) ^ TK2 -> store + * ART(TK2) + * + * number of rounds : 56 + */ + +__attribute__((aligned(4))) +void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) +{ + // r0 : points to roundKeys(& masterKey) + // r1-r4 : key state + // r5-r6 : temp use + // r7 : constant(0xfefefefe) + // r8 : constant(0x01010101) + // r9 : temp use + // r10 : temp use + asm volatile( + "stmdb sp!, {r4-r10} \n\t" + "ldr.w r1, [r0,#16] \n\t" // load master key + "ldr.w r2, [r0,#20] \n\t" // load master key + "ldr.w r3, [r0,#24] \n\t" // load master key + "ldr.w r4, [r0,#28] \n\t" // load master key + "mov.w r7, #0xfefefefe \n\t" + "mov.w r8, #0x01010101 \n\t" + + // round 1 + + "ldr.w r9, [r0,#512] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#516] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#64] \n\t" + "str.w r10, [r0,#68] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 2 + + "ldr.w r9, [r0,#520] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#524] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#72] \n\t" + "str.w r10, [r0,#76] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 3 + + "ldr.w r9, [r0,#528] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#532] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#80] \n\t" + "str.w r10, [r0,#84] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 4 + + "ldr.w r9, [r0,#536] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#540] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#88] \n\t" + "str.w r10, [r0,#92] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 5 + + "ldr.w r9, [r0,#544] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#548] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#96] \n\t" + "str.w r10, [r0,#100] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 6 + + "ldr.w r9, [r0,#552] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#556] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#104] \n\t" + "str.w r10, [r0,#108] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 7 + + "ldr.w r9, [r0,#560] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#564] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#112] \n\t" + "str.w r10, [r0,#116] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 8 + + "ldr.w r9, [r0,#568] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#572] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#120] \n\t" + "str.w r10, [r0,#124] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 9 + + "ldr.w r9, [r0,#576] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#580] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#128] \n\t" + "str.w r10, [r0,#132] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 10 + + "ldr.w r9, [r0,#584] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#588] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#136] \n\t" + "str.w r10, [r0,#140] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 11 + + "ldr.w r9, [r0,#592] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#596] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#144] \n\t" + "str.w r10, [r0,#148] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 12 + + "ldr.w r9, [r0,#600] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#604] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#152] \n\t" + "str.w r10, [r0,#156] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 13 + + "ldr.w r9, [r0,#608] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#612] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#160] \n\t" + "str.w r10, [r0,#164] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 14 + + "ldr.w r9, [r0,#616] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#620] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#168] \n\t" + "str.w r10, [r0,#172] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 15 + + "ldr.w r9, [r0,#624] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#628] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#176] \n\t" + "str.w r10, [r0,#180] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 16 + + "ldr.w r9, [r0,#632] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#636] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#184] \n\t" + "str.w r10, [r0,#188] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 17 + + "ldr.w r9, [r0,#640] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#644] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#192] \n\t" + "str.w r10, [r0,#196] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 18 + + "ldr.w r9, [r0,#648] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#652] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#200] \n\t" + "str.w r10, [r0,#204] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 19 + + "ldr.w r9, [r0,#656] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#660] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#208] \n\t" + "str.w r10, [r0,#212] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 20 + + "ldr.w r9, [r0,#664] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#668] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#216] \n\t" + "str.w r10, [r0,#220] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 21 + + "ldr.w r9, [r0,#672] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#676] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#224] \n\t" + "str.w r10, [r0,#228] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 22 + + "ldr.w r9, [r0,#680] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#684] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#232] \n\t" + "str.w r10, [r0,#236] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 23 + + "ldr.w r9, [r0,#688] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#692] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#240] \n\t" + "str.w r10, [r0,#244] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 24 + + "ldr.w r9, [r0,#696] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#700] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#248] \n\t" + "str.w r10, [r0,#252] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 25 + + "ldr.w r9, [r0,#704] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#708] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#256] \n\t" + "str.w r10, [r0,#260] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 26 + + "ldr.w r9, [r0,#712] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#716] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#264] \n\t" + "str.w r10, [r0,#268] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 27 + + "ldr.w r9, [r0,#720] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#724] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#272] \n\t" + "str.w r10, [r0,#276] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 28 + + "ldr.w r9, [r0,#728] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#732] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#280] \n\t" + "str.w r10, [r0,#284] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 29 + + "ldr.w r9, [r0,#736] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#740] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#288] \n\t" + "str.w r10, [r0,#292] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 30 + + "ldr.w r9, [r0,#744] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#748] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#296] \n\t" + "str.w r10, [r0,#300] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 31 + + "ldr.w r9, [r0,#752] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#756] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#304] \n\t" + "str.w r10, [r0,#308] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 32 + + "ldr.w r9, [r0,#760] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#764] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#312] \n\t" + "str.w r10, [r0,#316] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 33 + + "ldr.w r9, [r0,#768] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#772] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#320] \n\t" + "str.w r10, [r0,#324] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 34 + + "ldr.w r9, [r0,#776] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#780] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#328] \n\t" + "str.w r10, [r0,#332] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 35 + + "ldr.w r9, [r0,#784] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#788] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#336] \n\t" + "str.w r10, [r0,#340] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 36 + + "ldr.w r9, [r0,#792] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#796] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#344] \n\t" + "str.w r10, [r0,#348] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 37 + + "ldr.w r9, [r0,#800] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#804] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#352] \n\t" + "str.w r10, [r0,#356] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 38 + + "ldr.w r9, [r0,#808] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#812] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#360] \n\t" + "str.w r10, [r0,#364] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 39 + + "ldr.w r9, [r0,#816] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#820] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#368] \n\t" + "str.w r10, [r0,#372] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 40 + + "ldr.w r9, [r0,#824] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#828] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#376] \n\t" + "str.w r10, [r0,#380] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 41 + + "ldr.w r9, [r0,#832] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#836] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#384] \n\t" + "str.w r10, [r0,#388] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 42 + + "ldr.w r9, [r0,#840] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#844] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#392] \n\t" + "str.w r10, [r0,#396] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 43 + + "ldr.w r9, [r0,#848] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#852] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#400] \n\t" + "str.w r10, [r0,#404] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 44 + + "ldr.w r9, [r0,#856] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#860] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#408] \n\t" + "str.w r10, [r0,#412] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 45 + + "ldr.w r9, [r0,#864] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#868] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#416] \n\t" + "str.w r10, [r0,#420] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 46 + + "ldr.w r9, [r0,#872] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#876] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#424] \n\t" + "str.w r10, [r0,#428] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 47 + + "ldr.w r9, [r0,#880] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#884] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#432] \n\t" + "str.w r10, [r0,#436] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 48 + + "ldr.w r9, [r0,#888] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#892] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#440] \n\t" + "str.w r10, [r0,#444] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 49 + + "ldr.w r9, [r0,#896] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#900] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#448] \n\t" + "str.w r10, [r0,#452] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 50 + + "ldr.w r9, [r0,#904] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#908] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#456] \n\t" + "str.w r10, [r0,#460] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 51 + + "ldr.w r9, [r0,#912] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#916] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#464] \n\t" + "str.w r10, [r0,#468] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 52 + + "ldr.w r9, [r0,#920] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#924] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#472] \n\t" + "str.w r10, [r0,#476] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 53 + + "ldr.w r9, [r0,#928] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#932] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#480] \n\t" + "str.w r10, [r0,#484] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 54 + + "ldr.w r9, [r0,#936] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#940] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#488] \n\t" + "str.w r10, [r0,#492] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 55 + + "ldr.w r9, [r0,#944] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#948] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#496] \n\t" + "str.w r10, [r0,#500] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 56 + + "ldr.w r9, [r0,#952] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#956] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#504] \n\t" + "str.w r10, [r0,#508] \n\t" + + // permutation + + // not need to calculate (not used) + + "ldmia.w sp!, {r4-r10} \n\t" + : + : [roundKeys] "r" (roundKeys) + : "cc"); +} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule3.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule3.c new file mode 100644 index 0000000..81c4406 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_key_schedule3.c @@ -0,0 +1,2898 @@ +/****************************************************************************** + * Copyright (c) 2020, NEC Corporation. + * + * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. + * + *****************************************************************************/ + +/* + * SKINNY-128-384 + * + * AC(c0 c1) ^ TK3 -> store + * ART(TK3) + * + * number of rounds : 56 + */ + +__attribute__((aligned(4))) +void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) +{ + // r0 : points to roundKeys(& masterKey) + // r1 : points to RC + // r2-r5 : key state + // r6-r7 : temp use + // r8 : constant(0x7f7f7f7f) + // r9 : constant(0x80808080) + asm volatile( + "stmdb sp!, {r4-r9} \n\t" + "ldr.w r2, [r0,#32] \n\t" // load master key + "ldr.w r3, [r0,#36] \n\t" // load master key + "ldr.w r4, [r0,#40] \n\t" // load master key + "ldr.w r5, [r0,#44] \n\t" // load master key + "mov.w r8, #0x7f7f7f7f \n\t" + "mov.w r9, #0x80808080 \n\t" + + // round 1 + + // AC(c0 c1) + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#512] \n\t" + "str.w r3, [r0,#516] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 2 + + // AC(c0 c1) + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#520] \n\t" + "str.w r3, [r0,#524] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 3 + + // AC(c0 c1) + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#528] \n\t" + "str.w r3, [r0,#532] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 4 + + // AC(c0 c1) + "eor.w r6, r2, #0xf \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#536] \n\t" + "str.w r3, [r0,#540] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 5 + + // AC(c0 c1) + "eor.w r6, r2, #0xf \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#544] \n\t" + "str.w r7, [r0,#548] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 6 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#552] \n\t" + "str.w r7, [r0,#556] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 7 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc + + + // round key store + "str.w r6, [r0,#560] \n\t" + "str.w r7, [r0,#564] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 8 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#568] \n\t" + "str.w r7, [r0,#572] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 9 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#576] \n\t" + "str.w r7, [r0,#580] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 10 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#584] \n\t" + "str.w r7, [r0,#588] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 11 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#592] \n\t" + "str.w r7, [r0,#596] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 12 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#600] \n\t" + "str.w r7, [r0,#604] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 13 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#608] \n\t" + "str.w r7, [r0,#612] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 14 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#616] \n\t" + "str.w r7, [r0,#620] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 15 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#624] \n\t" + "str.w r7, [r0,#628] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 16 + + // AC(c0 c1) + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#632] \n\t" + "str.w r3, [r0,#636] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 17 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#640] \n\t" + "str.w r7, [r0,#644] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 18 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#648] \n\t" + "str.w r7, [r0,#652] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 19 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#656] \n\t" + "str.w r7, [r0,#660] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 20 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#664] \n\t" + "str.w r7, [r0,#668] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 21 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#672] \n\t" + "str.w r7, [r0,#676] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 22 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#680] \n\t" + "str.w r7, [r0,#684] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 23 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#688] \n\t" + "str.w r7, [r0,#692] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 24 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x0 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#696] \n\t" + "str.w r7, [r0,#700] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 25 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#704] \n\t" + "str.w r7, [r0,#708] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 26 + + // AC(c0 c1) + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#712] \n\t" + "str.w r3, [r0,#716] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 27 + + // AC(c0 c1) + "eor.w r6, r2, #0x5 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#720] \n\t" + "str.w r3, [r0,#724] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 28 + + // AC(c0 c1) + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#728] \n\t" + "str.w r3, [r0,#732] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 29 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#736] \n\t" + "str.w r7, [r0,#740] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 30 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#744] \n\t" + "str.w r7, [r0,#748] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 31 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#752] \n\t" + "str.w r7, [r0,#756] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 32 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#760] \n\t" + "str.w r7, [r0,#764] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 33 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#768] \n\t" + "str.w r7, [r0,#772] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 34 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#776] \n\t" + "str.w r7, [r0,#780] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 35 + + // AC(c0 c1) + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#784] \n\t" + "str.w r3, [r0,#788] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 36 + + // AC(c0 c1) + "eor.w r6, r2, #0xd \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#792] \n\t" + "str.w r3, [r0,#796] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 37 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#800] \n\t" + "str.w r7, [r0,#804] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 38 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#808] \n\t" + "str.w r7, [r0,#812] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 39 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#816] \n\t" + "str.w r7, [r0,#820] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 40 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#824] \n\t" + "str.w r7, [r0,#828] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 41 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#832] \n\t" + "str.w r7, [r0,#836] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 42 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#840] \n\t" + "str.w r7, [r0,#844] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 43 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#848] \n\t" + "str.w r7, [r0,#852] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 44 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#856] \n\t" + "str.w r7, [r0,#860] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 45 + + // AC(c0 c1) + "eor.w r6, r2, #0x8 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#864] \n\t" + "str.w r3, [r0,#868] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 46 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#872] \n\t" + "str.w r7, [r0,#876] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 47 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#880] \n\t" + "str.w r7, [r0,#884] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 48 + + // AC(c0 c1) + "eor.w r6, r2, #0x4 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#888] \n\t" + "str.w r3, [r0,#892] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 49 + + // AC(c0 c1) + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#896] \n\t" + "str.w r3, [r0,#900] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 50 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#904] \n\t" + "str.w r7, [r0,#908] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 51 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#912] \n\t" + "str.w r7, [r0,#916] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 52 + + // AC(c0 c1) + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#920] \n\t" + "str.w r3, [r0,#924] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 53 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#928] \n\t" + "str.w r7, [r0,#932] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 54 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#936] \n\t" + "str.w r7, [r0,#940] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 55 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc + // round key store + "str.w r6, [r0,#944] \n\t" + "str.w r7, [r0,#948] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 56 + + // AC(c0 c1) + "eor.w r6, r2, #0xa \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#952] \n\t" + "str.w r3, [r0,#956] \n\t" + + // permutation + + // not need to calculate (not used) + + "ldmia.w sp!, {r4-r9} \n\t" + : + : [roundKeys] "r" (roundKeys), [pRC] "r" (pRC) + : "cc"); +} diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_main.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_main.c new file mode 100644 index 0000000..217b8a6 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc_NEC/skinny_main.c @@ -0,0 +1,4687 @@ +/****************************************************************************** + * Copyright (c) 2020, NEC Corporation. + * + * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. + * + *****************************************************************************/ + +/* + * SKINNY-128-384 + * + * ART(TK1) -> store + * load AC(c0 c1) ^ TK3 ^ TK2 + * load TK1 + * calc AC(c0 c1) ^ TK3 ^ TK2 ^ TK1 -> use at (AC->ART) + * SC->SR->(AC->ART)->MC + * + * number of rounds : 56 + */ + +#include "skinny.h" + +/* + * S-BOX + */ +unsigned char SBOX[512] += { + // Original + 0x65, 0x4c, 0x6a, 0x42, 0x4b, 0x63, 0x43, 0x6b, 0x55, 0x75, 0x5a, 0x7a, 0x53, 0x73, 0x5b, 0x7b, + 0x35, 0x8c, 0x3a, 0x81, 0x89, 0x33, 0x80, 0x3b, 0x95, 0x25, 0x98, 0x2a, 0x90, 0x23, 0x99, 0x2b, + 0xe5, 0xcc, 0xe8, 0xc1, 0xc9, 0xe0, 0xc0, 0xe9, 0xd5, 0xf5, 0xd8, 0xf8, 0xd0, 0xf0, 0xd9, 0xf9, + 0xa5, 0x1c, 0xa8, 0x12, 0x1b, 0xa0, 0x13, 0xa9, 0x05, 0xb5, 0x0a, 0xb8, 0x03, 0xb0, 0x0b, 0xb9, + 0x32, 0x88, 0x3c, 0x85, 0x8d, 0x34, 0x84, 0x3d, 0x91, 0x22, 0x9c, 0x2c, 0x94, 0x24, 0x9d, 0x2d, + 0x62, 0x4a, 0x6c, 0x45, 0x4d, 0x64, 0x44, 0x6d, 0x52, 0x72, 0x5c, 0x7c, 0x54, 0x74, 0x5d, 0x7d, + 0xa1, 0x1a, 0xac, 0x15, 0x1d, 0xa4, 0x14, 0xad, 0x02, 0xb1, 0x0c, 0xbc, 0x04, 0xb4, 0x0d, 0xbd, + 0xe1, 0xc8, 0xec, 0xc5, 0xcd, 0xe4, 0xc4, 0xed, 0xd1, 0xf1, 0xdc, 0xfc, 0xd4, 0xf4, 0xdd, 0xfd, + 0x36, 0x8e, 0x38, 0x82, 0x8b, 0x30, 0x83, 0x39, 0x96, 0x26, 0x9a, 0x28, 0x93, 0x20, 0x9b, 0x29, + 0x66, 0x4e, 0x68, 0x41, 0x49, 0x60, 0x40, 0x69, 0x56, 0x76, 0x58, 0x78, 0x50, 0x70, 0x59, 0x79, + 0xa6, 0x1e, 0xaa, 0x11, 0x19, 0xa3, 0x10, 0xab, 0x06, 0xb6, 0x08, 0xba, 0x00, 0xb3, 0x09, 0xbb, + 0xe6, 0xce, 0xea, 0xc2, 0xcb, 0xe3, 0xc3, 0xeb, 0xd6, 0xf6, 0xda, 0xfa, 0xd3, 0xf3, 0xdb, 0xfb, + 0x31, 0x8a, 0x3e, 0x86, 0x8f, 0x37, 0x87, 0x3f, 0x92, 0x21, 0x9e, 0x2e, 0x97, 0x27, 0x9f, 0x2f, + 0x61, 0x48, 0x6e, 0x46, 0x4f, 0x67, 0x47, 0x6f, 0x51, 0x71, 0x5e, 0x7e, 0x57, 0x77, 0x5f, 0x7f, + 0xa2, 0x18, 0xae, 0x16, 0x1f, 0xa7, 0x17, 0xaf, 0x01, 0xb2, 0x0e, 0xbe, 0x07, 0xb7, 0x0f, 0xbf, + 0xe2, 0xca, 0xee, 0xc6, 0xcf, 0xe7, 0xc7, 0xef, 0xd2, 0xf2, 0xde, 0xfe, 0xd7, 0xf7, 0xdf, 0xff, + + // Original ^ c2(0x02) + 0x67, 0x4e, 0x68, 0x40, 0x49, 0x61, 0x41, 0x69, 0x57, 0x77, 0x58, 0x78, 0x51, 0x71, 0x59, 0x79, + 0x37, 0x8e, 0x38, 0x83, 0x8b, 0x31, 0x82, 0x39, 0x97, 0x27, 0x9a, 0x28, 0x92, 0x21, 0x9b, 0x29, + 0xe7, 0xce, 0xea, 0xc3, 0xcb, 0xe2, 0xc2, 0xeb, 0xd7, 0xf7, 0xda, 0xfa, 0xd2, 0xf2, 0xdb, 0xfb, + 0xa7, 0x1e, 0xaa, 0x10, 0x19, 0xa2, 0x11, 0xab, 0x07, 0xb7, 0x08, 0xba, 0x01, 0xb2, 0x09, 0xbb, + 0x30, 0x8a, 0x3e, 0x87, 0x8f, 0x36, 0x86, 0x3f, 0x93, 0x20, 0x9e, 0x2e, 0x96, 0x26, 0x9f, 0x2f, + 0x60, 0x48, 0x6e, 0x47, 0x4f, 0x66, 0x46, 0x6f, 0x50, 0x70, 0x5e, 0x7e, 0x56, 0x76, 0x5f, 0x7f, + 0xa3, 0x18, 0xae, 0x17, 0x1f, 0xa6, 0x16, 0xaf, 0x00, 0xb3, 0x0e, 0xbe, 0x06, 0xb6, 0x0f, 0xbf, + 0xe3, 0xca, 0xee, 0xc7, 0xcf, 0xe6, 0xc6, 0xef, 0xd3, 0xf3, 0xde, 0xfe, 0xd6, 0xf6, 0xdf, 0xff, + 0x34, 0x8c, 0x3a, 0x80, 0x89, 0x32, 0x81, 0x3b, 0x94, 0x24, 0x98, 0x2a, 0x91, 0x22, 0x99, 0x2b, + 0x64, 0x4c, 0x6a, 0x43, 0x4b, 0x62, 0x42, 0x6b, 0x54, 0x74, 0x5a, 0x7a, 0x52, 0x72, 0x5b, 0x7b, + 0xa4, 0x1c, 0xa8, 0x13, 0x1b, 0xa1, 0x12, 0xa9, 0x04, 0xb4, 0x0a, 0xb8, 0x02, 0xb1, 0x0b, 0xb9, + 0xe4, 0xcc, 0xe8, 0xc0, 0xc9, 0xe1, 0xc1, 0xe9, 0xd4, 0xf4, 0xd8, 0xf8, 0xd1, 0xf1, 0xd9, 0xf9, + 0x33, 0x88, 0x3c, 0x84, 0x8d, 0x35, 0x85, 0x3d, 0x90, 0x23, 0x9c, 0x2c, 0x95, 0x25, 0x9d, 0x2d, + 0x63, 0x4a, 0x6c, 0x44, 0x4d, 0x65, 0x45, 0x6d, 0x53, 0x73, 0x5c, 0x7c, 0x55, 0x75, 0x5d, 0x7d, + 0xa0, 0x1a, 0xac, 0x14, 0x1d, 0xa5, 0x15, 0xad, 0x03, 0xb0, 0x0c, 0xbc, 0x05, 0xb5, 0x0d, 0xbd, + 0xe0, 0xc8, 0xec, 0xc4, 0xcd, 0xe5, 0xc5, 0xed, 0xd0, 0xf0, 0xdc, 0xfc, 0xd5, 0xf5, 0xdd, 0xfd, +}; + +/* + * Round Constants + */ +unsigned char RC[56] += { + 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, + 0x34, 0x29, 0x12, 0x24, 0x08, 0x11, 0x22, 0x04, + 0x09, 0x13, 0x26, 0x0c, 0x19, 0x32, 0x25, 0x0a,}; + +extern void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) __attribute__((noinline)); +extern void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) __attribute__((noinline)); +extern void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) __attribute__((noinline)); + +void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) +{ + *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); + *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); + *((unsigned int *)&pskinny_ctrl->roundKeys[32]) = *((unsigned int *)&K[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[36]) = *((unsigned int *)&K[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[40]) = *((unsigned int *)&K[8]); + *((unsigned int *)&pskinny_ctrl->roundKeys[44]) = *((unsigned int *)&K[12]); + + RunEncryptionKeyScheduleTK3(pskinny_ctrl->roundKeys, RC); + RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); + Encrypt(input, pskinny_ctrl->roundKeys, SBOX); + + pskinny_ctrl->func_skinny_128_384_enc = skinny_128_384_enc12_12; +} + +void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) +{ + (void)K; + + *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); + *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); + + RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); + Encrypt(input, pskinny_ctrl->roundKeys, SBOX); +} + +extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) +{ + (void)T; + (void)K; + + *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); + + Encrypt(input, pskinny_ctrl->roundKeys, SBOX); +} + +__attribute__((aligned(4))) +void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) +{ + // r0 : ponits to plaintext + // r1 : points to roundKeys(& masterKey) + // r2 : points to SBOX + // r3-r6 : cipher state + // r7-r12: temp use + // r14 : temp use + asm volatile( + "stmdb sp!, {r4-r12,r14} \n\t" + "stmdb.w sp!, {r0} \n\t" // push store pointer + +// ART(TK1) + + "ldm.w r1, {r3-r4} \n\t" // load master key + + // round 1-2 + +// // round key store(do not need) +// "str.w r3, [r1,#0] \n\t" +// "str.w r4, [r1,#4] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 3-4 + + // round key store + "str.w r5, [r1,#8] \n\t" + "str.w r6, [r1,#12] \n\t" + + // premutation + + // r3 (--- --- --- ---) k5 k0 k7 k1 + // r4 (--- --- --- ---) k3 k4 k6 k2 + // r5 ( k3 k2 k1 k0) -----> --- --- --- --- + // r6 ( k7 k6 k5 k4) --- --- --- --- +#ifdef STM32F4 // for Cortex-M4 + "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) + "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) + "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) + "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) + "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) + "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) + "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) + "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) + "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) + "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) + "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) + "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) +#endif + + // round 5-6 + + // round key store + "str.w r3, [r1,#16] \n\t" + "str.w r4, [r1,#20] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 7-8 + + // round key store + "str.w r5, [r1,#24] \n\t" + "str.w r6, [r1,#28] \n\t" + + // premutation + + // r3 (--- --- --- ---) k5 k0 k7 k1 + // r4 (--- --- --- ---) k3 k4 k6 k2 + // r5 ( k3 k2 k1 k0) -----> --- --- --- --- + // r6 ( k7 k6 k5 k4) --- --- --- --- +#ifdef STM32F4 // for Cortex-M4 + "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) + "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) + "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) + "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) + "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) + "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) + "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) + "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) + "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) + "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) + "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) + "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) +#endif + + // round 9-10 + + // round key store + "str.w r3, [r1,#32] \n\t" + "str.w r4, [r1,#36] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 11-12 + + // round key store + "str.w r5, [r1,#40] \n\t" + "str.w r6, [r1,#44] \n\t" + + // premutation + + // r3 (--- --- --- ---) k5 k0 k7 k1 + // r4 (--- --- --- ---) k3 k4 k6 k2 + // r5 ( k3 k2 k1 k0) -----> --- --- --- --- + // r6 ( k7 k6 k5 k4) --- --- --- --- +#ifdef STM32F4 // for Cortex-M4 + "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) + "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) + "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) + "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) + "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) + "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) + "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) + "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) + "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) + "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) + "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) + "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) +#endif + + // round 13-14 + + // round key store + "str.w r3, [r1,#48] \n\t" + "str.w r4, [r1,#52] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 15-16 + + // round key store + "str.w r5, [r1,#56] \n\t" + "str.w r6, [r1,#60] \n\t" + + // premutation + + // not need to calculate (not used) + +// SC->(AC->ART)->SR->MC + + "add.w r14, r2, #256 \n\t" // point to SBOX ^ c2(0x02) + + "ldm.w r0, {r3-r6} \n\t" // load plaintext + // r0 now free to overwrite + + // round 1 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#64] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#68] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 2 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#72] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#76] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 3 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#80] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#84] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 4 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#88] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#92] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 5 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#96] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#100] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 6 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#104] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#108] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 7 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#112] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#116] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 8 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#120] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#124] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 9 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#32] \n\t" // load TK1 + "ldr.w r10, [r1,#36] \n\t" // load TK1 + "ldr.w r11, [r1,#128] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#132] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 10 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#136] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#140] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 11 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#40] \n\t" // load TK1 + "ldr.w r10, [r1,#44] \n\t" // load TK1 + "ldr.w r11, [r1,#144] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#148] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 12 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#152] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#156] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 13 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#48] \n\t" // load TK1 + "ldr.w r10, [r1,#52] \n\t" // load TK1 + "ldr.w r11, [r1,#160] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#164] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 14 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#168] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#172] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 15 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#56] \n\t" // load TK1 + "ldr.w r10, [r1,#60] \n\t" // load TK1 + "ldr.w r11, [r1,#176] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#180] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 16 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#184] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#188] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 17 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#192] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#196] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 18 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#200] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#204] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 19 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#208] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#212] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 20 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#216] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#220] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 21 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#224] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#228] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 22 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#232] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#236] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 23 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#240] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#244] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 24 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#248] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#252] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 25 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#32] \n\t" // load TK1 + "ldr.w r10, [r1,#36] \n\t" // load TK1 + "ldr.w r11, [r1,#256] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#260] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 26 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#264] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#268] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 27 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#40] \n\t" // load TK1 + "ldr.w r10, [r1,#44] \n\t" // load TK1 + "ldr.w r11, [r1,#272] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#276] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 28 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#280] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#284] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 29 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#48] \n\t" // load TK1 + "ldr.w r10, [r1,#52] \n\t" // load TK1 + "ldr.w r11, [r1,#288] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#292] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 30 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#296] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#300] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 31 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#56] \n\t" // load TK1 + "ldr.w r10, [r1,#60] \n\t" // load TK1 + "ldr.w r11, [r1,#304] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#308] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 32 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#312] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#316] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 33 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#320] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#324] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 34 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#328] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#332] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 35 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#336] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#340] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 36 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#344] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#348] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 37 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#352] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#356] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 38 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#360] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#364] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 39 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#368] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#372] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 40 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#376] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#380] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + + // round 41 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#32] \n\t" // load TK1 + "ldr.w r10, [r1,#36] \n\t" // load TK1 + "ldr.w r11, [r1,#384] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#388] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 42 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#392] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#396] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 43 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#40] \n\t" // load TK1 + "ldr.w r10, [r1,#44] \n\t" // load TK1 + "ldr.w r11, [r1,#400] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#404] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 44 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#408] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#412] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 45 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#48] \n\t" // load TK1 + "ldr.w r10, [r1,#52] \n\t" // load TK1 + "ldr.w r11, [r1,#416] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#420] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 46 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#424] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#428] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 47 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#56] \n\t" // load TK1 + "ldr.w r10, [r1,#60] \n\t" // load TK1 + "ldr.w r11, [r1,#432] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#436] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 48 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#440] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#444] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 49 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#448] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#452] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 50 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#456] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#460] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 51 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#464] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#468] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 52 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#472] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#476] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 53 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#480] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#484] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 54 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#488] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#492] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 55 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#496] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#500] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 56 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#504] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#508] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + + "ldmia.w sp!, {r0} \n\t" // pop store pointer + // r0 reload + + "str.w r3, [r0,#0] \n\t" // store ciphertext + "str.w r4, [r0,#4] \n\t" // store ciphertext + "str.w r5, [r0,#8] \n\t" // store ciphertext + "str.w r6, [r0,#12] \n\t" // store ciphertext + + "ldmia.w sp!, {r4-r12,r14} \n\t" + : + : [block] "r" (block), [roundKeys] "r" (roundKeys), [pSBOX] "" (pSBOX) + : "cc"); +} + diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/LWC_AEAD_KAT_128_128.txt b/romulus/Implementations/crypto_aead/romulusn1+v12/LWC_AEAD_KAT_128_128.txt deleted file mode 100644 index 3a8b9c7..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/LWC_AEAD_KAT_128_128.txt +++ /dev/null @@ -1,7623 +0,0 @@ -Count = 1 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = -CT = 4F42AED219ECC79F4DAF3E3BAD52AEE7 - -Count = 2 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00 -CT = AB8FE298CF6A3261F1F6C89B2B5E3367 - -Count = 3 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001 -CT = 0AD6EE5DE5280CC51CBCAFBFCE5E99DF - -Count = 4 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102 -CT = 6CD9F20267266610D4F769EB602BFF17 - -Count = 5 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203 -CT = 19733DA1D8C16E0BD5F516A15BAA5908 - -Count = 6 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001020304 -CT = 3A6D0641C711CF5B941364035663C7E7 - -Count = 7 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405 -CT = B48A50D9E16DA2D0BCC784DB7C126536 - -Count = 8 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203040506 -CT = A3D9197875E4F92DA35A48B1E07483B7 - -Count = 9 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001020304050607 -CT = B96653DC95ED31D43A9E19DA42A71ABA - -Count = 10 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708 -CT = ACA17AF4073855420675302764B5DC89 - -Count = 11 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203040506070809 -CT = 7D79DF409392AA600A0D11CBFD906E80 - -Count = 12 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A -CT = 092E181F40BE039D2E3E487E7077E445 - -Count = 13 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B -CT = DC663A1D1901CE72BE4A7F3E4C3EB0BF - -Count = 14 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C -CT = B50DD4A972DB1D311AFC204E29515C9B - -Count = 15 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D -CT = 0F51E7B2AF267F0F22ABCD57F9A0D8C7 - -Count = 16 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E -CT = 39C467A055B702ABA9857E2C9A7DB716 - -Count = 17 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F -CT = 413D3F77845E976AC72596E765B26B6A - -Count = 18 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10 -CT = D17F367D07F02A0F93E1DE5385529556 - -Count = 19 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 5E8F2FC2BB627A819950B081BD9046A2 - -Count = 20 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 099377EB20CE32F6C2741C0271D420BF - -Count = 21 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 67EDE73262D0E89E8563F79B2C81183F - -Count = 22 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 0A02D202AC556A7C5D63BBCB48BD7C08 - -Count = 23 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 26767C17A6F2827F555B8D821B087776 - -Count = 24 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 2FC4C0CD30343AD78C94300201C02CCC - -Count = 25 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 65374F9820E14134A09BDD2736D35374 - -Count = 26 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = DD7653B181923EE9618FEE4167C4329F - -Count = 27 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = CF0F7BBBC999218F8965B0C95734F76A - -Count = 28 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = C4C21C764765BE3CD6AD1D4B8B7C3156 - -Count = 29 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E364473014F0B6E717B31D068FFEDE07 - -Count = 30 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = DC61BD30632AFA362E341B65243E10F0 - -Count = 31 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 64795075A3EFFD16C578234D83263384 - -Count = 32 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 7BAF89F08686EE2266C2A648795011A9 - -Count = 33 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 77B3BBEA06D2F03827E928080703A571 - -Count = 34 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = -CT = DED8F65782F8D7BB14448E05D7A80579C3 - -Count = 35 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00 -CT = 99A4A09B46BB14D231B8DB511AEFDBC594 - -Count = 36 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001 -CT = 51DC8ECEDEB19DB9FA94D6C99F78AC4068 - -Count = 37 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102 -CT = 255456D923B18D1E3584421C272E6B4309 - -Count = 38 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203 -CT = 2BCF40227C025F52E4B1172B1F2849C931 - -Count = 39 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001020304 -CT = CA82DBD55E79213355DC8F9FA9F3F4BD75 - -Count = 40 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405 -CT = 85168B36CD4D1609980897F74C8BDA0217 - -Count = 41 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203040506 -CT = 3714256F75518BE16DEBF9C2FFC6F50E9B - -Count = 42 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001020304050607 -CT = 06CB79EB83C7CD1F10FF9D2FA36DF223C3 - -Count = 43 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708 -CT = EE34A26BC739EEBEFC41236A6570099332 - -Count = 44 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203040506070809 -CT = 25928856FCBB01EF7D9464FFF8C011EE41 - -Count = 45 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A -CT = B08153BD9658521865618224DF9B00A4F9 - -Count = 46 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B -CT = 7322A59A9CB8441BC9AE0DFCF046B13D6A - -Count = 47 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C -CT = 411210A9F99F4A2CF09096B26FD20A98A2 - -Count = 48 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D -CT = 1A01FEBD3B88C4A0A2B9D1466F18080D48 - -Count = 49 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E -CT = 399D10DBDEFAB2060B9A8606AA261E30A3 - -Count = 50 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F -CT = 9585BE4E12DE3302AC345C29C3B064A1B6 - -Count = 51 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 306F8744B7099CA9920B6B23B79E37F0ED - -Count = 52 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86FB19886DA9F925904899E5C5A981FA73 - -Count = 53 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F62A63F16D2635F7B67F5D524824099C87 - -Count = 54 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F4D192B18070E79470941779C2B3CDA3A - -Count = 55 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89DA3E4D3117CC7B68BA512853062C8891 - -Count = 56 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 20C86CD1A407D256E2985EC8E3029D25AF - -Count = 57 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20EF479CD5969B852112131FE39173FE39 - -Count = 58 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4FBB11855F19F28CB0518C833B5D6FA5A0 - -Count = 59 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 602B9FAFF092C914879B197CCD4237A42F - -Count = 60 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5ECAB4A6B4297D72310919DDF5CAB3ABB3 - -Count = 61 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 002D6FC7E333F55FA538DB0660F3E223E0 - -Count = 62 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B299854F06DA4D94374F59CB2685743890 - -Count = 63 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D91696580EA52E25BB7DEAB904985AC075 - -Count = 64 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5FB3BEFC67B88F4540BB96993A5F77F578 - -Count = 65 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 04A69765DD560A4F45BFD450EA459A1F7A - -Count = 66 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A13C5650F4FBA3D21C87AAD5A68BC4944 - -Count = 67 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = -CT = DE2718ACE56400234A9661A0DCDCC9A2275E - -Count = 68 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00 -CT = 998DA8848EA10E49CB12604A9297BEBF607C - -Count = 69 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001 -CT = 51E3D7A2D1DE4AD1F3A711BF70AA98826B47 - -Count = 70 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102 -CT = 255E2A81D0470AEBC8F43AE4FFB75A94E36C - -Count = 71 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203 -CT = 2BB8C3732E76BB72D57288C087DC6B328EDC - -Count = 72 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001020304 -CT = CAB0EFA3D5A655759D15021239109914340B - -Count = 73 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405 -CT = 85FF0071C0D86B7D5B6F2C9F1BA59FF7CF98 - -Count = 74 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203040506 -CT = 3746A524326D49ABED3BBC21B13D8EF2E377 - -Count = 75 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001020304050607 -CT = 066DA57BDAFA88D99685FFF41A481178F8A3 - -Count = 76 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708 -CT = EE35AFEA01C42BA26EDB52265FF296862D1A - -Count = 77 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203040506070809 -CT = 252E02A72960148D822490371C9A77AE17CF - -Count = 78 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A -CT = B0C1CF61CE22A466AE4A306579614195500A - -Count = 79 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B -CT = 73F5FC6D7892EB5154DAC16F5C446DD0C1E5 - -Count = 80 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C -CT = 41AA335270650285F15BE31E376F23875011 - -Count = 81 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D -CT = 1A927483B0D97CC8F6F3CF3134450E583904 - -Count = 82 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9F75B9BCDA5685647869EE230BF06C9C0 - -Count = 83 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A96E3455040C3FDC77937A9B14E02728B5 - -Count = 84 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307855FB6E7162F75414F3A86F76B31AFABA - -Count = 85 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B31FA9A4B4429F89082B5D883418C6E443 - -Count = 86 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60A4CFA5CE8BBCB28612FF9F61F383775FA - -Count = 87 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48090FBC0D05D52E787D3C55E1C6F45F3C - -Count = 88 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BD80A5EAF691949F8E4D2094471CEDD000 - -Count = 89 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021BE7369C8B9E53A77861A72B1F853B7AF - -Count = 90 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F2AF4E332D5877E6DAB5487313EA9D0DDC - -Count = 91 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC8CF78800CA852FC0071F77F08BA14FE - -Count = 92 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034528631EC07F09B54330446B542715B20 - -Count = 93 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E4237D366CC45AE12C0677CEBD5063830CD - -Count = 94 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 000500EAA18D1587251DF97C15DCB2164157 - -Count = 95 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2D47351DBED4FC574BA3C7B73A530AE5A - -Count = 96 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C15C34940E4529FBAF37EA2D446C5FEF6 - -Count = 97 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F51C34C14159CB614BA969182F46B14C1E9 - -Count = 98 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDEC235A030E8D0C7B7F0058BDAC666B4 - -Count = 99 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B1583E92745CB460F1B552AD3107F7B3C - -Count = 100 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = -CT = DE27B34B578AE7EE9F6D724A58357E64084C57 - -Count = 101 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00 -CT = 998D77F4E8339261CFD518F2433A832C46F4FD - -Count = 102 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001 -CT = 51E3F21B221B4DD7AE0FC2EF25541E2707BDD1 - -Count = 103 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102 -CT = 255ED80EB7031E4936331A80819C97FBE82570 - -Count = 104 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203 -CT = 2BB84CC9AADDAC611381AAFADA998DCD067DB6 - -Count = 105 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001020304 -CT = CAB056EB1FCFD0FD907009155895BD3AF0A3D3 - -Count = 106 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405 -CT = 85FF408E3E8BFE90BAA972A4A7B299E120A2BF - -Count = 107 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203040506 -CT = 37466E557CE9973710C0511317DEDB74CB6770 - -Count = 108 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001020304050607 -CT = 066D38418CF06AE11DB70D0AA9B060EBB819D0 - -Count = 109 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708 -CT = EE35C5817A2C1C30C1EAAFF6F8AB22DA523C3E - -Count = 110 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203040506070809 -CT = 252EA9C1AD2621711B2077B262AD997DA80D08 - -Count = 111 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A -CT = B0C1791AD0CDBDFAFAB328867D8049F7C9614B - -Count = 112 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B -CT = 73F508EABCAFAAEC55D282A0680190A1FAC2C6 - -Count = 113 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C -CT = 41AAA967EC86257C42137E52D4CAC098D83DB5 - -Count = 114 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D -CT = 1A92684FF4DF91217387D8776D99B2B8E85640 - -Count = 115 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E -CT = 39D99070C11618D7E39491ABC21C9FDD7AE431 - -Count = 116 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC50CDA8D085A3C620C06996A4D4E7B594 - -Count = 117 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824298971AFD0B069135E2B6F15FBBF47D6 - -Count = 118 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B489242C429B0D3C25C0C469FD88601631 - -Count = 119 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADCDEBEE0E9463B31FC080C4C9E9FC1D249 - -Count = 120 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F4837C8515B917BE204D91C47E11C915E6F02 - -Count = 121 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA4D595282B7E492984987C124F64234F5 - -Count = 122 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C88A65F027427EA8E36E59F3D56097236A - -Count = 123 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20F985145EF788727B9B07850922CE6CB92 - -Count = 124 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6588C56B879455AD5B61B762C8F7C9987 - -Count = 125 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C8F15F5641F74B88FB116440A2FA7D1330 - -Count = 126 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427AD9761BD7C026E55924F578672BE20AD9 - -Count = 127 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3B98DCC1E9917593C26C6844CF5043FBD - -Count = 128 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A8D9F8B982EADA416B829A39F40A5BD391 - -Count = 129 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C095A5FBA84AEBAFB6E577A3CC101F4F59B - -Count = 130 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143AD7D8F561BE8178933DD0094B81002E8 - -Count = 131 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDB8B114BBFD7802CBC24626F14C1288CF0 - -Count = 132 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58C8A42D0A5593C303CDA102865BF90B0F - -Count = 133 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = -CT = DE27B3C150EC780A5DA9CABFCB61A149003EAEEC - -Count = 134 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00 -CT = 998D770169E944BC240A12EEAEAB23467D3A6816 - -Count = 135 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001 -CT = 51E3F265AB46992E8FDBFD423520FA2CFB0CAAE3 - -Count = 136 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102 -CT = 255ED81399E2709967472BE2DBB074EF92CE7995 - -Count = 137 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203 -CT = 2BB84CB9B5D2B0D7321FA329FC633B1289D6C6A5 - -Count = 138 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001020304 -CT = CAB056AA205A4B641B8EDB60351EA8AC668575B8 - -Count = 139 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405 -CT = 85FF40FC3858860D1CF3662E54D9BDD12B8A0C05 - -Count = 140 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203040506 -CT = 37466ECBE1AC0227375874D3719C070102ABFD1B - -Count = 141 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001020304050607 -CT = 066D386B903C627DDAB12854C79006B110C774E8 - -Count = 142 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708 -CT = EE35C5EC38EEB0D661D9292F44763596A058C59F - -Count = 143 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203040506070809 -CT = 252EA99E66968A3B6A5EBD42E2B5084CFCB81DA0 - -Count = 144 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A -CT = B0C179ACECD3EAF74BE30679DC43632D0DA6F232 - -Count = 145 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B -CT = 73F5083ACE00D369A117301A1B545430B22EA93A - -Count = 146 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C -CT = 41AAA973305ABFE091A02053CC1708CEF98A789A - -Count = 147 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D -CT = 1A926838548D1B78E650D9D0A28D632814327EEA - -Count = 148 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E -CT = 39D99068B050C98A346D42011271C6CADE6CFE81 - -Count = 149 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC01EA19FD75ECD954A077B86EE6A99AC87C - -Count = 150 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FC01557BFE8F63200FF30F896026A2E279 - -Count = 151 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DC1824C01D9282E4880EC2176A932A2790 - -Count = 152 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC64AEB5EE736F503EE6D3B5A7D997DE58B1 - -Count = 153 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B973FF11995609664FE89186F045A9D8D - -Count = 154 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA4070F09477098ADDC7ABC88B872960FDB3 - -Count = 155 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BD007510FD2868CB750A5FAC0A9C434A8 - -Count = 156 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1E268A18DB397F62A4586C7E304DC49AC - -Count = 157 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B93FF7F14E64AC2893910007D4AD532B1C - -Count = 158 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C8391E39A4D4D693D05838198CD041532237 - -Count = 159 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3AEC7446564F4E4DEF5AA9BA0512650669 - -Count = 160 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3734A21C8C6A8A86D5B85DAEBDC0BC24B7E - -Count = 161 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81DC9FFBF35CC2837801A51F22C7338346F - -Count = 162 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C092708C3531AC5037F91C626409425DE9780 - -Count = 163 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FAF5C4F8227D199EBD62B74FFEF79D3280 - -Count = 164 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAE433DA7A8DE03FE962CD0D32685081FEA - -Count = 165 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B5844B4EEE6B66291059B449BD9C478FE0124 - -Count = 166 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = -CT = DE27B3C1B49996E04DCCC8F5EFA7A7B17A5F6AD79E - -Count = 167 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00 -CT = 998D7701C1B3E03C233776521D172840D73E6A83EC - -Count = 168 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001 -CT = 51E3F26591EDE1B4D54E61944C5D246C3946BABC9A - -Count = 169 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102 -CT = 255ED813C64DDA5222B2A0B93B1F6F68A51550D573 - -Count = 170 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203 -CT = 2BB84CB90BAA1B92B3F56BE068C76FBB77EB4D61BA - -Count = 171 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001020304 -CT = CAB056AA880D228B27520A9387F6DA9F7BCA235E55 - -Count = 172 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405 -CT = 85FF40FCBF9B9A7ADD2037C37EC7314C72C2BE8288 - -Count = 173 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203040506 -CT = 37466ECBEFF5587CEFB451B781E0CC5097DC3D09E7 - -Count = 174 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001020304050607 -CT = 066D386BDC7A38ABE257D9B95EDA853B076897FC9C - -Count = 175 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708 -CT = EE35C5ECBE911F7B6DAEBA6595B4B4EE3CD025E903 - -Count = 176 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203040506070809 -CT = 252EA99EE559F40F99600E2080981149CC6CE0AB23 - -Count = 177 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A -CT = B0C179AC6924149D42BE922CA56659FE37DA00843A - -Count = 178 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B -CT = 73F5083A22E1D759272535670E83E74DC76296DDA4 - -Count = 179 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C -CT = 41AAA9737721D932D84C1E687BA57BCBF0F4FB41E0 - -Count = 180 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E431994B0E1A193E7BEBBAF40FDC03DF46 - -Count = 181 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E -CT = 39D99068499843685C23A1653445E369B91A3AAE12 - -Count = 182 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016D8A44F6799DEE64CB76B0EEC7FBF5ED21 - -Count = 183 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBDA1416B618E8EA5E908528A2836B2225D - -Count = 184 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA5C0DB4ADD793BD6E384C0A5EE575DED87 - -Count = 185 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495D13F51CFE1DB1D0D90AD36BEC34B61FD - -Count = 186 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AD561102EF48E8FA373E1E5D9ABD0C8B2 - -Count = 187 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E37BE69581FC8D54A18C55BF542A8AED56 - -Count = 188 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC865FDFEB73B4C80CB6CF647EC8AD7EA6C - -Count = 189 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF167C908744AE21F060BD92A4532AFE2EF82 - -Count = 190 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F746E0BF9546B782C79450F2E638BC32D - -Count = 191 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C7F688688AAA436EEE57592F2E67ED346B - -Count = 192 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A5956D824E3CAD5516351E979804F3555DD - -Count = 193 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F1B313E843761177B83973B055C40067B - -Count = 194 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5F7BED03483EBBF590414E1D14ED95CF87 - -Count = 195 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C9C6E7AB75132252DDB437DF3AF0BA178 - -Count = 196 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA555358CEE7D4951B3381CE6DFD4E8417B0 - -Count = 197 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF50391871C839155B57F0B4DD08008D081 - -Count = 198 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442B389361BFD50808FCB3B235561FD7E0B7 - -Count = 199 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = -CT = DE27B3C1B43ABD71B0F7C07D84B65D53ADF724FB3296 - -Count = 200 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00 -CT = 998D7701C14B373043208579E6ADFF66EB28C1106CFA - -Count = 201 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001 -CT = 51E3F26591E39541B5597FD63378217299CAE4ADBA68 - -Count = 202 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102 -CT = 255ED813C6C9C4732FCD1CD796FFE2EAAEE974383BD7 - -Count = 203 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203 -CT = 2BB84CB90B56163D26FAB3B802F9BDD0F25D054419AE - -Count = 204 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001020304 -CT = CAB056AA88F153E95AB6989AFD030AD3450A6F5D31CD - -Count = 205 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405 -CT = 85FF40FCBFEBFF44B1CE0E58EC312410B5FC5AD6E411 - -Count = 206 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203040506 -CT = 37466ECBEF0C271D27B5949D19049920F1FBBF90FA30 - -Count = 207 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001020304050607 -CT = 066D386BDC3B7A85F433D572924B6ECFD42B88EE97D9 - -Count = 208 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708 -CT = EE35C5ECBEB4CE29EFCEAF6FAC0368C9C496ED074499 - -Count = 209 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203040506070809 -CT = 252EA99EE58ED63350A4A580E1625E16B70BA544C3FC - -Count = 210 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A -CT = B0C179AC69E83FFCCC0A88847E3DAAF9285ED7490EEB - -Count = 211 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B -CT = 73F5083A228D91ACC4C4F750A1492DD17036AD57FEC2 - -Count = 212 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B363268BE09920BF0ED8D4AC542FEF8822 - -Count = 213 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E5DCBD8550618160E0BE3B8428FD5033F - -Count = 214 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E -CT = 39D990684973CC10B83508B465332BF5C789487F6D5F - -Count = 215 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1C4255B3EB0E57C93FDC7B3DD99CEB855 - -Count = 216 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD3813765E40B0E00165936E8EBFB6769C5E - -Count = 217 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E42ACC89D49F06962A69EC6BABE36BD5C - -Count = 218 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BA22C2E26C8914B2F63E88DF606B64BB4F - -Count = 219 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF7C21613F01DA7242C2FD8077F48402712 - -Count = 220 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36AD2212FF15220E10D0C6C52FBF05F7EEF - -Count = 221 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884EF4A5D7B325260A75A96812D0216EB82 - -Count = 222 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674E0C47C078985064AE41C66A0B0EE11B2E - -Count = 223 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63E4F3D01CEEBAAFA24304F2D2FB62D673 - -Count = 224 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E918B1154CC8DEA9B14A4C770E252B441 - -Count = 225 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599A0A560EDF3B53734066FE97B12286C3B0 - -Count = 226 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F20B74E34EAF798A1262A6862F0A17F65BC - -Count = 227 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5DE16D785B69814B67E3757EA618789C6 - -Count = 228 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D21F199EA3960E18BE120A44B85C6E482 - -Count = 229 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E22DF5DB2ADF8A2A460958964F4606D0C6 - -Count = 230 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519551C9C85512981B9B0BE5005F051D3F3 - -Count = 231 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBDDC1C59D55C72CA3C8D099EDD999B540F - -Count = 232 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = -CT = DE27B3C1B43A54D62518F1D00DEC368FB4F900E316568A - -Count = 233 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00 -CT = 998D7701C14BB42EA6671F633F172905E74AF11CC33DD0 - -Count = 234 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001 -CT = 51E3F26591E3BE593CDE2B4D53A478BE4E41F0C9991F76 - -Count = 235 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102 -CT = 255ED813C6C9E755D8DFD4DBE2FB1ADDBFE6A35FEDCB35 - -Count = 236 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203 -CT = 2BB84CB90B56B276FA150694A9920CDE8641E0402D5319 - -Count = 237 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001020304 -CT = CAB056AA88F11081BFC816EA54991825547B8E4DAFBA22 - -Count = 238 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405 -CT = 85FF40FCBFEB1699E54025CD9D8795C55AE334C9C775EB - -Count = 239 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203040506 -CT = 37466ECBEF0CF67577D9829043BF00DCC1493608A5BEED - -Count = 240 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001020304050607 -CT = 066D386BDC3BFD5B0E86DBDF5C43B5A82060CC82FBF348 - -Count = 241 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708 -CT = EE35C5ECBEB4F7EF61D264B45AB316650310A0AA38582E - -Count = 242 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203040506070809 -CT = 252EA99EE58EE9252C1B54E38E75CBB44658B78B4A6E96 - -Count = 243 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A -CT = B0C179AC69E858EA8587E97D8BCB17018F941F18631FCD - -Count = 244 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA411B18A63640A216FCCE84842E1E389 - -Count = 245 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B3972F781A703972C76771CADAC6AFE81D17 - -Count = 246 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79A1A3A3E7736793944B25907ACB09B638 - -Count = 247 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736ACFEA213C88299219D0F70FAF4561CBD3 - -Count = 248 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D56FCAAA1CC08D2494D27DB53543FD98DF - -Count = 249 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D1744CF85B79A21590C6D346AE0E2B25F1 - -Count = 250 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E27A27FD949222443797A4E6F64145E91AD - -Count = 251 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB58BFCBE5D5B847B7BD5906B9420665E7E - -Count = 252 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF7528668A2E81710B698298AAF65C237B749 - -Count = 253 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9DF8D42E4A5C36AF68993424EBB389CE02 - -Count = 254 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC990D48914989FC10C1813537C51C55BA - -Count = 255 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0E2E0238E7828853A4390AC67275E2D9B - -Count = 256 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA085212455CE6B80739F6EA5640C191C4 - -Count = 257 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E7752A6D5487C1299EA7DFB694DDB17F08F - -Count = 258 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB55C49E5F13A392B8763F53E62F0F27013 - -Count = 259 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091229D1AF939EBA2735783539AE5BA2DEA - -Count = 260 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EAB1B0DEBFE9BDE71DF656B4507E9F428B - -Count = 261 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D955D5AC1AA84EDA53F7C9D3AAFB2F53E0F - -Count = 262 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E2401B0EFE803DE334D9E31E177F94A46EAB - -Count = 263 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DC1C94AA2F9A92F2C6F783B9B789F1BCB0 - -Count = 264 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD1895EED27997565814639FF645489EEC03 - -Count = 265 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = -CT = DE27B3C1B43A54C25541E3558F20E16231D5A5B964932993 - -Count = 266 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00 -CT = 998D7701C14BB41DD88440E79286BB0F881C2D4D15A21A90 - -Count = 267 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001 -CT = 51E3F26591E3BE66901BFD188CDA8195238369EBDFA389BE - -Count = 268 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102 -CT = 255ED813C6C9E79EF60A4A2CA102BC2BB40A486A6B7A458D - -Count = 269 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203 -CT = 2BB84CB90B56B23C3A24D6BC347EBD84AEA43B68DC3A296A - -Count = 270 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001020304 -CT = CAB056AA88F110F780CF8C5DEF2B02DEC09518D5537E6C12 - -Count = 271 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405 -CT = 85FF40FCBFEB16F5B6E5F6B395815F3E24036D4D5C19643F - -Count = 272 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203040506 -CT = 37466ECBEF0CF6C929B3B6296031CF4D6B4B8DBD5CD168F9 - -Count = 273 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001020304050607 -CT = 066D386BDC3BFDE562EA36234D704F81F5D4EF4F4F8C94D9 - -Count = 274 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721C4E10C2EAD1F52D7BA3A2322D015F781 - -Count = 275 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD41E7F080AC6D325B836A58F6B9E7EC98 - -Count = 276 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A -CT = B0C179AC69E8583FE372995E7F3A5E88A547D3D867384A2D - -Count = 277 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA49365D30F651E04D242165876A65FC2F9 - -Count = 278 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B397586DA942529D44E6A9EC77296DE86B876D - -Count = 279 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E793326CE2061369ABE62C80775A01183CA0B - -Count = 280 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFECC3456EF2226A0DB0BE4CBE2C3A35F18 - -Count = 281 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54691177FABFCC82952712B34743DE54B39 - -Count = 282 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D15214C25638896988603686950EA6F5C529 - -Count = 283 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E2775910E80406B9D2ABAB2B44C01F37C2A45 - -Count = 284 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA3D35E376752FE3D63656D6CDE3FC63FE - -Count = 285 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A80AF9FC4EFF007EA310A32E6EA8B7D74D - -Count = 286 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D3957589F78957638B2D322258E36AEBB90 - -Count = 287 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC660BDCDB6FAD3DF1EC629736F26113AE95 - -Count = 288 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF13D84925EC641BEF382E2EF866324500 - -Count = 289 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2A103889764FDCC5FF7D593307FFDEA491 - -Count = 290 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC408B47CBF8562492B47C9A24F84D5747 - -Count = 291 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF0F3C3A97B5BBF74668B5EEBE5BBCFA80 - -Count = 292 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FD079D58D1BA432A062AE116CCEF2C6073 - -Count = 293 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA29DC6FC6258762249B6F3035F969368E46 - -Count = 294 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557627CF2979F2A7798EA9DC1515105F207 - -Count = 295 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9CA2B807EE669036CB7496E6314B45B04 - -Count = 296 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4CB659B9E46C0947928E2BED2566B71AC - -Count = 297 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F78BA6A4B49199CAF4F5877A07A7F83DFB - -Count = 298 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = -CT = DE27B3C1B43A54C25A9EC999EE85073E014C3B51BB33005AA2 - -Count = 299 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00 -CT = 998D7701C14BB41DBAB49A54B539BC64596BFB22EF2E22AAB1 - -Count = 300 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001 -CT = 51E3F26591E3BE66E22CE91A78ACF215C8844F7BBC630798EB - -Count = 301 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102 -CT = 255ED813C6C9E79E11CE5BADEF2CFEB4C405417749E0FF96C7 - -Count = 302 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203 -CT = 2BB84CB90B56B23C16B7CF6F3A938BE1324EEE0F48A97CF4E6 - -Count = 303 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001020304 -CT = CAB056AA88F110F717C4CF9B5AC5A006E69BCE3ABE9A2F38B4 - -Count = 304 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405 -CT = 85FF40FCBFEB16F5ACAC99788BF7FCB713DD70BF183DB23949 - -Count = 305 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203040506 -CT = 37466ECBEF0CF6C998DCB79668769B826DF0217FB83DA1D1C9 - -Count = 306 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56BC51ADE8D40C35B7F89F7DCF87A0F1E5E - -Count = 307 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F449CE793744EE3D2AC66A0534A54A2AA1 - -Count = 308 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9F77B1FFCE885787DC74C91A02B93AB68E - -Count = 309 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD6406C55A0454FA8D791D2E54202C72D55 - -Count = 310 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA4500C9645582EF057671305F1BA8CF7C61C - -Count = 311 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE208ACEA0DF3905DCC26958071C244BCC - -Count = 312 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E75CB0133C7EA8AD437ECB29C19671536 - -Count = 313 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9405E0CFF495953DF6976F1E0FBB4BACD - -Count = 314 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668F64F27C71C56F7BFBCCF165FAE3556AE - -Count = 315 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551E4086F7AA212973B17DC874F7C8FE07 - -Count = 316 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E27754179CD9E4DD1ACA1DAD93194A504E4C717 - -Count = 317 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA384F5E9D8BB7F0BA6C3682901859E82D46 - -Count = 318 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C6D9C20E188670E544E67C9045590C4A7C - -Count = 319 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A5836D90C1631A78B45FA73BB74A1543A7 - -Count = 320 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3E92098A96B7A4520A45952AA432B343 - -Count = 321 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8AD19F8A19686AC963D4826E34DD80E2F3 - -Count = 322 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB82101C9BCD6A9720C628BA326367B733A - -Count = 323 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0F98BD1922417F6DF1711732A2D9B0EED2 - -Count = 324 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF749D2F10933470927B1C9CEAE1CB48C28A - -Count = 325 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA37C9551BAFCDE193B1DB374B463436F95 - -Count = 326 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C93C312559D9E3D8F7AF47AED076F0CBA - -Count = 327 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D4C53964878103708501DC4363E1856960 - -Count = 328 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9574C395B565DEA49FFAA048B83F1D2282D - -Count = 329 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E6C960B0A36DA6716E98A55D313B08332B - -Count = 330 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F57EE355E2E1011A42AB5F2E013A5258C1 - -Count = 331 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = -CT = DE27B3C1B43A54C25A720B0EEE5B3A487F26AB8B14A616BDB20D - -Count = 332 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00 -CT = 998D7701C14BB41DBA9138AFBF15211BB432FEA348888655A204 - -Count = 333 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001 -CT = 51E3F26591E3BE66E2C33CBFA1F26164A7D38E8655623805A67F - -Count = 334 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102 -CT = 255ED813C6C9E79E1107B53FDFA17BBBFBD9055386C634EFFB11 - -Count = 335 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203 -CT = 2BB84CB90B56B23C16EAF248B4144648B9B942A11DEFEFFB20C9 - -Count = 336 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001020304 -CT = CAB056AA88F110F7178FDE9B3FC79A245506EF74FC44A032DF18 - -Count = 337 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7B1DF2C76818BFBBFD5B468374B80B07 - -Count = 338 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203040506 -CT = 37466ECBEF0CF6C998796069E82F058123D0EEF0EC0A9DD405A9 - -Count = 339 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07AACA3A01571CDD44E0E43203A4A0578C - -Count = 340 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3EC1674E7CDB36BC1BDF8478FB9973241 - -Count = 341 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2325C5D87F86848959AD23F8167BA44A4 - -Count = 342 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B86DED6EE3452AE7B024355866A84A966 - -Count = 343 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045D17A811C82E8D5A0258C63FB64BED07A - -Count = 344 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9EB3F19E9F017FED91D05C211CC0D54B58 - -Count = 345 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AD9A7C3D250899EAB6A55F09638058145 - -Count = 346 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B99F3229B716DDCCCEA0C10649B7730F48 - -Count = 347 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CC506839D4AC0E8115BD38944655164256 - -Count = 348 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551D566D49661802EEB44D13FCB1E2FC054C - -Count = 349 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E950266047EFB0901E26823B4B96AB47BA - -Count = 350 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B3C22BC1ED0E05300D21D2E3259E0C82B8 - -Count = 351 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C6316F99A96AFB3EC83BD798F061D7F5F301 - -Count = 352 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DA0E82EB1459F9D053E9A52CBDC3C624E - -Count = 353 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C32F240BD690C856BCDB311B6B5CE000A2C - -Count = 354 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55BF05A4A4EE578336A9A9E3CEAE582B1B - -Count = 355 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB89043FC00DA798E8CEAD28F5A8DF928E101 - -Count = 356 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED3A0E075EF46452E9AB9465FBCD3BB91 - -Count = 357 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFB5B47421E543D6929A1BDFEEC6A55BE6 - -Count = 358 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA360BB0FADA5313F4DDCA5F016A04CF21BBD - -Count = 359 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C080AEF4636189E435A8042D0809A1D927A - -Count = 360 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43BA33BDA86C651C62C9774A3F61EEAE263 - -Count = 361 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571617AD15C490A9BF3D29229118FB1E48BD - -Count = 362 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65AFE252934F92194219430C35E080FB4FF - -Count = 363 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EAD4A2F699F7607CB385CE9D92B748267B - -Count = 364 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = -CT = DE27B3C1B43A54C25A724A5B265549690C0CE6C6AEC1007F5B3617 - -Count = 365 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00 -CT = 998D7701C14BB41DBA91A2CF89F93DC9A36F3ED4F49766614CBB2A - -Count = 366 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001 -CT = 51E3F26591E3BE66E2C31CED40DF4DC0A26D30A15BF18B037CB97E - -Count = 367 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102 -CT = 255ED813C6C9E79E1107AD4D73C122CE67E272429BB8A6BB1B1BE1 - -Count = 368 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203 -CT = 2BB84CB90B56B23C16EA913827E85927B4F50B22DCEFE4AC9A5B03 - -Count = 369 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001020304 -CT = CAB056AA88F110F7178FA14DF2DFE8631FB77E56F82771E017263D - -Count = 370 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7F0151568928260700D463BDA20951E910 - -Count = 371 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203040506 -CT = 37466ECBEF0CF6C998792425E05AE24CE99DE56889EDBE35941374 - -Count = 372 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07788D2C9B70A75A392C8019AE87F9B110C0 - -Count = 373 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F137A529550D5317A1D65173C074575C9F - -Count = 374 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DFB75C8363AB5EE6CCAF4E73D6D558658A - -Count = 375 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C33B800C6BFA3464D40F40DD201D5F8B8 - -Count = 376 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA450455696CB04754450C6CEDDE3A73CBB2B6D2D - -Count = 377 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E861BB533AD748C7E07AD64FCBB9F12EA44 - -Count = 378 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB00E517E2E7BE6A26DFBB5F832086E715 - -Count = 379 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC2C400EC9DC2745C2434D6D1352ECCEEC - -Count = 380 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA079CC84132F9BDB0B18502444726D2E8C - -Count = 381 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC4876DCCFD4BE305A4A21CF880F3B50F64 - -Count = 382 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D0979E6D89FFAE752108FE03681D3A5DF - -Count = 383 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38F5883C6FDF4B0BC27BEB901C0D685AE60 - -Count = 384 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C6317459134175AE321BD051D187AF63CF2202 - -Count = 385 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE857238C6B7ECD4B6A1351543779C642B - -Count = 386 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243D2C88FA3C9592189D88AC8A257A1F978 - -Count = 387 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE1C54203D74FEB64D47C963AA84013AC4 - -Count = 388 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B5DA4CE74183CA58FDB7F6E8529093A58 - -Count = 389 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED76EDB09CF1BD9E145FF249DAE32617B25 - -Count = 390 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEB38A149816060441FB45B3003EE8EA918 - -Count = 391 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E94A52E3F1EDD6D54C2E513C767069351 - -Count = 392 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C08122D87E56DC35F85A741BC78F5824E8768 - -Count = 393 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B723A1C82D16492BE255CD23F1C1E1DCEB5 - -Count = 394 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F957165663A793227F007A35D1CAC3C7BE84CD32 - -Count = 395 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5D467F54E3708F1F95CB8794DEF58CC0BE - -Count = 396 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1BE20A5DD208616A2F7DE3BD9587DFBE9F - -Count = 397 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = -CT = DE27B3C1B43A54C25A724A5F132D2F74A13CE8DE40A2442775C881EC - -Count = 398 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00 -CT = 998D7701C14BB41DBA91A24023B53FC01A2A8AF6BFF38612E0D2E421 - -Count = 399 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDAFA62412098632D0A43E1301EF69559D - -Count = 400 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102 -CT = 255ED813C6C9E79E1107AD13E974C4752DDDAAA4F8282F639D88C2CC - -Count = 401 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203 -CT = 2BB84CB90B56B23C16EA91859EB385B2BF27FB7EE062D00B0C3F2F3D - -Count = 402 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C0C894FA25EAAF1C6F257B9F4D448775C9 - -Count = 403 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEA5AE39C47574DEAE0ECC63974D52DC650 - -Count = 404 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924ACD7260472B57B14EB473A149BE5684750 - -Count = 405 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782D1BBAEF8CCC66D4A11387554D764136B1 - -Count = 406 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18FC13BF9CCC7CEA6B3800902EFF72D4457 - -Count = 407 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E15AA09BDCC0267E9CDCDFFB2D31A0A34 - -Count = 408 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C0090148E0BB4FB8089A196FF2449127105 - -Count = 409 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C160578593315740965FB0908B3125AB7 - -Count = 410 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E860691931F816C04031EE48C5CBF9245640F - -Count = 411 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76866B97BAE5ECB4D0D1DE94686C802170 - -Count = 412 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC58477BABA416FAA9F1E58B1EAA617A3666 - -Count = 413 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DCD4CC641FEE6CADA7C81EBD19953178F1 - -Count = 414 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44EA874AC55FC80531604664C46C8A12351 - -Count = 415 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63E7477615DB609B5917C9185AB7EF73D4 - -Count = 416 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB323D969E16AFD916A07255AFCD9FE693F - -Count = 417 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E4B1A8385C3A6DD4E4A09FA6D93F1AA13 - -Count = 418 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE66D70A432A1112BB12392981660C0DB0A9 - -Count = 419 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C825C65D5A61B4288337038B2072A6D528 - -Count = 420 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE236BD52D3A49A08C2B67E72A66CB545F08 - -Count = 421 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B5264BEAEA6AB5C05FD49D24BCBFB30DF97 - -Count = 422 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C73F425C34BC72031B4733665D0BA7A087 - -Count = 423 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4CDC6D610506C82D6556F721C026BC99F - -Count = 424 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E153309E7C8D7FC9A10329410C17AD70250 - -Count = 425 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCAD712D0A45E9CBA23F37FD1C34DC5B7A - -Count = 426 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72993C5248128B6A814D371BF626C3279C70 - -Count = 427 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9032C911BD6FCDA74D177D0009C0A296D - -Count = 428 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD5F0CDDBF693FD9691E990FCA1C82F7E2 - -Count = 429 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1DC2061869B4315879279688CF86CD3E96 - -Count = 430 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = -CT = DE27B3C1B43A54C25A724A5F572C13E81827C0AC0433B21F446D5F725B - -Count = 431 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00 -CT = 998D7701C14BB41DBA91A240DAED264D9141D3E492917106F5C3406AC1 - -Count = 432 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD59F77BECF1154A5D5EE6C89B2E3E964E5 - -Count = 433 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC7965036592AA2D795865012A6EAEFEEA - -Count = 434 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8A6B7F9E955AEEBF27FC15B03B9728009 - -Count = 435 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075466E0C41679EB03A3524E8F86A6E04EF - -Count = 436 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAA42004D53BC575AFB07F5650FF37EA3F5 - -Count = 437 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC513F054655C039F5C581E6EB250986115D - -Count = 438 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF949CC6A9A9EF22720307461790F83BB6E - -Count = 439 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F72C748787C7979DE29141D374A8041E987 - -Count = 440 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E89B5F86CDB16327F182C33E9864A325FDC - -Count = 441 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C0036F27CA7A6DA61C1AE4826E4454E6719D6 - -Count = 442 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2097BDE4CCA8C3948DDBFFFED5E895C129 - -Count = 443 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E674753186E13E517FD3145E1225CEA34E - -Count = 444 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7EB755D646528F81029CB9DD468108086 - -Count = 445 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851A65A0081CE9AE669E95E53114890A995 - -Count = 446 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BB31CF3B7F35AD0F1291EF5CB19BE60A4 - -Count = 447 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E167B41EB091C45C196A8F3A0F6FCB26423 - -Count = 448 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AFC5D036DA6C8DE3C8B26ABE9B7AFAB144 - -Count = 449 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383C6FF654DC8A8E0FD77CB383F62088215 - -Count = 450 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E725FBA12951B4FC7DD9CC5D05774524B22 - -Count = 451 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE66971525E5BBD4295B9F5F65162C926092FE - -Count = 452 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C82229D4C6970E3BCCBF4C6B0A873885384E - -Count = 453 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE2340E9E34DF8587AF6E8590247DAEF1A7E32 - -Count = 454 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C01446904668BCBDBAD3DE8DEFF47E5ACE - -Count = 455 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D7474FCB2FE4B63F85C7E1271CD4FC2AB5 - -Count = 456 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E5B246DF1685D5C9E3D4F8FCC36FE1AEA7 - -Count = 457 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EB670F41BC7814CA6B0D271E0473DD8FE - -Count = 458 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD91A67C5CFF3B26B831F121AF43FC52C4B - -Count = 459 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998ECA36CAD8EFEDA95CA516457579BFFBE1 - -Count = 460 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B98240483FF4CE4B301455D1B2316D39A49C - -Count = 461 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7ED59BCAD4267E5A558F8C72D6CD2C175D - -Count = 462 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D2467D6FE75012B1D82EE546A786E96B7F0 - -Count = 463 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = -CT = DE27B3C1B43A54C25A724A5F57FCD516143D44F4D95E60AF41CBB7D67EA7 - -Count = 464 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00 -CT = 998D7701C14BB41DBA91A240DA8297DEE8EAAEDCCC5D6949C9319A646D5E - -Count = 465 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF59A3E748124D2E536220D1B6D375BA5E - -Count = 466 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC8986CB303A99E68589E376CBBEE5BFF8BF - -Count = 467 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3AC5D40C155F4943BE3C716BCB8410B84 - -Count = 468 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C07581F7E2D9CD48746B78A7215527907DCAD8 - -Count = 469 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7ADF1E728DD1EF957CE8D13B2DEB252B7 - -Count = 470 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E000148AB483E1C93994B6663FF0BEA792 - -Count = 471 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F74DB4A854DFAB87C6367A46905233D72B - -Count = 472 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254B8D0583627BB65A603492A2A64388E9D - -Count = 473 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C945FE27CD7768D1E2E19CC0B431EC85E - -Count = 474 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368DA5C8E7A4F39E63717EF9E33F2413B667 - -Count = 475 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C200808F7E6ADB713B5C18BFE5EA5F8C7E2C6 - -Count = 476 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E644627204F782E92CF589C5BC825CA86A94 - -Count = 477 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B16DD06234A7AE36BAF09EC43AE81CD9C9 - -Count = 478 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBD529820E3B05C76967534DC6AB938CE4 - -Count = 479 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC6CA110EA817DF8C099E92F80055691891 - -Count = 480 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D5F3ED127A7B9FF98D62452FF287A7F709 - -Count = 481 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66F2D97C20D1571B18578E84A91DFF266E - -Count = 482 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7219FD6DEE5447393592FB0272879D69A - -Count = 483 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC295672AE5B1FC59403B0E9C725C7CEB1 - -Count = 484 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D5C3F5F137D8F41FB11CF0B9A8E3ED7A24 - -Count = 485 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C82295889A48E50D443032AB4F99F4DCE28ECC - -Count = 486 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C143DDE4D715952DDD458EB9FBA6757D - -Count = 487 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C099D4F8690F3E5D056498C0D31604E045BE - -Count = 488 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75BE9B2E350B31C2E0BFE7ED244CCB0F519 - -Count = 489 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555BC18457121237B00CA97D3F718CB2442 - -Count = 490 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBED61D7BEB45C95C7571C510850D5C57BF - -Count = 491 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919EB2D8B4830B36245C0DDCE43B8832979 - -Count = 492 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41F60319EE1B7E90A009AA7C00D1DEDCC2 - -Count = 493 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B98236B03F0D9A77AD4F04B396D289EB5E8832 - -Count = 494 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C36F7275BF57BBE1E317CA5F5AE9C28CE - -Count = 495 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243B3D979AFA55B4733E04B71A6A6285E7AC - -Count = 496 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59CFB04993ED986092A992EDFDAC29D238 - -Count = 497 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00 -CT = 998D7701C14BB41DBA91A240DA8260486C0DAB5420A3CAB0C2F30B1C53DA89 - -Count = 498 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8C268AA461A6DE2A660E9B1B6C977541C4 - -Count = 499 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB864346939F2B630C16D0850C1805D96B - -Count = 500 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3292FC42021CA4361D3FB327BEF8BCB53AD - -Count = 501 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813764F4EC308AC0222AC0E1812CCDFA129C - -Count = 502 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C0344F02D2C6F23E58B6A71A40A34EC703 - -Count = 503 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05EA7538AD9CC731FE32F23DFB77573DA9F - -Count = 504 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784C931377253EB809B105B89EF46388772 - -Count = 505 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F72547664AC6F1DFB4AFD4543C9A5FD87519D78 - -Count = 506 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C8544A961788B4C6D3C4E3556BE833EDDA7 - -Count = 507 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DA64860E063245F00FBD957883064977F - -Count = 508 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A441654086DD7BCD2D2529D9FA81B244B0 - -Count = 509 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416AC94A12483933A272B5BA9A459C8F665 - -Count = 510 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B1490013C80D4BCECB14EE7CDFF7997D4743 - -Count = 511 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBF6E91E727DE1983AF8BA39820CD3A7759 - -Count = 512 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC64447F969D97146542EBA8D75A6C749CD02 - -Count = 513 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BAFEF778DC0A970739B28F88B81A123B5 - -Count = 514 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CF18B7D6409FCA8ACA004E187E0E5A6C55 - -Count = 515 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EE1ADB2FF6FED921ED1A41912503124C66 - -Count = 516 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51660C8D5CD22EF5450F74C0E583B7CABD - -Count = 517 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508CF1D72865D896221B971C974B58F7AFB - -Count = 518 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C82295227DAEFDC15670DEA4D863133FC25DFA0A - -Count = 519 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C6E8FCDDEC7D2F04B4E1EB1A974F05A345 - -Count = 520 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998DB01683103C69DA6D7FC2CF02DB049124 - -Count = 521 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B237845754934B43C3C7E4550112C6D349F - -Count = 522 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C6BBFA3068B2565380C310BEBE4621B066 - -Count = 523 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE936F61500006F7111B2B0C374E7E51013 - -Count = 524 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919237FD15BB858B3DCC192582F539DB8E835 - -Count = 525 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2E2B0181AC634AFF351B629DA3F363857 - -Count = 526 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639446197213786E05BCC787DE679A380D9 - -Count = 527 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16937DEB03E39640F04C37543ABB86692D - -Count = 528 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2EC65EDAF30A9E34255A7F63A08A85557 - -Count = 529 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B50AD6CC30AF7D617FA57C4D48A6E820CE - -Count = 530 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BC97BA43A842706EA35ED04EE12BD6038 - -Count = 531 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD5CEACA5CDC087D7121D6DB2362CBDD532 - -Count = 532 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB046745C48E632A2E6D0A36F5109380738B - -Count = 533 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295723FECF5E556465E5E61C5527058EDAF5 - -Count = 534 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C0758137048D46DAF3D48AA4DA03D36238626B411E - -Count = 535 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADF52045955F4C73E84DB2FCAF3767666 - -Count = 536 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DE97EDC55A1F89690F5A30EDE77439212 - -Count = 537 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B3749282EDD2EE8198317FFBB41F8B4207 - -Count = 538 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B4D6700A94F98C120F6DFDB063EBFC9E0 - -Count = 539 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F52671B3C0FD9AAE5F60B53B7D8B71A068 - -Count = 540 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD8CF56F709E6E94E411369E9870139333 - -Count = 541 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E18AD9F8FBFDEAD8BB97FD1847F2427A22 - -Count = 542 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BEF1ED479FEA50F67CD90C446C5CD9A108 - -Count = 543 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B1490999A6E9372649A78E70D4ADF5DA8FDD4C - -Count = 544 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF48040F0FCF26689DCF0182716BA11CC6 - -Count = 545 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC64485547AC7F5AB368E040FEFE52F74CB2FF5 - -Count = 546 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC829914A6A405866D0F0110C48C38542F4 - -Count = 547 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA26E772932C04D9E1187672EE166D9E2D1 - -Count = 548 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECDA542AC4871F3B201DFC85B8EA6EDD58E - -Count = 549 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB5A6301B630D6609665BA52F168BB5157 - -Count = 550 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D50897B6DAD629168745E03DFB09945969C8C0 - -Count = 551 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297D60C2E17F858F4FBDCC7F08EA2A0608A - -Count = 552 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610BD6E2811093E4D16AEE7F9796109D7ED - -Count = 553 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4C579EA1655C212EF2AD34E3BAA092935E - -Count = 554 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238FB176B2543D1AF0AC63C6533424780A8A - -Count = 555 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E3644DB3C4020CA7564FD0C0CDCB76829 - -Count = 556 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE9328E07845FD9B81B808876937BEAA347E5 - -Count = 557 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233924D173BA77D2BD14347C03F03F358B59 - -Count = 558 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9B57351F00118A6B9024626528D755CCA - -Count = 559 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F4BDDB0B81CEA48FACB24925B3550C38EE - -Count = 560 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C1687058784BD51F0B6E4A38967EC9CA550AC - -Count = 561 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE22797201581EF2E787A3CD47BC751A4C7BF - -Count = 562 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B5913644C7291FE90382EA41A7DA15FADB55 - -Count = 563 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABBC71EFD1F260C303A6EDD891AB1C7B7B - -Count = 564 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B1523E670219CE4BC86667F2AB5A96BBE - -Count = 565 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464F50C585D2090295CB34540EF6F763AEE - -Count = 566 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775718CE92212194ED5EB63549F26379C86 - -Count = 567 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEC07F8232A8902EAD7CB4544D674F862B - -Count = 568 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA71A2CE8799D11FBBD4AF46C263541844 - -Count = 569 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC76FFE63E0AA5FE23F8CD1604DC7953F8B - -Count = 570 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30BF524CDB7289784E9D2ED459E705FE885 - -Count = 571 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89F451125A41C30B6E0869E4E51AC44EE5 - -Count = 572 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E3BC85313090A01A2E15DE2C612490EBB6 - -Count = 573 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93841304CB5A14C9812AAE1C43565F562E - -Count = 574 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B582B33CF37D345AE67E8B0E12794C494B - -Count = 575 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91732C477A72F8137A2F0F1FACB5F07C22 - -Count = 576 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C828AB041378F497F23A88CA4BC6CDA3B - -Count = 577 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF13E7E506E32C75E681208F6AD307C0874D - -Count = 578 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CC1D92B2EA26C2A96177A75B4C52C77B5 - -Count = 579 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A67A18202436A61D938636D29A9BFC445B - -Count = 580 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1B49A11189BD0542FE3C7BCF3506E3A5A - -Count = 581 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8EAA8286A8661AAFA9B80ABA599072A6E1 - -Count = 582 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8455FFD9C08C031C0614E43AFB17C00B7C - -Count = 583 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975C79C94EECC960BCA95F588CE69E8EF45B - -Count = 584 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A23845018771036E35A1AACC242D8264F3 - -Count = 585 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D12D05A8E280031A1E5A74C3589892523D - -Count = 586 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD094C23B14BE9BC768CEAA792433807F83 - -Count = 587 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4345CC4D6A5CAE28573AAFEC012BA4C39B - -Count = 588 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60B78930C63A44F145CA3E37FE1D556A59 - -Count = 589 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE9324142A3D843F0ABB1FFE9C769922A76D141 - -Count = 590 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD91923393416E1FE7E358A239863D6536EE3B42217 - -Count = 591 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DFDF8B876AA39FFD1B69B3B5B5CAEE5539 - -Count = 592 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F43761F5054E01510A1C26C9C6B8A0F0A5B0 - -Count = 593 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A36249638E05E3602DED1653A15827293 - -Count = 594 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D729B26C87EBC50EB37BC1DFE597113F7 - -Count = 595 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B591856C25E18918BDE7769CD17A5939330459 - -Count = 596 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF11E72C8E383FAD442D6F0DBDB5002B324 - -Count = 597 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B6806A20A0E3C88FAAE3429D5CEFF9B21 - -Count = 598 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6EDA4204ABB66A702DCD3553BEE434C9B - -Count = 599 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA1C927AE68B7F5DBEFC1B1D56CD15FE4F - -Count = 600 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB2FD8AA1B4A3E79BE6EED9320BA7F2F3DA - -Count = 601 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA72A0ACFF5F94D1BD10C286BC86C9C941BC - -Count = 602 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC7265150F7577802CCF4E64F29FD41C8A88E - -Count = 603 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B607C19B5FDF87DAF3E73B7B7D3B23D693F - -Count = 604 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDCFA48E42866C883ED5A51B0B62B4257C - -Count = 605 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30FFA14BB26FC231AFD7D99C6034E9D6483 - -Count = 606 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD9315186B984778F5623580E94E5B0CAC0C86 - -Count = 607 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F9264827915CB9FA12D219D2FAD86D3DF7 - -Count = 608 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91892FE0C794ACE9EA745F9B4B06F55BF1AA - -Count = 609 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C72894F550AA43A56D221AFB8D63FF6A145 - -Count = 610 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305E98F6E209A470D070CF75DE3E2067411 - -Count = 611 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB70AF4487701575A671ACAC61CA34A7778 - -Count = 612 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A62079959EC90DB68D33C9B5C63C0FB09ED2 - -Count = 613 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7C472C65284F6DBD0E428CC173F6A075F - -Count = 614 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D29D6EE5B5AFE4A402DB2CD2C6882F60A - -Count = 615 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB841954DDE46FF1765EEE974836AE3299C37E - -Count = 616 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA59DBAD72E387666DE4FDFF3B2A3D4583 - -Count = 617 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A20689E0DAAC1BDAF69CFF07A10A376AA30F - -Count = 618 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D177364CC17647D32F09AB80021AA2346184 - -Count = 619 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD04717B230EA4CD664F8169E970B615EB598 - -Count = 620 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334684E646D68023737EC20D9652981B98C - -Count = 621 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F54D5459D621550E9D549E0BA8C6315C80 - -Count = 622 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE9324122B1D31056D9D60BB4D83F0D742E35F9BF - -Count = 623 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB6CB9C976B36E1DA1797C051E6B46F965 - -Count = 624 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5ACC9934741BB5CB21A4B37192B3DA5A0E - -Count = 625 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C8C4F7EA1BA1ECC3ED46A67A52BDA466DF - -Count = 626 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30D7A534C9137B2156F4AE75E020FE55E2 - -Count = 627 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D080DC8FFDFDEE6780B7161C2CDEEAC2F79 - -Count = 628 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2E69AB41F97D9F823171716E4CBDC812B - -Count = 629 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF1785F5792519EFA56E587ED3DCAFA72B8F7 - -Count = 630 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86D43366FF024750E12F20F0877E0F88A9 - -Count = 631 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F500329DE6A1DFAD15D9A819C6A56B8CCB - -Count = 632 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA076BC8ABDDA1120C7BDECB1AA21879F970 - -Count = 633 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AC2DD2A19334A598BFC6A87E9BBED9B8E - -Count = 634 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA7256CCABFD3E28F3B6830E14C47E56981E3C - -Count = 635 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726436019CDF31F28E95EDA3C7E5002713C52 - -Count = 636 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B6077711CB0E0889AF0C78B5F79C65BD5E331 - -Count = 637 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE7625AAC4477FA42DE2C8E55718D1747AC - -Count = 638 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F9849D04895F6F3B95755F57CA40266ED81 - -Count = 639 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CBAEAD52F5D062B9F2F72C4AAB992242A - -Count = 640 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91CF1DD8AFF8B5EDF3C833BC2A13B0EC57A - -Count = 641 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E8EA9293757102858D714F18E90FBB33E - -Count = 642 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A2EA950A7055F1ECE73FD6F49F7EA8CAA - -Count = 643 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF13056821E302D4E1B7E560AF7D5AA8D7B16022 - -Count = 644 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A8A3D5CFA93DB549FC5E57569895F16C43 - -Count = 645 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A62071BE98A430416E158031FB2C94C0293DFD - -Count = 646 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A55E204C34372BA4E1ECDB4179397D3DF5 - -Count = 647 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D877313981C9A3D2F7EE3199C0DFA6D1083 - -Count = 648 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7459A030FDEBBE95FC7D8E3491E8235CB - -Count = 649 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA588CA01ADA2E3D283255D8FBE4EA3A8F74 - -Count = 650 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F848E6C352A763AA059D7604B530DB172 - -Count = 651 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775E905F37CAC2C32DBBA627E4CA5D3379B3 - -Count = 652 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8BC33EBC6EA068AE4AFF6D999E6774371 - -Count = 653 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B9FC4DA5C3D713B22B591CD838C38CB223 - -Count = 654 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505A4139F15D6BF201A1763A30AF781D5E3 - -Count = 655 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228319DB34D82BDF12723FE1CCEDE8F6B3F7 - -Count = 656 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB157038200CD38E129BB2411449063136BA - -Count = 657 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44EE4DE7FD505CD75D4148A2A01EC6475A - -Count = 658 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C8597F88919FDB0398ACD57FE9A2F9884CCE - -Count = 659 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A304597164B76083C10FD4A9BDF931C4D01AD - -Count = 660 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABDBA8B3C03491B52274B24B244B824310 - -Count = 661 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF06D8F0F70403903EE2A0FACC1B20EB03 - -Count = 662 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C951715945DE2013BC7350B287F7F9C19B - -Count = 663 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C02E89FF9853EA44979A0AABF43E7E788C - -Count = 664 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F55561DD9608CBAAB17DB7D2D5E63CE80038 - -Count = 665 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BC8156D4872FC3716E959E0DD75EBB2D0 - -Count = 666 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFB76BEFBC8A10B5784306C021F5B7E147F - -Count = 667 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA72560756200CF4F120C625CB2F267F3CDE83CC - -Count = 668 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BD27451060C933EBD63D81F96DD50A46C - -Count = 669 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770CD3E51E7D972650F44E226599CA1B1301 - -Count = 670 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE7478FB2EAF96CEA6B962D7AC4737902010A - -Count = 671 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4F513936DA3C8F7A7FFD0A080B9DAAB90 - -Count = 672 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF5A4AB04071C49BB020B6D57D52868C843 - -Count = 673 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58DA0144D18770D47E8F443D39C18AC211 - -Count = 674 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95ED27A585881DC76984350C60243B0823 - -Count = 675 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A99F14F9B5463DA9AE4367CD987095BB73C - -Count = 676 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686BC33C0E339D3D74F6F31037998CBE57F7 - -Count = 677 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E8F1656763B740E89B6B6559EB5A194A1 - -Count = 678 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717F3EFF5996454348FA3CDE439FF7769B73 - -Count = 679 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A5467F536C0D1EC628013FDF7037E562ACEA - -Count = 680 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF9B2A70681D617D3400F89688D3202C4B - -Count = 681 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B878F663C9D171118EE535C43D025017B3 - -Count = 682 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA5882C2E09E364689608132EF8642A2100CF4 - -Count = 683 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CAD96C2E6210815908682855BD9D3D160 - -Count = 684 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEAD8DF1AA8FE6D297723F9EA321E293F7C - -Count = 685 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE527D1733E42E51383804E310179B80B5 - -Count = 686 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B9258903339E8326428D9B29A76DEB4563FB - -Count = 687 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F50542CC94BAB44001D94B498E031139A85F25 - -Count = 688 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE9324122837421BDFA7A10AC22629F7D8718AF76424F - -Count = 689 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155CE5B1F8A50A2BBE718372D9DC87B8F457 - -Count = 690 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FA68D0E36A8AB3C4786D3E44A8185C3BCE - -Count = 691 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1522C2375D5E1DCC8E9586604A25F48E6 - -Count = 692 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456E2454CA1A9026F15BB7838B067B99F2C9 - -Count = 693 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB666B77A61B3D5C93B73673BCACF93498 - -Count = 694 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4BB6543EF3A53A6E8C32739E20459AECC0 - -Count = 695 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD2EF6B903FA6C0A2B9DB7356073738495 - -Count = 696 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB97943AD21C627989995867824831C215 - -Count = 697 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F555276AA03223559F532B5D78D7EF05D3EA49 - -Count = 698 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF385D971DE283075839964320814A0007 - -Count = 699 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD1A26D684CA5839C9951311F8B94A9D8F - -Count = 700 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C490B420827341763CC8BDB52DD8C7AF15 - -Count = 701 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBEE9372C2EE5CCB9AD966E80E16D4F0F3D - -Count = 702 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C5511433A142135250AD132F2888ECEE452 - -Count = 703 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE7474607F5A47AB308B3859CEF8101B3B047C3 - -Count = 704 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BBF50540B3F28688A06277C644AE945404 - -Count = 705 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9478EE46EF0245D17A6721474A742EB2 - -Count = 706 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B68A5EB29A39CE448103C9C1A4F0A8F090 - -Count = 707 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CD0892B7FA1AC9B912A3186A38962E5B34 - -Count = 708 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A99065E4346DF5BF0001D09A19C2A5BFFF265 - -Count = 709 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8B1B44FAC558DD8A6B4A7519788FCC2517 - -Count = 710 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03CC4AD5D531254C3651CCC541B9E2960B - -Count = 711 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA16F38C1075743CC863714F4FD3019035E - -Count = 712 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D079C9C99BF394766A44EC71F474B2D543 - -Count = 713 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B1C9D9EB40B69790E8596B434155DA540 - -Count = 714 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4D6FA4F6BA8A63E4AA19BA7DE8EACAA98 - -Count = 715 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA588234B0E1A85254061813E42D6C2E791A24A6 - -Count = 716 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5E28FF3A7FC1185E040E32ED6B82AEEB0 - -Count = 717 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5AACE20A17309CCC1E0B562DFB87587A10 - -Count = 718 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B94DDF6FDB34B9A25BE48F48549EF0ADB - -Count = 719 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB15AED29BF297CABAB344128A51FCDA2B - -Count = 720 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E0F7EB0E04F47F577A2789BF5659633D9 - -Count = 721 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B85E36DDAB0608DD95A3246CAA42357A83 - -Count = 722 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C1215131FF14DCCE1F9A3E9E3BA9F4675B6 - -Count = 723 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAAB3E353E5DAFA7A62A3720B0A168E70F28 - -Count = 724 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0EF207DB7CE437862DBD9BB043CEA3822 - -Count = 725 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEB591CFCC41E938565D44ECEDCEA13D0BE - -Count = 726 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A8B0FAC2EF55E9A307AECF477A06A7CD6 - -Count = 727 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B688EBE30100EAEC155A295EC555241B67C - -Count = 728 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD86B86E48BFB425228F839D53591E5314AF - -Count = 729 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB34E5C566E7EDC221AC165DA7FDF915CA9A - -Count = 730 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F55527626E810DFA14EEA429753026B3308CE14C - -Count = 731 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B910C0C99B836B2E175BE41C8E207C939 - -Count = 732 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02B12FACADCDF44FE5B9F5D020D91886DC - -Count = 733 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E217038CA62827AB4CD8214750047ECC3 - -Count = 734 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6ED6613D96D508D12F18469ADB99815017 - -Count = 735 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B8A647EB750DD2A5C0267C81774355563C - -Count = 736 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FEE09E8C24C0130F5F216C378131343336 - -Count = 737 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB941654DCFDBD55CD4B0562F41EF12A10F3 - -Count = 738 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9313D7324326FA0F0AC161C06787099D4B - -Count = 739 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B66956840ACED3CA10DAFFB9DBCF3FBB587C - -Count = 740 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEF4DBC1727AE76B93DBBACE8F33CCD714 - -Count = 741 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906367033129C42228A79FD42492FF215EB78 - -Count = 742 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFE702BA125B5D30250F67908DFA4CE88B8 - -Count = 743 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EAE2FF19CCAF1DDA8BFC28CF612248931B - -Count = 744 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA1301E646C172236B3171FABBCCB1210DB29 - -Count = 745 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D44FA97C0C870A27714A624DEEF59AF2DE - -Count = 746 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B030FABD24E3E40F9C44464CB029A5C5EB9 - -Count = 747 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E438F5DC8B09D8DC5439533A9CB24B09F98A - -Count = 748 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414145DBB651630E84DD19C9EC7C6C85BC7 - -Count = 749 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA420766C74B91A73D3DDCDAD1920820A8 - -Count = 750 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97AAB890133FDE1ADA66CA026F91C843A4 - -Count = 751 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46417BDCCCC71C6C88078A89E53A10758B - -Count = 752 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB439FF83D74756E275E05E5ED1D81A3D83C - -Count = 753 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E43693A96552C6798878C190FDF11719F3C - -Count = 754 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0369EE2765A4CE8E15C91EAF4E1C1EAEA - -Count = 755 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBDA2D269771AAFD5E628F464B7E881BD7 - -Count = 756 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEF03CD711BFB8E8F0AAC4A903877648148 - -Count = 757 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FA6218BAC2D3D4FB89BEAED2DC15AE1A - -Count = 758 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD28997B246BABE06F90F40CA37971E0FA0 - -Count = 759 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47C314DB9085BF2770CD9317B58F3E1485 - -Count = 760 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C137DD77ED700429834C3A7B05955643A - -Count = 761 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D92778045161BBE0A2237AA56F1F1D881 - -Count = 762 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB34252C9852F8082D5306899D6BBD676BF017 - -Count = 763 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C972E3A41082CDADC17DC0FDF8B377B67E - -Count = 764 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1ADC5D75D418B763E91FB1418BF698CA51 - -Count = 765 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEC93C4DBEBAF1B001B49B3E8C04A0FC5E - -Count = 766 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E698F58D9ED3B0CDFD8B23EF38FF270A486 - -Count = 767 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B01ADF9D507F34A53A1F280D46002ADA6 - -Count = 768 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83AE3474A70C74798443CBD57D8CAC5ADAC - -Count = 769 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE75B762CA9368B906F196730045AA311E28 - -Count = 770 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB94217940BEF185840053C258ACE4533D37C4 - -Count = 771 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B93769A1EC2DF4019DE6D26A2FF2D31063F28 - -Count = 772 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698ADDA1BF5DAC5BE104E66556E7BAE4903E - -Count = 773 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB23C1E54418BE76E5076C262D1DF3EB79D - -Count = 774 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B5586444B27A15824DB8FD5FD2F967793 - -Count = 775 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED995F72D69F3CF9B8F0C236B4E0CD91317 - -Count = 776 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8C6304B310ED84F648DB22B10ABA80F08F - -Count = 777 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130910B903925D16E53D8B75444B2EDE48F61 - -Count = 778 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D32E1BEFF94584E5BDB9526ECFADAB2D2 - -Count = 779 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B0343FABDA4494EEB6E9F31812A28DCC302F0 - -Count = 780 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387E443FB49A3821FF2CB9BB49255430BC1C - -Count = 781 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA5882341402608E94FDB0BED73EB6C2CCBB25A21565 - -Count = 782 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA438E244389911110CB88A6031AB3F31229 - -Count = 783 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97961A8FED7740A98242AFE575DA52923D13 - -Count = 784 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD2DE5C25EC53645B977BD84D26AF9A41C - -Count = 785 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D4D775645C99A6DEF06BF997BEC68656F6 - -Count = 786 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342219C62C4A6B5A5197505E745C4CCDA82 - -Count = 787 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0387B4EF3423000B2AE994ACBDCCA8C4911 - -Count = 788 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABC3B503FECD993412B0B4A9E7A3744A8C - -Count = 789 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC9F70075DD48764DF30000B286AA7D46E2 - -Count = 790 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FEC4DA35453B203581400AFEB70B771E16 - -Count = 791 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26A2D07C509EC25E6E4CAA2CE8915D5A2A4 - -Count = 792 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC540FDC6BFA24072713234C2F295E27FC - -Count = 793 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6DE4EBA173D3EC7EA5CE095188C1030AFE - -Count = 794 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5ACB1305C649520A0719E059D8A4F55CEB - -Count = 795 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB34251634CA42CA45CDD6A11B4F71C9D63E7925 - -Count = 796 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C967FA46CD022C883330E7974406BA6ECDF3 - -Count = 797 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A281DD851AB2B6B4EF6DFDE0CFE169D2B - -Count = 798 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE129B3061ACA4B9C372DE8FB599E9050A8 - -Count = 799 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694FA5FEA066211661879A83031E0977C623 - -Count = 800 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B27C069D0D8D747A1F00168A25997B8B909 - -Count = 801 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6D8E97EA9DE04A9521C3B40B2C87ADFE03 - -Count = 802 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757DAB9B245A211ACC7742A4A8C0E69FE28A - -Count = 803 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C4E9EF7680649ADA75185CFF4C03BAC5DC - -Count = 804 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2A02646E5F089BA1FA55CAE8B6E7ECAB1 - -Count = 805 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAA4EA86D58F83E6101F42711F86157D571 - -Count = 806 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E5F5E9F6AEF9B42682D6C6B6150A1CAEC - -Count = 807 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D534218C0E20B382A6A1C4115C97236D5 - -Count = 808 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99FD56CC74C5BD0669C19A94793556D9CC5 - -Count = 809 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8E3362C2CE8BE680A604114880CA6658 - -Count = 810 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E2E121E41A669A40D810158AE266AC40B - -Count = 811 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D940FD4F3CE694A619501E904BB40AB0E32 - -Count = 812 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312ACA0AEA5F8B497E789B307864315978F - -Count = 813 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC118AB12D5310926EBF38164D20B51091F - -Count = 814 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D16D72F98ADD54BFC4630ACE6F08EAF0C - -Count = 815 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AE2AEC2F16D1ED75D84A87D342372B7C - -Count = 816 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A979658CD2D2A329458189DFE037C585F5F2C32 - -Count = 817 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD14B240F181D11AB8EF496BE3702900FDF6 - -Count = 818 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D4888CB47182AD5808DF08D3F25A9A746406 - -Count = 819 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BBB03E64A05A57A1196E0D6DF65D068AFD - -Count = 820 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BD7AC6351EC7F7C65FFF354CFE819FC36 - -Count = 821 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD8BAC1B6B0BD0AE8D680477283F9017452 - -Count = 822 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956CBCF9CCEB5B86A7B830B64F08992DD51 - -Count = 823 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE424641CD31319C45D765822F602A002D49 - -Count = 824 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD59F68FC2156E298A57A781EBC8ED69DE7 - -Count = 825 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4A6B8837E6F8CDAFA3BE0078E3705B3F1A - -Count = 826 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B1F7A3404552E100806538F83786BA733 - -Count = 827 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A132687DD91CC9BCD73993303DDDBCC1626 - -Count = 828 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F0F07765B7B0D78B795C98C28795DDCA78 - -Count = 829 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C96763CAB21F64912F5F199F4095ECF11625CF - -Count = 830 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A197EE810EB23BBFB5ACFB5B36693095B83 - -Count = 831 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A7DFAD3D86DB58FD862FA0B7F266762B1 - -Count = 832 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D4523A4D095500282BE4BF93E25252EA3 - -Count = 833 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B2726D75F38620CA5488BD4C323206844E096 - -Count = 834 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5D64B576DF3B240E98768B1DFD64D4B63 - -Count = 835 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F40C610BF53F2A7DB970879F1AD922D3B - -Count = 836 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C4103822874952AC8ECC5755C9000C8DD817 - -Count = 837 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC39E2F575928594DBB92037A70F85C455 - -Count = 838 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEF298FD33AC729DEE4F77C44D004FFF601 - -Count = 839 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E96582CC16F90612C5D23D8A20B89DF4BA5 - -Count = 840 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D612C867111298646CBE171E4966C9B7854 - -Count = 841 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6D7DF876DEFDF264AC5642E3C12DCA7F1D - -Count = 842 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F784F67A268998FA7E6F9FD3D9E9EBFE5 - -Count = 843 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E700C249363C7A322A59B3275AB093AD0F5 - -Count = 844 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C1983A30CD67FD527588C0CBD2A73993E - -Count = 845 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8E00DCE82C34C7801DC938B32A80C64D3 - -Count = 846 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130378F4913D20C368C45FA2C1E733032B6 - -Count = 847 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2DFB3945175E099DCB92E1EBDCA4663147 - -Count = 848 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA2F9B23D450D6585BCBFA732FB244FCCB - -Count = 849 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818219E57A854284AD0FB67637EBB11C433 - -Count = 850 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428E55AF65769CABBA4C92BF7E5D91A8676 - -Count = 851 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D48853C4E10DBC21E7E7E12A009988DC3DB362 - -Count = 852 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03D83BDFA9BCF2D9B48ED1D6D5B5C50B2B - -Count = 853 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA97FAFE86B9B664A9CE5FDB549BC9E6ED8 - -Count = 854 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855A22F51F1E0109B9D1DA8D934FF5F9ECA - -Count = 855 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B418718B434E8563B5297C65B52C7DE60D - -Count = 856 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256C6E5F4BB0EDEBB5E6826DA7E9CD5BD6F - -Count = 857 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0FCF01D23A9A67568A25D3ADEFD1CEEB8 - -Count = 858 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB16D1DA05886223E82C63F2D2981ECBB03 - -Count = 859 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CE009CAF624E78A99898F75F372F3BA02 - -Count = 860 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E1828BA9C9E2BBA2C5FE44DCAA584EA5E - -Count = 861 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F0062C866E5A73212199FCA83AC0E0DE5ED3 - -Count = 862 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392DFC075703AB2514C66FA4E17B1D69258 - -Count = 863 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A1966D58C05C5312D51529764D3B84B6A9187 - -Count = 864 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8EE5B4458C20886F21E8D913CB1C086204 - -Count = 865 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D583C8E97C6B5EB6358C5C9A9AE6E2F1325 - -Count = 866 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B2726495D230EC871C3D854C864D8EE1FBF4086 - -Count = 867 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5287C4AACE44DF798C23907B0D0FA216D45 - -Count = 868 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F636E51B931EAAF18E6EBCE02EBBCC3A942 - -Count = 869 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FCD4E1AD71E229A7F81F6354057F006A6B - -Count = 870 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC300F2DFA65644CF002AA2D114601146EE6 - -Count = 871 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCD1C969D65ED16861199C0E9F0AA5B711F - -Count = 872 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E96452451E49882961B606C94F331353AB77B - -Count = 873 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D61822040B2CDA50C049B3C95D27D86F239D9 - -Count = 874 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB7337ABB8F3392B9FA148EE14250E985C5 - -Count = 875 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F45B9113E114D1FE64EDBDDF18E034D6B2E - -Count = 876 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D097860D44238F570076199926A715B513 - -Count = 877 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E76D36ECED21536D82FC4057786A7EA7C - -Count = 878 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DDBA58D59E5CFE6325CFDD35CF13EB6C7B - -Count = 879 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC13079E0A2EFCDE91C4FB98266B89D07DCCAAA - -Count = 880 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2FA528DFAAF4EE0E6F281C1738547D4F28 - -Count = 881 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50217869CCC28896DD475A37C15C42CD6E - -Count = 882 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A9796581894AA1C243A9FF21A9B55E6E73068B5CC6D - -Count = 883 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F13ED20A5018C2E65D1DB3B07C96D4BF4B - -Count = 884 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D48853128BD97F766CDE4030F95CB85AAC3CD033 - -Count = 885 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBA9CD930B5A56BB28AC72EAA69A5FA40A - -Count = 886 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9ED3E4D8F71EE60BD42701B022798D4A509 - -Count = 887 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB722A205425D3292B5C3BC67D88B606E8 - -Count = 888 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A940D935BE9E1865D5FC3BDCC07F79CF75 - -Count = 889 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9E017923F7C88E091173DA0674EF60CB9 - -Count = 890 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0152C2BF2423B25C7879B9CCCC2ACD8ACB3 - -Count = 891 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB1132409D07819A014227CE89FD9905B3E13 - -Count = 892 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA62D01C2BF892CACF3FAE10F46C412A0CE - -Count = 893 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17A7482AFB7E5283781A013957B0AA62FF - -Count = 894 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F0063912DE108B2103EFE2963AF9014E193D6A - -Count = 895 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B47857F9456F9F0D6D90D26CE959EA3EF8 - -Count = 896 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A1966002EB430294E55BBA1F49F3B1BEA8EEA38 - -Count = 897 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0088E94AA281A04917D1B97461B796D094 - -Count = 898 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F213D8336970A2E6F09CD481912067CB5 - -Count = 899 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BC0DCAE9BA723B1CA497F81F5017A4D986 - -Count = 900 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289859E4320310550D9E011213746A61D7FC - -Count = 901 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8A7D7EF7772022B3E1D06617DA9671E55 - -Count = 902 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0F7A1828F1EFE6652F0774E910A67E0E75 - -Count = 903 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007046D7D88191C4829265FD03EED607792 - -Count = 904 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5931DFB2F754BC85115B557A43EE6192 - -Count = 905 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550BEF80E49A27CA456A016F50B16DB39B8 - -Count = 906 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A419456461E3815E0923375E9A52994C2F - -Count = 907 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728F4C7A3471421792DA24E33A87232C475 - -Count = 908 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A45838F01F48CBDD8EF862D27C6E05721 - -Count = 909 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FE55F9107771B7ADA3884F28E7A494EB4 - -Count = 910 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E73C35CF705AAA338334080E10A08F90DFB - -Count = 911 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD61D0AE8BA643533D849A5400DFAE72D5A0 - -Count = 912 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796C3215DB5BEE8DA029B57913986ECD56B8 - -Count = 913 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A99DCB3B31F94547EA0CBA0C5BA0DCBE9 - -Count = 914 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A94E589E6BD9337B26E8FE35FD9E1A682F - -Count = 915 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DAA39C0F23D0E274A990DFBA33EAF69A0 - -Count = 916 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1215E0375021B087D683DA3440A707A1621 - -Count = 917 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D4885312147B455C85DE1F68D14F0E1F390D2DBAF7 - -Count = 918 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD0ECE83D92044430395F220BA51C71ECAC - -Count = 919 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD9EB62D6E6339A4B24DA0E35E130737441 - -Count = 920 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8ACEEE90F9D19B1D3577EE799E517190CA - -Count = 921 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D1DF20ABB708E9054A0677C19E1291C694 - -Count = 922 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A93001054D72B0F9E006C7F45D1202D8ADD3 - -Count = 923 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C7C01227A6708152CD85614B42C0A164A - -Count = 924 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB1138630E220CABB4E5585F512DC7870EE60C3 - -Count = 925 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67E0E30207C5BA3578B1B6A16FA9C13714E - -Count = 926 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D91AFE6A65DBE6B79470271F38824DCC3B - -Count = 927 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A5C17BCA428F4309B31FB28F4CA224123B - -Count = 928 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FBC3C39D7B0D620040552C91BFA95241A - -Count = 929 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC778CC1BF6F2BB52E6E77923671FE807E - -Count = 930 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059133887F1DCC8149D2C808DD32475EBFE - -Count = 931 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F8A43F540410ED9DA78A62BFF19FFD54A - -Count = 932 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC36507D169E2A7386E88AEDEF2CF85BE3 - -Count = 933 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888021A78F5B773488567D97C75802E5023 - -Count = 934 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC51E70A25F34F002920EF1CD083DB5A6C - -Count = 935 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE5C03BEF8662C1DCC17ABAA38A1FC65FE2 - -Count = 936 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2F47236EAB23EA3F7C5522B2F80C24150 - -Count = 937 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5581D77AB23D3322AAFB07FEB207A3890A - -Count = 938 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF7ED4BBEFF592B131207683B75C2076B4 - -Count = 939 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A410E783BE5F1B4FEAF899DB5E1C7DCF0928 - -Count = 940 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEDBAE87BA2F0EF6C9D0325377BDBA1B3A - -Count = 941 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A8941DAA09F21E79423E3554E32CC025EE4 - -Count = 942 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD5E027D21B035DFC9C4FFF13EAC7DA236 - -Count = 943 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730E0B86E912D11D58E92DA9BDC8D9CCC537 - -Count = 944 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F33D94DB6E5970090DC17323AD94DF9AE - -Count = 945 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA6B018930DCE05B039F6ED9C161BCB6F5A - -Count = 946 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53DD29B295D9ABAE386C3D6048602EFC78 - -Count = 947 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A9828EF209CF303422A60D2618025DA5BD05 - -Count = 948 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFA180012668CEA0FC43B851FF5C544ADBF - -Count = 949 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D40AB9556C6FA8F2A93E23127E486A62E - -Count = 950 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E7739EC3A7E9B08F35F4CF7037E472B004 - -Count = 951 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E77B632E569EABA78EAF59D8BC4B719F9 - -Count = 952 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FF38302D70014C733CC226A2A2F45B05C - -Count = 953 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE7ED64BE35D90DA37AA37DF82EDE36DA56 - -Count = 954 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115D043045FA26DB875D3CC138D70309E12 - -Count = 955 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306F7F08DCC004E1124766E0DCDC3F444FDA - -Count = 956 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4FC14B3C8ABA177E3D7858BF46965CAD31 - -Count = 957 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBE143538367F6E20F9AF324B314C8BC92 - -Count = 958 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEA8F5FEFEEBECC2C87B6D20D286E57200F - -Count = 959 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D9784CFD928F8FAAD4E353571B3C02B8A5D0 - -Count = 960 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58CF56F4D25C025AC43753B57A780915894 - -Count = 961 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC3FE92BDB4610C0CDF49816FAC3DD6B104 - -Count = 962 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC21843978418FA934A5A04EBCA369475BB8 - -Count = 963 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D8B90A23893857939E99BE953D86486E5A - -Count = 964 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F97596FF51A4CA0DF5E2B316EA9FE58F0CE - -Count = 965 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC84F9E05C5FBB63ECF627B6C01D61F5081A - -Count = 966 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888833D861C9D4597FEA74AAF3B5BB57A0F1D - -Count = 967 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC693F822191C747E17507F46CB00CD73D8C - -Count = 968 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE53069818EA777F2BC835FE5220E8BD6A66A - -Count = 969 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E17F56A87D5B3BEDC9A794F34391097808 - -Count = 970 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505D83BEB1384AF00A9FCF7CA27CF873236 - -Count = 971 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D345976E4D5A483045D3EE40F10A9E550 - -Count = 972 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102F06691BA2FBB55B91FFB34D1E27447998 - -Count = 973 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEB23A4853362402096CEF71EF2E6AFBAAE - -Count = 974 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC162186848021E29268C16C5DD589F976 - -Count = 975 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F29FFE78650C0ECA34862E53C481330EB - -Count = 976 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF55FAAAA7060F50496229256BC08C5C0F3 - -Count = 977 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1D04EB5FCD29884C31810D6CDA0456B878 - -Count = 978 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA6627A7640FCBA4F0291BA8C5678C958C727 - -Count = 979 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53511F454C26989B6E1709C54B08DD460DBC - -Count = 980 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A98244C0429FE55C4BF0A2E04CC85E2299BDFE - -Count = 981 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAEDD02DDAC6C6AA9E7476617C7B3ED9385 - -Count = 982 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34C9139E4CCB0FB035204B6D6CE6C6AFFA - -Count = 983 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E7870341C92644A360694C89A771E193B5A3 - -Count = 984 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B6846B91D5F7401C58DEA06B0FFF34A6F - -Count = 985 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC3A612627EBD881F80971F7C8AF0AF25A1 - -Count = 986 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE7250C94D7037DB9594EC6E4E4898C7A9FD6 - -Count = 987 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E061058CC9D37543D5EF0D44E5E0526EC0 - -Count = 988 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FED8A9C478CE2A737C2BAD99CC472372134 - -Count = 989 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F5703CFCFF5D3EE762B13FC6343029658BF - -Count = 990 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCA56D751579E326047725FE5FF7C20BC8 - -Count = 991 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEAD2BB8D82902B17A349C36631BB610CAC33 - -Count = 992 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D978EE4C9C5356C3CD0D7B6CB063D481E2B4D6 - -Count = 993 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58C4329540F8C93C0B968D91F4CEF2FF0FAD6 - -Count = 994 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC32CB5CFFEF5D3E8D2DE965CD6E162D60EA5 - -Count = 995 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC2193A13213BFD5EA456E10C707C39050158D - -Count = 996 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D800381738A6B5C851A24B39C6C52816B408 - -Count = 997 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F97902FA024EA9CFC6199E760665C937A093B - -Count = 998 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC84153ECF688C4D783E8A00DAA3FD93DCDE36 - -Count = 999 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888831D135D17DA914104B915707C6C409E309D - -Count = 1000 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC6903B229E6D0E14304D8848A78D193E3DE2F - -Count = 1001 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE530E5A79282F8819B722221CA7C818107BBE6 - -Count = 1002 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E1140A20A80437DC114DF162FEDA53664894 - -Count = 1003 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505DB64117965291AF1E6DA80AC51C3A0EAA0 - -Count = 1004 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D4E965D476AB53AD9AAB54A81282FD42EEB - -Count = 1005 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102FDEB0231EF80369F2B52CCEEC6A75F4DD25 - -Count = 1006 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEBD3203FD2A2A608477F33EB433F75607A73 - -Count = 1007 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC3E3378F20E773C2A1167BE48CA9EAB78AF - -Count = 1008 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F2DCE588390F8125A4B552B36AC566D8B2E - -Count = 1009 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF5284541F4BA7AD1747AB88A86D830727032 - -Count = 1010 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1DC54FEFB98634D815D255DBEB6141F7C2D0 - -Count = 1011 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA662BBDFEB6EDA39BC609FE20C6730002FE494 - -Count = 1012 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53516966AEF02E97815B67FB2F42CB31DBA6F9 - -Count = 1013 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A9824416747EBFE01F19402A06CC9144B1A801A4 - -Count = 1014 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAE62C32778975109B7CA3759370095745CE2 - -Count = 1015 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34AD65BD0075156E4C92628A8572ECE8DF24 - -Count = 1016 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E787B4022D38DAB650E34DEECF35136102B64E - -Count = 1017 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B425FD89147A7082BB6CFBB5E70AD557D82 - -Count = 1018 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC39FF3CD39F6DA939F75AD8BBA2C1698C508 - -Count = 1019 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE7255497C59322424D9426874DEC92B05D8EA3 - -Count = 1020 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E08DC49EEFB0DEFA1DB4C26EE4B38EF43405 - -Count = 1021 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FEDF5AA7F8DBF1CF54B4898CAE46680967F85 - -Count = 1022 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F57452D649671DB6D7653001F0947AC37A379 - -Count = 1023 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCADF86130FA70E67BEC99AA0C4886D7345E - -Count = 1024 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEAD2DA65B30B0ACCC36BA960737D163B806D32 - -Count = 1025 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D978EE8E794C41A8DE1B20508CE7B64F5187AF6C - -Count = 1026 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58C4355EA18D0EB3E50D916490B645BF4377CF8 - -Count = 1027 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC32CD4BD49E28AC474CA58BD4BE4768E1C34AA - -Count = 1028 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC219387FA708F7B2377916F06E6936A18FCA2C9 - -Count = 1029 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D8000098B446EEA2809D410953FE57090F1A8B - -Count = 1030 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F979080D45CEACB2036D0CA7E8D042BD338C5E5 - -Count = 1031 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC84157505BA51FCF1DFA37DF0D8053CAD4CBFD5 - -Count = 1032 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888831D952ACF345C7E72D4EAD3190AAC6115D83E - -Count = 1033 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC6903782ED369A39CF024FE12947416C9FF25C0 - -Count = 1034 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE530E5ECE480C33EE9B7F16FFBB923B19725E889 - -Count = 1035 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E1142588040EB00A8366154556D6877147DF32 - -Count = 1036 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505DB54EA9C5599089A90A6E10FA497ECC5E61D - -Count = 1037 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D4E87543FDC15DFBDC7A86E083B59252D07D8 - -Count = 1038 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102FDED3EC0CD39D474C58FF7B92EFCEA2C50E14 - -Count = 1039 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEBD3B48FD77CF9BD3F0F930D252FB3914E6859 - -Count = 1040 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC3ED349788B6873856FBDDA6348F6159642D4 - -Count = 1041 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F2D46227AD14380B2A7F2B36E50176FABD906 - -Count = 1042 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF528D49E4815BBA3EE34515F6224500C14CEF0 - -Count = 1043 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1DC5F2A83631EAB14C3B6109DD81C1FB1407E0 - -Count = 1044 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA662BB39C299BCFD54C029011B5A16CD048492B7 - -Count = 1045 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53516981FCE35C000BDF7A6EDAA661BF433D314D - -Count = 1046 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A98244165C9432824F03A7C18BFFC987D76BA56D78 - -Count = 1047 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAE628A43321D3FAB966B3264AE16C757624FF6 - -Count = 1048 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34AD9F0F6F924971B9FBD97EC664D9C17C001C - -Count = 1049 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E787B4787CAD13067F6440FC2163B4C8897BDF58 - -Count = 1050 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B42824863E866072B25D20BFFA832A5EE5C1B - -Count = 1051 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC39F216C77B8320EFF6C64C73F98CE9B1A68B4 - -Count = 1052 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE72554E69D0AEF2CEBFC058BB810316B9329537C - -Count = 1053 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E08D8A0E1257B2F4BA89ED6A5F6300C734EBCC - -Count = 1054 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FEDF5FEB173F52B2FFEC68DF5E3F90614E20791 - -Count = 1055 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F57453552B415F5AC8BB6B5DBA37F3AFA99CAC4 - -Count = 1056 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCADA00B43508E0187446F06C8AC54CB2D9700 - -Count = 1057 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = -CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEAD2DAE240737EB5F63221B6B5BA8C1AF1B567F2 - -Count = 1058 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00 -CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D978EE8EC26FEEA3B851F89609ED89DE2E13FC43AE - -Count = 1059 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001 -CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58C43559BF895C379AF7AE332DA52B4A9CAC9C426 - -Count = 1060 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102 -CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC32CD42695AF998569D9CF70C01F83A8322B42F6 - -Count = 1061 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203 -CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC2193871EA51629161BEEED07C1AE88D7E95A571C - -Count = 1062 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001020304 -CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D800006A1A036BCEC0BBC71B52E35AEAA1B2C591 - -Count = 1063 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405 -CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F979080C9B6CDC4E53A8C638CC43C359D6EF6A0EE - -Count = 1064 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203040506 -CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC841575588CBC74B6FCC33DC3256D51D269292563 - -Count = 1065 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001020304050607 -CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888831D95AD156817A8DDFCC167CD1499D1DEF08690 - -Count = 1066 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708 -CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC6903786A526A2A7799B1272598709B0DDFAE05E4 - -Count = 1067 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203040506070809 -CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE530E5ECC110D50F5164BC42BEE3CDAE48CE7B049A - -Count = 1068 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A -CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E11425F23ADB09B4C2183265025169987A7A8B7C - -Count = 1069 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B -CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505DB545887519DAE89FDB7F6CF7A2244163777AB - -Count = 1070 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C -CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D4E879D0C3DCB42177F0D628543E554B0E3B691 - -Count = 1071 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D -CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102FDED39BD4F91C303CE514D60A08637527357AA7 - -Count = 1072 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E -CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEBD3B4C38ECB948A7FA6ECDC5012BC2714DC8255 - -Count = 1073 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F -CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC3ED33A6569265FEC0A693AFEF3C34E61B3D90E - -Count = 1074 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F2D464585D288467EDAE6815507237DCF62DE99 - -Count = 1075 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF528D4B2B8570A516A70075EE50AAE067B183221 - -Count = 1076 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1DC5F2A9C09012D04660D249A6557A79BA6594B8 - -Count = 1077 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA662BB396967249FF5EBF75DB1848564F6953533E1 - -Count = 1078 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A5351698111B98529EEAFF7E0BD1D41D496CBA99249 - -Count = 1079 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A98244165C60762DAF943C8621229A87EDAFF317AD3D - -Count = 1080 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAE628AC0F573A56C4C6B3A1E0F00990BC43CAF64 - -Count = 1081 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34AD9F6168DCAF706905F39F4C51C6C3B8D8BB3D - -Count = 1082 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E787B478268D9DD797F94A6C15657463044BDEF47D - -Count = 1083 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B4282207CDC3D532369A7024A8CCF3BDCA4AD05 - -Count = 1084 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC39F2183F5B9DAB76BF2357367ED21BE8C835E0C - -Count = 1085 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE72554E60CC3730EE1CCF20311132999544635B374 - -Count = 1086 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E08D8AC92CE5670A2CCBD2259AB93E7D43D39EB7 - -Count = 1087 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FEDF5FEF4DB7932F49C4D2F67B002E0ADCE86B66B - -Count = 1088 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F574535D3E79D8569A7E17BF6FF7080DF6E947B12 - -Count = 1089 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCADA04A47B9E1731E9679190165412401BD62AB - diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/api.h b/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/api.h deleted file mode 100644 index a4aa567..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/crypto_aead.h deleted file mode 100644 index 6f4ee42..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/crypto_aead.h +++ /dev/null @@ -1,13 +0,0 @@ -//API required by the NIST for the LWC competition -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); - -//API required by the NIST for the LWC competition -int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, - 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); diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/encrypt.c b/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/encrypt.c deleted file mode 100644 index 8b819f8..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/encrypt.c +++ /dev/null @@ -1,261 +0,0 @@ -#include "skinny128.h" -#include "romulus.h" -#include - -//Encryption and authentication using Romulus-N1 -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) { - - u32 tmp; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - memset(state, 0x00, BLOCKBYTES); - tks.tk1[0] = 0x01; // Init 56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the associated data ----------------- - if (adlen == 0) { // Handle the special case of no AD - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else { // Process double blocks but the last - SET_DOMAIN(tks, 0x08); - while (adlen > 2*BLOCKBYTES) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - // Pad and process the left-over blocks - UPDATE_CTR(tks.tk1); - if (adlen == 2*BLOCKBYTES) { // Left-over complete double block - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x18); - } else if (adlen > BLOCKBYTES) { // Left-over partial double block - adlen -= BLOCKBYTES; - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - } else if (adlen == BLOCKBYTES) { // Left-over complete single block - XOR_BLOCK(state, state, ad); - SET_DOMAIN(tks, 0x18); - } else { // Left-over partial single block - for(int i = 0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; // Padding - SET_DOMAIN(tks, 0x1A); - } - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } - // ----------------- Process the associated data ----------------- - - // ----------------- Process the plaintext ----------------- - memset(tks.tk1, 0x00, KEYBYTES/2); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - if (mlen == 0) { - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x15); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else { // Process all blocks except the last - SET_DOMAIN(tks, 0x04); - while (mlen > BLOCKBYTES) { - RHO(state,c,m); - UPDATE_CTR(tks.tk1); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - c += BLOCKBYTES; - m += BLOCKBYTES; - mlen -= BLOCKBYTES; - } - // Pad and process the last block - UPDATE_CTR(tks.tk1); - if (mlen < BLOCKBYTES) { // Last message single block is full - for(int i = 0; i < (int)mlen; i++) { - tmp = m[i]; // Use of tmp variable in case c = m - c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= (u8)tmp; - } - state[15] ^= (u8)mlen; // Padding - SET_DOMAIN(tks, 0x15); - } else { // Last message single block is partial - RHO(state,c,m); - SET_DOMAIN(tks, 0x14); - } - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - c += mlen; - } - // ----------------- Process the plaintext ----------------- - - // ----------------- Generate the tag ----------------- - G(c,state); - // ----------------- Generate the tag ----------------- - - return 0; -} - - -//Decryption and tag verification using Romulus-N1 -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) { - - u32 tmp; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - *mlen = clen - TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - memset(state, 0x00, BLOCKBYTES); - tks.tk1[0] = 0x01; // Init 56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the associated data ----------------- - if (adlen == 0) { // Handle the special case of no AD - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else { // Process double blocks except the last - SET_DOMAIN(tks, 0x08); - while (adlen > 2*BLOCKBYTES) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - // Pad and process the left-over blocks - UPDATE_CTR(tks.tk1); - if (adlen == 2*BLOCKBYTES) { // Left-over complete double block - XOR_BLOCK(state, state, ad); - tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x18); - } else if (adlen > BLOCKBYTES) { // Left-over partial double block - adlen -= BLOCKBYTES; - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; - tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - } else if (adlen == BLOCKBYTES) { // Left-over complete single block - XOR_BLOCK(state, state, ad); - SET_DOMAIN(tks, 0x18); - } else { // Left-over partial single block - for(int i = 0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; // Padding - SET_DOMAIN(tks, 0x1A); - } - tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(tks.rtk); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } - // ----------------- Process the associated data ----------------- - - // ----------------- Process the ciphertext ----------------- - clen -= TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES/2); - tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter - if (clen == 0) { - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x15); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } else { // Process all blocks except the last - SET_DOMAIN(tks, 0x04); - while (clen > BLOCKBYTES) { - RHO_INV(state,c,m); - UPDATE_CTR(tks.tk1); - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - c += BLOCKBYTES; - m += BLOCKBYTES; - clen -= BLOCKBYTES; - } - // Pad and process the last block - UPDATE_CTR(tks.tk1); - if (clen < BLOCKBYTES) { // Last message double block is partial - for(int i = 0; i < (int)clen; i++) { - m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= m[i]; - } - state[15] ^= (u8)clen; // Padding - SET_DOMAIN(tks, 0x15); - } else { // Last message double block is full - RHO_INV(state,c,m); - SET_DOMAIN(tks, 0x14); - } - tkschedule_perm_tk1(tks.rtk1, tks.tk1); - skinny128_384(state, tks.rtk, state, tks.rtk1); - } - // ----------------- Process the plaintext ----------------- - - // ----------------- Generate and check the tag ----------------- - G(state,state); - tmp = 0; - for(int i = 0; i < TAGBYTES; i++) - tmp |= state[i] ^ c[clen+i]; // Constant-time tag comparison - // ----------------- Generate and check the tag ----------------- - - return tmp; -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/romulus.h b/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/romulus.h deleted file mode 100644 index 4c0e141..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/romulus.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef ROMULUSN1_H_ -#define ROMULUSN1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef struct { - u8 tk1[16]; //to manipulate tk1 in a byte-wise manner - u32 rtk1[32]; //to avoid recomputation of the tk schedule - u32 rtk[4*SKINNY128_384_ROUNDS];//all round tweakeys -} skinny_128_384_tks; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) - -//G as defined in the Romulus specification in a 32-bit word-wise manner -#define G(x,y) ({ \ - tmp = ((u32*)(y))[0]; \ - ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[1]; \ - ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[2]; \ - ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[3]; \ - ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ -}) - -//update the counter in tk1 in a 32-bit word-wise manner -#define UPDATE_CTR(tk1) ({ \ - tmp = ((u32*)(tk1))[1]; \ - ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ - ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ - ((u32*)(tk1))[1] |= tmp & 0xff000000; \ - ((u32*)(tk1))[0] <<= 1; \ - if ((tmp >> 23) & 0x01) \ - ((u32*)(tk1))[0] ^= 0x95; \ -}) - -//x <- y ^ z for 128-bit blocks -#define XOR_BLOCK(x,y,z) ({ \ - ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ - ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ - ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ - ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ -}) - - -//Rho as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO(x,y,z) ({ \ - G(pad,x); \ - XOR_BLOCK(y, pad, z); \ - XOR_BLOCK(x, x, z); \ -}) - -//Rho inverse as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO_INV(x, y, z) ({ \ - G(pad, x); \ - XOR_BLOCK(z, pad, y); \ - XOR_BLOCK(x, x, z); \ -}) - -#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.h b/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.h deleted file mode 100644 index 7f53b7d..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -#define SKINNY128_384_ROUNDS 40 - -extern void skinny128_384(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1); -extern void tkschedule_lfsr(u32* rtk, const u8* tk2, const u8* tk3, const int rounds); -extern void tkschedule_perm(u32* rtk); -extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1); - - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.s b/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.s deleted file mode 100644 index 2f938a0..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/armcortexm/skinny128.s +++ /dev/null @@ -1,1706 +0,0 @@ -/******************************************************************************* -* ARM assembly implementation of fixsliced SKINNY-128-384. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -*******************************************************************************/ - -.syntax unified -.thumb - -/******************************************************************************* -* applies P^2 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p2: - movw r1, #0xcc00 - movt r1, #0xcc00 //r1 <- 0xcc00cc00 - movw r10, #0xcc00 - movt r10, #0x0033 //r10<- 0xcc000033 - and r11, r1, r6, ror #14 - bfi r11, r6, #16, #8 - and r12, r6, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r6 - orr r11, r11, r12, lsr #8 - and r12, r6, #0x00cc0000 - orr r6, r11, r12, lsr #18 - and r11, r1, r7, ror #14 - bfi r11, r7, #16, #8 - and r12, r7, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r7 - orr r11, r11, r12, lsr #8 - and r12, r7, #0x00cc0000 - orr r7, r11, r12, lsr #18 - and r11, r1, r8, ror #14 - bfi r11, r8, #16, #8 - and r12, r8, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r8 - orr r11, r11, r12, lsr #8 - and r12, r8, #0x00cc0000 - orr r8, r11, r12, lsr #18 - and r11, r1, r9, ror #14 - bfi r11, r9, #16, #8 - and r12, r9, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r9 - orr r11, r11, r12, lsr #8 - and r12, r9, #0x00cc0000 - orr r9, r11, r12, lsr #18 - bx lr - -/******************************************************************************* -* applies P^4 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p4: - str.w r14, [sp] //store r14 on the stack - movw r14, #0x00cc - movt r14, #0xcc00 //r14<- 0xcc0000cc - movw r12, #0xcc00 - movt r12, #0x3300 //r12<- 0x3300cc00 - movw r11, #0x00cc - movt r11, #0x00cc //r11<- 0x00cc00cc - and r10, r14, r6, ror #22 - and r1, r12, r6, ror #16 - orr r10, r10, r1 - and r1, r6, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r6, r6, r1 - orr r6, r10, r6, ror #24 - and r10, r14, r7, ror #22 - and r1, r12, r7, ror #16 - orr r10, r10, r1 - and r1, r7, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r7, r7, r1 - orr r7, r10, r7, ror #24 - and r10, r14, r8, ror #22 - and r1, r12, r8, ror #16 - orr r10, r10, r1 - and r1, r8, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r8, r8, r1 - orr r8, r10, r8, ror #24 - and r10, r14, r9, ror #22 - ldr.w r14, [sp] //restore r14 - and r12, r12, r9, ror #16 - orr r10, r10, r12 - and r12, r9, r11 - orr r10, r10, r12, lsr #2 - movw r12, #0xcc33 //r1 <- 0x0000cc33 - and r9, r9, r12 - orr r9, r10, r9, ror #24 - bx lr - -/******************************************************************************* -* applies P^6 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p6: - movw r1, #0x3333 //r1 <- 0x00003333 - movw r12, #0x00cc - movt r12, #0x3300 //r12<- 0x330000cc - and r10, r6, r1, ror #8 // --- permute r6 6 times - and r11, r12, r6, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r6, ror #10 - orr r11, r11, r10 - and r10, r6, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r6, #0x00003300 - orr r6, r11, r10, lsl #2 // permute r6 6 times --- - and r10, r7, r1, ror #8 // --- permute r7 6 times - and r11, r12, r7, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r7, ror #10 - orr r11, r11, r10 - and r10, r7, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r7, #0x00003300 - orr r7, r11, r10, lsl #2 // permute r7 6 times --- - and r10, r8, r1, ror #8 // --- permute r8 6 times - and r11, r12, r8, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r8, ror #10 - orr r11, r11, r10 - and r10, r8, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r8, #0x00003300 - orr r8, r11, r10, lsl #2 // permute r8 6 times --- - and r10, r9, r1, ror #8 // --- permute r9 6 times - and r11, r12, r9, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r9, ror #10 - orr r11, r11, r10 - and r10, r9, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r9, #0x00003300 // permute r9 6 times --- - orr r9, r11, r10, lsl #2 - bx lr - -/******************************************************************************* -* applies P^8 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p8: - movw r12, #0x3333 //r12<- 0x00003333 - movw r1, #0x0000 - movt r1, #0x33cc //r1 <- 0x33cc0000 - and r10, r6, r1 // --- permute r6 8 times - and r11, r1, r6, ror #8 - orr r11, r11, r10, ror #24 - and r10, r6, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r6, r12, lsl #8 - orr r6, r11, r10, lsr #6 // permute r6 8 times --- - and r10, r7, r1 // --- permute r7 8 times - and r11, r1, r7, ror #8 - orr r11, r11, r10, ror #24 - and r10, r7, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r7, r12, lsl #8 - orr r7, r11, r10, lsr #6 // permute r7 8 times --- - and r10, r8, r1 // --- permute r8 8 times - and r11, r1, r8, ror #8 - orr r11, r11, r10, ror #24 - and r10, r8, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r8, r12, lsl #8 - orr r8, r11, r10, lsr #6 // permute r8 8 times --- - and r10, r9, r1 // --- permute r9 8 times - and r11, r1, r9, ror #8 - orr r11, r11, r10, ror #24 - and r10, r9, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r9, r12, lsl #8 - orr r9, r11, r10, lsr #6 // permute r9 8 times --- - bx lr - -/******************************************************************************* -* applies P^10 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p10: - movw r12, #0x0033 - movt r12, #0x3300 //r12<- 0x33000033 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r10, r6, r1, ror #8 // --- permute r6 10 times - and r11, r12, r6, ror #26 - orr r11, r11, r10, ror #8 - and r10, r6, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r6, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r6, #0x0000cc00 - orr r6, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r7, r1, ror #8 // --- permute r6 10 times - and r11, r12, r7, ror #26 - orr r11, r11, r10, ror #8 - and r10, r7, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r7, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r7, #0x0000cc00 - orr r7, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r8, r1, ror #8 // --- permute r6 10 times - and r11, r12, r8, ror #26 - orr r11, r11, r10, ror #8 - and r10, r8, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r8, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r8, #0x0000cc00 - orr r8, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r9, r1, ror #8 // --- permute r6 10 times - and r11, r12, r9, ror #26 - orr r11, r11, r10, ror #8 - and r10, r9, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r9, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r9, #0x0000cc00 - orr r9, r11, r10, lsr #2 // permute r6 10 times --- - bx lr - -/******************************************************************************* -* applies P^12 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p12: - str.w r14, [sp] //store r14 on the stack - movw r14, #0xcc33 //r14<- 0x0000cc33 - movw r12, #0x00cc - movt r12, #0x00cc //r12<- 0x00cc00cc - movw r1, #0x3300 - movt r1, #0xcc00 //r1 <- 0xcc003300 - and r10, r14, r6, ror #8 // --- permute r6 12 times - and r11, r12, r6, ror #30 - orr r11, r11, r10 - and r10, r1, r6, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r6, r10, ror #8 - orr r6, r11, r10, ror #10 // permute r6 12 times --- - and r10, r14, r7, ror #8 // --- permute r7 12 times - and r11, r12, r7, ror #30 - orr r11, r11, r10 - and r10, r1, r7, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r7, r10, ror #8 - orr r7, r11, r10, ror #10 // permute r7 12 times --- - and r10, r14, r8, ror #8 // --- permute r8 12 times - and r11, r12, r8, ror #30 - orr r11, r11, r10 - and r10, r1, r8, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r8, r10, ror #8 - orr r8, r11, r10, ror #10 // permute r8 12 times --- - and r10, r14, r9, ror #8 // --- permute r9 12 times - and r11, r12, r9, ror #30 - orr r11, r11, r10 - and r10, r1, r9, ror #16 - ldr.w r14, [sp] - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r9, r10, ror #8 - orr r9, r11, r10, ror #10 // permute r9 12 times --- - bx lr - -/******************************************************************************* -* applies P^14 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p14: - movw r1, #0xcc00 - movt r1, #0x0033 //r1 <- 0x0033cc00 - movw r12, #0xcc00 - movt r12, #0xcc00 //r12<- 0x33003300 - and r10, r1, r6, ror #24 // --- permute r6 14 times - and r11, r6, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r6, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r6, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r6, r12 - orr r6, r11, r10, ror #18 // permute r6 14 times --- - and r10, r1, r7, ror #24 // --- permute r7 14 times - and r11, r7, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r7, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r7, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r7, r12 - orr r7, r11, r10, ror #18 // permute r7 14 times --- - and r10, r1, r8, ror #24 // --- permute r8 14 times - and r11, r8, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r8, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r8, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r8, r12 - orr r8, r11, r10, ror #18 // permute r8 14 times --- - and r10, r1, r9, ror #24 // --- permute r9 14 times - and r11, r9, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r9, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r9, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r9, r12 - orr r9, r11, r10, ror #18 // permute r9 14 times --- - bx lr - -.align 2 -packing: - eor r12, r2, r2, lsr #3 - and r12, r12, r10 - eor r2, r2, r12 - eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - eor r12, r3, r3, lsr #3 - and r12, r12, r10 - eor r3, r3, r12 - eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r12, r4, r4, lsr #3 - and r12, r12, r10 - eor r4, r4, r12 - eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r12, r5, r5, lsr #3 - and r12, r12, r10 - eor r5, r5, r12 - eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r12, r2, r4, lsr #2 - and r12, r12, r11 - eor r2, r2, r12 - eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r12, r2, r3, lsr #4 - and r12, r12, r11, lsr #2 - eor r2, r2, r12 - eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r12, r2, r5, lsr #6 - and r12, r12, r11, lsr #4 - eor r2, r2, r12 - eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r12, r4, r3, lsr #2 - and r12, r12, r11, lsr #2 - eor r4, r4, r12 - eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r12, r4, r5, lsr #4 - and r12, r12, r11, lsr #4 - eor r4, r4, r12 - eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r12, r3, r5, lsr #2 - and r12, r12, r11, lsr #4 - eor r3, r3, r12 - eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - bx lr - -/****************************************************************************** -* Compute LFSR2(TK2) ^ LFSR3(TK3) for all rounds. -* Performing both at the same time allows to save some memory accesses. -******************************************************************************/ -@ void tkschedule_lfsr(u32* tk, const u8* tk2, const u8* tk3, const int rounds) -.global tkschedule_lfsr -.type tkschedule_lfsr,%function -.align 2 -tkschedule_lfsr: - push {r0-r12, r14} - ldr.w r3, [r1, #8] //load tk2 (3rd word) - ldr.w r4, [r1, #4] //load tk2 (2nd word) - ldr.w r5, [r1, #12] //load tk2 (4th word) - ldr.w r12, [r1] //load tk2 (1st word) - mov r1, r2 //move tk3 address in r1 - mov r2, r12 //move 1st tk2 word in r2 - movw r10, #0x0a0a - movt r10, #0x0a0a //r10 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r7 <- 0x30303030 - bl packing //pack tk2 - mov r6, r2 //move tk2 from r2-r5 to r6-r9 - mov r7, r3 //move tk2 from r2-r5 to r6-r9 - mov r8, r4 //move tk2 from r2-r5 to r6-r9 - mov r9, r5 //move tk2 from r2-r5 to r6-r9 - ldr.w r3, [r1, #8] //load tk3 (3rd word) - ldr.w r4, [r1, #4] //load tk3 (2nd word) - ldr.w r5, [r1, #12] //load tk3 (4th) word) - ldr.w r2, [r1] //load tk3 (1st) word) - bl packing //pack tk3 - eor r10, r10, r10, lsl #4 //r10<- 0xaaaaaaaa - ldr.w r1, [sp, #12] //load loop counter in r1 - eor r11, r2, r6 //tk2 ^ tk3 (1st word) - eor r12, r3, r7 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r4, r8 //tk2 ^ tk3 (3rd word) - eor r12, r5, r9 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #8 //store in tk - loop: - and r12, r8, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r6 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r6, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r3, r10 // --- apply LFSR3 to tk3 - eor r12, r5, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r5, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r5, r7 //tk2 ^ tk3 (1st word) - eor r12, r2, r8 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r3, r9 //tk2 ^ tk3 (3rd word) - eor r12, r4, r6 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r9, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r7 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r7, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r2, r10 // --- apply LFSR3 to tk3 - eor r12, r4, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r4, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r4, r8 //tk2 ^ tk3 (1st word) - eor r12, r5, r9 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r2, r6 //tk2 ^ tk3 (3rd word) - eor r12, r3, r7 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r6, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r8 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r8, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r5, r10 // --- apply LFSR3 to tk3 - eor r12, r3, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r3, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r3, r9 //tk2 ^ tk3 (1st word) - eor r12, r4, r6 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r5, r7 //tk2 ^ tk3 (3rd word) - eor r12, r2, r8 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r7, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r9 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r9, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r4, r10 // --- apply LFSR3 to tk3 - eor r12, r2, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r2, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r2, r6 //tk2 ^ tk3 (1st word) - eor r12, r3, r7 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r4, r8 //tk2 ^ tk3 (3rd word) - eor r12, r5, r9 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - subs.w r1, r1, #8 //decrease loop counter by 8 - bne loop - pop {r0-r12, r14} - bx lr - -@ void tkschedule_perm(u32* tk) -.global tkschedule_perm -.type tkschedule_perm,%function -.align 2 -tkschedule_perm: - push {r0-r12, lr} - sub.w sp, #4 //to store r14 in subroutines - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r6, r6, r10 //tk &= 0xf0f0f0f0 (1st word) - and r7, r7, r10 //tk &= 0xf0f0f0f0 (2nd word) - and r8, r8, r10 //tk &= 0xf0f0f0f0 (3rd word) - and r9, r9, r10 //tk &= 0xf0f0f0f0 (4th word) - eor r8, r8, #0x00000004 //add rconst - eor r9, r9, #0x00000040 //add rconst - mvn r9, r9 //to remove a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 1st round - strd r6, r7, [r0], #8 //store 2nd half tk for 1st round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 2nd round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000100 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 3rd round - strd r6, r7, [r0], #8 //store 2nd half tk for 3rd round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 5th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 5th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 4th round - strd r8, r9, [r0], #24 //store 2nd half tk for 4th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 6th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x00400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 6th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - eor r9, r9, #0x00000400 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 7th round - strd r6, r7, [r0], #8 //store 2nd half tk for 7th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - eor r12, r12, #0x00000040 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 9th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000054 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 9th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r8, r8, #0x00010000 - eor r8, r8, #0x00000410 - eor r9, r9, #0x00000410 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 8th round - strd r8, r9, [r0], #24 //store 2nd half tk for 8th round - ldm r0, {r6-r9} //load tk - bl p10 //apply the permutation 10 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x00000100 //add rconst - eor r12, r12, #0x00000100 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 10th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 10th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r6, r6, #0x04000000 //add rconst - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - eor r9, r9, #0x00000100 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 11th round - strd r6, r7, [r0], #8 //store 2nd half tk for 11th round - ldm r0, {r6-r9} //load tk - bl p12 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 13th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00140000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 13th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x04000000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 12th round - strd r8, r9, [r0], #24 //store 2nd half tk for 12th round - ldm r0, {r6-r9} //load tk - bl p14 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 14th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x01400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 14th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 //add rconst - eor r8, r8, #0x00004400 //add rconst - eor r9, r9, #0x00000400 //add const - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 15th round - strd r6, r7, [r0], #8 //store 2nd half tk for 15th round - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - eor r11, r11, #0x00000040 //add rconst - eor r12, r12, #0x00000040 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 17th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000004 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 17th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r7 ,r7, #0x00000010 - eor r8, r8, #0x00000010 - eor r8, r8, #0x00010000 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 16th round - strd r8, r9, [r0], #24 //store 2nd half tk for 16th round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x00000100 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 18th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000040 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 18th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x40000000 //add rconst - eor r8, r8, #0x00000100 //add rconst - eor r9, r9, #0x04000000 //add rconst - eor r9, r9, #0x00000100 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 19th round - strd r6, r7, [r0], #8 //store 2nd half tk for 19th round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 21th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00100000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 21th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r8, r8, #0x04100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 20th round - strd r8, r9, [r0], #24 //store 2nd half tk for 20th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 22th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 22th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 23th round - strd r6, r7, [r0], #8 //store 2nd half tk for 23th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #24] //store 2nd half tk for 25th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000014 //add rconst - eor r12, r12, #0x00000040 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 25th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r8, r8, #0x00010400 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 24th round - strd r8, r9, [r0], #24 //store 2nd half tk for 24th round - ldm r0, {r6-r9} //load tk - bl p10 //apply the permutation 10 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 26th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 26th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x40000000 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 27th round - strd r6, r7, [r0], #8 //store 2nd half tk for 27th round - ldm r0, {r6-r9} //load tk - bl p12 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 29th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 29th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r8, r8, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 28th round - strd r8, r9, [r0], #24 //store 2nd half tk for 28th round - ldm r0, {r6-r9} //load tk - bl p14 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 30th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 30th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 31th round - strd r6, r7, [r0], #8 //store 2nd half tk for 31th round - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #24] //store 2nd half tk for 33th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000014 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 33th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r8, r8, #0x00010400 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 32th round - strd r8, r9, [r0], #24 //store 2nd half tk for 32th round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 34th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 34th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 35th round - strd r6, r7, [r0], #8 //store 2nd half tk for 35th round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 37th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 37th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 36th round - strd r8, r9, [r0], #24 //store 2nd half tk for 36th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 38th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x00400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 38th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x00000400 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 39th round - strd r6, r7, [r0], #8 //store 2nd half tk for 39th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0x3030 - movt r10, #0x3030 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000010 - eor r8, r8, #0x00010000 - eor r8, r8, #0x00000010 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 40th round - strd r8, r9, [r0] //store 2nd half tk for 40th round - add.w sp, #4 - pop {r0-r12, lr} - bx lr - -/****************************************************************************** -* Applies the permutations P^2, ..., P^14 for rounds 0 to 16. Since P^16=Id, we -* don't need more calculations as no LFSR is applied to TK1. -******************************************************************************/ -@ void tkschedule_perm_tk1(u32* tk, const u8* key) -.global tkschedule_perm_tk1 -.type tkschedule_perm_tk1,%function -.align 2 -tkschedule_perm_tk1: - push {r0-r12, lr} - ldr.w r3, [r1, #8] //load tk1 (3rd word) - ldr.w r4, [r1, #4] //load tk1 (2nd word) - ldr.w r5, [r1, #12] //load tk1 (4th word) - ldr.w r2, [r1] //load tk1 (1st word) - movw r10, #0x0a0a - movt r10, #0x0a0a //r6 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r7 <- 0x30303030 - bl packing //pack tk1 - mov r6, r2 //move tk1 from r2-r5 to r6-r9 - mov r7, r3 //move tk1 from r2-r5 to r6-r9 - mov r8, r4 //move tk1 from r2-r5 to r6-r9 - mov r9, r5 //move tk1 from r2-r5 to r6-r9 - movw r2, #0xf0f0 - movt r2, #0xf0f0 //r2<- 0xf0f0f0f0 - and r11, r8, r2 //tk &= 0xf0f0f0f0 (3rd word) - and r12, r9, r2 //tk &= 0xf0f0f0f0 (4th word) - strd r11, r12, [r0], #8 //store 1st half tk for 1st round - and r11, r6, r2 //tk &= 0xf0f0f0f0 (1st word) - and r12, r7, r2 //tk &= 0xf0f0f0f0 (2nd word) - strd r11, r12, [r0], #8 //store 2nd half tk for 1st round - - bl p2 //apply the permutation twice - movw r3, #0x0303 - movt r3, #0x0303 //r3<- 0x03030303 - and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #8] - and r11, r3, r7, ror #28 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #12] - and r11, r3, r9, ror #28 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #4] - and r11, r3, r8, ror #28 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 4 times - and r11, r2, r6, ror #16 //ror and mask to match fixslicing - and r12, r2, r7, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 5th round - and r11, r2, r8, ror #16 //ror and mask to match fixslicing - and r12, r2, r9, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 5th round - bl p2 //apply the permutation 6 times - and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #8] - and r11, r3, r7, ror #12 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #12] - and r11, r3, r9, ror #12 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #4] - and r11, r3, r8, ror #12 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 8 times - and r11, r2, r6 //ror and mask to match fixslicing - and r12, r2, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 9th round - and r11, r2, r8 //ror and mask to match fixslicing - and r12, r2, r9 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 9th round - bl p2 //apply the permutation 10 - and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #8] - and r11, r3, r7, ror #28 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #12] - and r11, r3, r9, ror #28 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #4] - and r11, r3, r8, ror #28 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 12 times - and r11, r2, r6, ror #16 //ror and mask to match fixslicing - and r12, r2, r7, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 5th round - and r11, r2, r8, ror #16 //ror and mask to match fixslicing - and r12, r2, r9, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 5th round - bl p2 //apply the permutation 14 times - and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #8] - and r11, r3, r7, ror #12 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #12] - and r11, r3, r9, ror #12 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #4] - and r11, r3, r8, ror #12 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0] //ror and masks to match fixslicing --- - pop {r0-r12, lr} - bx lr - -.align 2 -quadruple_round: - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rtk_2_3 + rconst - eor r3, r3, r9 //add rtk_2_3 + rconst - eor r4, r4, r10 //add rtk_2_3 + rconst - eor r5, r5, r11 //add rtk_2_3 + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #30 // --- mixcolumns 0 --- - eor r2, r2, r8, ror #24 - and r8, r7, r2, ror #18 - eor r2, r2, r8, ror #2 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #4 - and r8, r7, r3, ror #30 - eor r3, r3, r8, ror #24 - and r8, r7, r3, ror #18 - eor r3, r3, r8, ror #2 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #4 - and r8, r7, r4, ror #30 - eor r4, r4, r8, ror #24 - and r8, r7, r4, ror #18 - eor r4, r4, r8, ror #2 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #4 - and r8, r7, r5, ror #30 - eor r5, r5, r8, ror #24 - and r8, r7, r5, ror #18 - eor r5, r5, r8, ror #2 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #4 - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - and r8, r7, r2, ror #16 // --- mixcolumns 1 --- - eor r2, r2, r8, ror #30 - and r8, r7, r2, ror #28 - eor r2, r2, r8 - and r8, r7, r2, ror #16 - eor r2, r2, r8, ror #2 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #30 - and r8, r7, r3, ror #28 - eor r3, r3, r8 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #2 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #30 - and r8, r7, r4, ror #28 - eor r4, r4, r8 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #2 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #30 - and r8, r7, r5, ror #28 - eor r5, r5, r8 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #2 - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rtk_2_3 + rconst - eor r3, r3, r9 //add rtk_2_3 + rconst - eor r4, r4, r10 //add rtk_2_3 + rconst - eor r5, r5, r11 //add rtk_2_3 + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #10 // --- mixcolumns 2 --- - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #6 - and r8, r7, r2, ror #26 - eor r2, r2, r8 - and r8, r7, r3, ror #10 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #6 - and r8, r7, r3, ror #26 - eor r3, r3, r8 - and r8, r7, r4, ror #10 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #6 - and r8, r7, r4, ror #26 - eor r4, r4, r8 - and r8, r7, r5, ror #10 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #6 - and r8, r7, r5, ror #26 - eor r5, r5, r8 - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - ldmia r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - and r8, r7, r2, ror #4 // --- mixcolumns 3 --- - eor r2, r2, r8, ror #26 - and r8, r7, r2 - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #4 - eor r2, r2, r8, ror #22 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #26 - and r8, r7, r3 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #22 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #26 - and r8, r7, r4 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #22 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #26 - and r8, r7, r5 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #22 - bx lr - -/****************************************************************************** -* Encrypt a single block using fixsliced SKINNY-128-128. -******************************************************************************/ -@ void skinny128_384(u8* ctext, const u32* tk, const u8* ptext) -.global skinny128_384 -.type skinny128_384,%function -.align 2 -skinny128_384: - push {r0-r12, r14} - mov.w r0, r3 - ldr.w r3, [r2, #8] - ldr.w r4, [r2, #4] - ldr.w r5, [r2, #12] - ldr.w r2, [r2] - movw r6, #0x0a0a - movt r6, #0x0a0a //r6 <- 0x0a0a0a0a - movw r7, #0x3030 - movt r7, #0x3030 //r7 <- 0x30303030 - eor r12, r2, r2, lsr #3 - and r12, r12, r6 - eor r2, r2, r12 - eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - eor r12, r3, r3, lsr #3 - and r12, r12, r6 - eor r3, r3, r12 - eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r12, r4, r4, lsr #3 - and r12, r12, r6 - eor r4, r4, r12 - eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r12, r5, r5, lsr #3 - and r12, r12, r6 - eor r5, r5, r12 - eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r12, r2, r4, lsr #2 - and r12, r12, r7 - eor r2, r2, r12 - eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r12, r2, r3, lsr #4 - and r12, r12, r7, lsr #2 - eor r2, r2, r12 - eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r12, r2, r5, lsr #6 - and r12, r12, r7, lsr #4 - eor r2, r2, r12 - eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r12, r4, r3, lsr #2 - and r12, r12, r7, lsr #2 - eor r4, r4, r12 - eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r12, r4, r5, lsr #4 - and r12, r12, r7, lsr #4 - eor r4, r4, r12 - eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r12, r3, r5, lsr #2 - and r12, r12, r7, lsr #4 - eor r3, r3, r12 - eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - movw r6, #0x5555 - movt r6, #0x5555 //r6 <- 0x55555555 - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #128 // rtk1 repeats every 16 rounds - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #128 // rtk1 repeats every 16 rounds - bl quadruple_round - bl quadruple_round - movw r6, #0x0a0a - movt r6, #0x0a0a //r6 <- 0x0a0a0a0a - eor r10, r3, r5, lsr #2 - and r10, r10, r7, lsr #4 - eor r3, r3, r10 - eor r5, r5, r10, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - eor r10, r4, r5, lsr #4 - and r10, r10, r7, lsr #4 - eor r4, r4, r10 - eor r5, r5, r10, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r10, r4, r3, lsr #2 - and r10, r10, r7, lsr #2 - eor r4, r4, r10 - eor r3, r3, r10, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r10, r2, r5, lsr #6 - and r10, r10, r7, lsr #4 - eor r2, r2, r10 - eor r5, r5, r10, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r10, r2, r3, lsr #4 - and r10, r10, r7, lsr #2 - eor r2, r2, r10 - eor r3, r3, r10, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r10, r2, r4, lsr #2 - and r10, r10, r7 - eor r2, r2, r10 - eor r4, r4, r10, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r10, r5, r5, lsr #3 - and r10, r10, r6 - eor r5, r5, r10 - eor r5, r5, r10, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r10, r4, r4, lsr #3 - and r10, r10, r6 - eor r4, r4, r10 - eor r4, r4, r10, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r10, r3, r3, lsr #3 - and r10, r10, r6 - eor r3, r3, r10 - eor r3, r3, r10, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r10, r2, r2, lsr #3 - and r10, r10, r6 - eor r2, r2, r10 - eor r2, r2, r10, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - ldr.w r0, [sp], #4 - strd r2, r4, [r0] - strd r3, r5, [r0, #8] - pop {r1-r12,r14} - bx lr - \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/api.h b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/api.h deleted file mode 100644 index a4aa567..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/crypto_aead.h deleted file mode 100644 index e2ca9b0..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/crypto_aead.h +++ /dev/null @@ -1,18 +0,0 @@ - -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 -); - -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 -); \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/encrypt.c b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/encrypt.c deleted file mode 100644 index fb144a9..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/encrypt.c +++ /dev/null @@ -1,270 +0,0 @@ -#include "skinny128.h" -#include "tk_schedule.h" -#include "romulus.h" -#include -#include - -//Encryption and authentication using Romulus-N1 -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) { - - int i; - u32 tmp; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - memset(state, 0x00, BLOCKBYTES); - tks.tk1[0] = 0x01; //56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the associated data ----------------- - //Handle the special case of no associated data - if (adlen == 0) { - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else { - // Process all double blocks except the last - SET_DOMAIN(tks, 0x08); - while (adlen > 2*BLOCKBYTES) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - //Pad and process the left-over blocks - UPDATE_CTR(tks.tk1); - if (adlen == 2*BLOCKBYTES) { - // Left-over complete double block - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x18); - } else if (adlen > BLOCKBYTES) { - // Left-over partial double block - adlen -= BLOCKBYTES; - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - } else if (adlen == BLOCKBYTES) { - // Left-over complete single block - XOR_BLOCK(state, state, ad); - SET_DOMAIN(tks, 0x18); - } else { - // Left-over partial single block - for(i =0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; - SET_DOMAIN(tks, 0x1A); - } - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } - // ----------------- Process the associated data ----------------- - - // ----------------- Process the plaintext ----------------- - memset(tks.tk1, 0, KEYBYTES); - tks.tk1[0] = 0x01; //init the 56-bit LFSR counter - if (mlen == 0) { - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x15); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else { - //process all blocks except the last - SET_DOMAIN(tks, 0x04); - while (mlen > BLOCKBYTES) { - RHO(state,c,m); - UPDATE_CTR(tks.tk1); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - c += BLOCKBYTES; - m += BLOCKBYTES; - mlen -= BLOCKBYTES; - } - //pad and process the last block - UPDATE_CTR(tks.tk1); - if (mlen < BLOCKBYTES) { - for(i = 0; i < (int)mlen; i++) { - tmp = m[i]; //use of tmp variable just in case 'c = m' - c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= (u8)tmp; - } - state[15] ^= (u8)mlen; //padding - SET_DOMAIN(tks, 0x15); - } else { - RHO(state,c,m); - SET_DOMAIN(tks, 0x14); - } - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - c += mlen; - } - // ----------------- Process the plaintext ----------------- - - // ----------------- Generate the tag ----------------- - G(state, state); - memcpy(c, state, TAGBYTES); - // ----------------- Generate the tag ----------------- - - return 0; -} - - -//Decryption and tag verification using Romulus-N1 -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) { - - int i; - u32 tmp; - skinny_128_384_tks tks; - u8 state[BLOCKBYTES], pad[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - *mlen = clen - TAGBYTES; - memset(tks.tk1, 0x00, KEYBYTES); - memset(state, 0x00, BLOCKBYTES); - tks.tk1[0] = 0x01; //56-bit LFSR counter - // ----------------- Initialization ----------------- - - // ----------------- Process the associated data ----------------- - //Handle the special case of no associated data - if (adlen == 0) { - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else { - // Process all double blocks except the last - SET_DOMAIN(tks, 0x08); - while (adlen > 2*BLOCKBYTES) { - UPDATE_CTR(tks.tk1); - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - ad += 2*BLOCKBYTES; - adlen -= 2*BLOCKBYTES; - } - //Pad and process the left-over blocks - UPDATE_CTR(tks.tk1); - if (adlen == 2*BLOCKBYTES) { - // Left-over complete double block - XOR_BLOCK(state, state, ad); - precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x18); - } else if (adlen > BLOCKBYTES) { - // Left-over partial double block - adlen -= BLOCKBYTES; - XOR_BLOCK(state, state, ad); - memcpy(pad, ad + BLOCKBYTES, adlen); - memset(pad + adlen, 0x00, 15 - adlen); - pad[15] = adlen; - precompute_rtk2_3(tks.rtk2_3, pad, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x1A); - } else if (adlen == BLOCKBYTES) { - // Left-over complete single block - XOR_BLOCK(state, state, ad); - SET_DOMAIN(tks, 0x18); - } else { - // Left-over partial single block - for(i =0; i < (int)adlen; i++) - state[i] ^= ad[i]; - state[15] ^= adlen; - SET_DOMAIN(tks, 0x1A); - } - precompute_rtk2_3(tks.rtk2_3, npub, k); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } - // ----------------- Process the associated data ----------------- - - // ----------------- Process the ciphertext ----------------- - clen -= TAGBYTES; - memset(tks.tk1, 0, KEYBYTES); - tks.tk1[0] = 0x01; //init the 56-bit LFSR counter - if (clen == 0) { - UPDATE_CTR(tks.tk1); - SET_DOMAIN(tks, 0x15); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } else { - //process all blocks except the last - SET_DOMAIN(tks, 0x04); - while (clen > BLOCKBYTES) { - RHO_INV(state,c,m); - UPDATE_CTR(tks.tk1); - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - c += BLOCKBYTES; - m += BLOCKBYTES; - clen -= BLOCKBYTES; - } - //pad and process the last block - UPDATE_CTR(tks.tk1); - if (clen < BLOCKBYTES) { - for(i = 0; i < (int)clen; i++) { - m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); - state[i] ^= m[i]; - } - state[15] ^= (u8)clen; //padding - SET_DOMAIN(tks, 0x15); - } else { - RHO_INV(state,c,m); - SET_DOMAIN(tks, 0x14); - } - precompute_rtk1(tks.rtk1, tks.tk1); - skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); - } - // ----------------- Process the plaintext ----------------- - - // ----------------- Generate and check the tag ----------------- - G(state,state); - tmp = 0; - for(i = 0; i < TAGBYTES; i++) - tmp |= state[i] ^ c[clen+i]; //constant-time tag comparison - // ----------------- Generate and check the tag ----------------- - - return tmp; -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/romulus.h b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/romulus.h deleted file mode 100644 index 3a70219..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/romulus.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef ROMULUSN1_H_ -#define ROMULUSN1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef struct { - u8 tk1[16]; //to manipulate tk1 byte-wise - u32 rtk1[4*16]; //to avoid tk schedule recomputations - u32 rtk2_3[4*SKINNY128_384_ROUNDS]; //all round tweakeys -} skinny_128_384_tks; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) - -//G as defined in the Romulus specification in a 32-bit word-wise manner -#define G(x,y) ({ \ - tmp = ((u32*)(y))[0]; \ - ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[1]; \ - ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[2]; \ - ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ - tmp = ((u32*)(y))[3]; \ - ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ -}) - -//update the counter in tk1 in a 32-bit word-wise manner -#define UPDATE_CTR(tk1) ({ \ - tmp = ((u32*)(tk1))[1]; \ - ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ - ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ - ((u32*)(tk1))[1] |= tmp & 0xff000000; \ - ((u32*)(tk1))[0] <<= 1; \ - if ((tmp >> 23) & 0x01) \ - ((u32*)(tk1))[0] ^= 0x95; \ -}) - -//x <- y ^ z for 128-bit blocks -#define XOR_BLOCK(x,y,z) ({ \ - ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ - ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ - ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ - ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ -}) - - -//Rho as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO(x,y,z) ({ \ - G(pad,x); \ - XOR_BLOCK(y, pad, z); \ - XOR_BLOCK(x, x, z); \ -}) - -//Rho inverse as defined in the Romulus specification -//use pad as a tmp variable in case y = z -#define RHO_INV(x, y, z) ({ \ - G(pad, x); \ - XOR_BLOCK(z, pad, y); \ - XOR_BLOCK(x, x, z); \ -}) - -#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.c b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.c deleted file mode 100644 index a1061d5..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.c +++ /dev/null @@ -1,107 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of the SKINNY tweakable block ciphers. -* -* This implementation doesn't compute the ShiftRows operation. Some masks and -* shifts are applied during the MixColumns operation so that the proper bits -* are XORed together. Moreover, the row permutation within the MixColumns -* is omitted, as well as the bit permutation at the end of the Sbox. The rows -* are synchronized with the classical after only 4 rounds. Therefore, this -* implementation relies on a "QUADRUPLE_ROUND" routine. -* -* The Sbox computation takes advantage of some symmetry in the 8-bit Sbox to -* turn it into a 4-bit S-box computation. Although the last bit permutation -* within the Sbox is not computed, the bit ordering is synchronized with the -* classical representation after 2 calls. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include -#include "skinny128.h" -#include "tk_schedule.h" - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void mixcolumns_0(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],24) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,30); - tmp = ROR(state[i],16) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,4); - tmp = ROR(state[i],8) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 1 -******************************************************************************/ -void mixcolumns_1(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 2 -******************************************************************************/ -void mixcolumns_2(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],8) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,6); - tmp = ROR(state[i],16) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],24) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 3 -******************************************************************************/ -void mixcolumns_3(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x30303030; - state[i] ^= ROR(tmp,4); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,26); - } -} - -/****************************************************************************** -* Encryption of a single block without any operation mode using SKINNY-128-384. -* RTK1 and RTK2_3 are given separately to take advantage of the fact that -* TK2 and TK3 remains the same through the entire data encryption/decryption. -******************************************************************************/ -void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, - const u32* rtk2_3) { - u32 tmp; // used in SWAPMOVE macro - u32 state[4]; // 128-bit state - packing(state, ptext); // from byte to bitsliced representation - QUADRUPLE_ROUND(state, rtk1, rtk2_3); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); - QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); - QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); - QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); - QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); - QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); - QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); - unpacking(ctext, state); // from bitsliced to byte representation -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.h b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.h deleted file mode 100644 index bda1e9b..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/skinny128.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); - -#define SKINNY128_384_ROUNDS 40 - -#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[0] ^= (rtk1)[0]; \ - state[1] ^= (rtk1)[1]; \ - state[2] ^= (rtk1)[2]; \ - state[3] ^= (rtk1)[3]; \ - state[0] ^= (rtk2_3)[0]; \ - state[1] ^= (rtk2_3)[1]; \ - state[2] ^= (rtk2_3)[2]; \ - state[3] ^= (rtk2_3)[3]; \ - mixcolumns_0(state); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[0] ^= (rtk1)[4]; \ - state[1] ^= (rtk1)[5]; \ - state[2] ^= (rtk1)[6]; \ - state[3] ^= (rtk1)[7]; \ - state[0] ^= (rtk2_3)[4]; \ - state[1] ^= (rtk2_3)[5]; \ - state[2] ^= (rtk2_3)[6]; \ - state[3] ^= (rtk2_3)[7]; \ - mixcolumns_1(state); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[0] ^= (rtk1)[8]; \ - state[1] ^= (rtk1)[9]; \ - state[2] ^= (rtk1)[10]; \ - state[3] ^= (rtk1)[11]; \ - state[0] ^= (rtk2_3)[8]; \ - state[1] ^= (rtk2_3)[9]; \ - state[2] ^= (rtk2_3)[10]; \ - state[3] ^= (rtk2_3)[11]; \ - mixcolumns_2(state); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[0] ^= (rtk1)[12]; \ - state[1] ^= (rtk1)[13]; \ - state[2] ^= (rtk1)[14]; \ - state[3] ^= (rtk1)[15]; \ - state[0] ^= (rtk2_3)[12]; \ - state[1] ^= (rtk2_3)[13]; \ - state[2] ^= (rtk2_3)[14]; \ - state[3] ^= (rtk2_3)[15]; \ - mixcolumns_3(state); \ -}) - - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.c b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.c deleted file mode 100644 index 1da4277..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.c +++ /dev/null @@ -1,368 +0,0 @@ -/****************************************************************************** -* Implementation of the SKINNY tweakey schedule to match fixslicing. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include //for memcmp -#include "tk_schedule.h" -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; - -/****************************************************************************** -* The round constants according to the new representation. -******************************************************************************/ -u32 rconst_32_bs[160] = { - 0x00000004, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000100, 0xfffffeff, 0x44000000, 0xfbffffff, 0x00000000, 0x04000000, - 0x00100000, 0x00100000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, - 0x00400000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffbfffff, - 0x01004000, 0xfefffbff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, - 0x00010410, 0xfffffbef, 0x00000054, 0xffffffaf, 0x00000000, 0x00000040, - 0x00000100, 0x00000100, 0x10000140, 0xfffffeff, 0x44000000, 0xfffffeff, - 0x04000000, 0x04000000, 0x00100000, 0x00100000, 0x04000001, 0xfbffffff, - 0x00140000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x00000000, - 0x01401000, 0xfebfffff, 0x01004400, 0xfffffbff, 0x00000000, 0x00000400, - 0x00000010, 0x00000010, 0x00010010, 0xffffffff, 0x00000004, 0xffffffaf, - 0x00000040, 0x00000040, 0x00000100, 0x00000000, 0x10000140, 0xffffffbf, - 0x40000100, 0xfbfffeff, 0x00000000, 0x04000000, 0x00100000, 0x00000000, - 0x04100001, 0xffefffff, 0x00440000, 0xffefffff, 0x00000000, 0x00400000, - 0x01000000, 0x01000000, 0x00401000, 0xffffffff, 0x00004000, 0xfeffffff, - 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00010400, 0xfffffbff, - 0x00000014, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000100, 0xffffffff, 0x40000000, 0xfbffffff, 0x00000000, 0x04000000, - 0x00100000, 0x00000000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, - 0x00000000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffffffff, - 0x00004000, 0xfeffffff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, - 0x00010400, 0xfffffbff, 0x00000014, 0xffffffaf, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x10000140, 0xfffffeff, 0x44000000, 0xffffffff, - 0x00000000, 0x04000000, 0x00100000, 0x00100000, 0x00000001, 0xffefffff, - 0x00440000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x01000000, - 0x01401000, 0xffbfffff, 0x01004000, 0xfffffbff, 0x00000400, 0x00000400, - 0x00000010, 0x00000000, 0x00010010, 0xfffffbff -}; - -/****************************************************************************** -* Pack the input into the bitsliced representation -* 24 28 56 60 88 92 120 124 | ... | 0 4 32 36 64 68 96 100 -* 25 29 57 61 89 93 121 125 | ... | 1 5 33 37 65 69 97 101 -* 26 30 58 62 90 94 122 126 | ... | 2 6 34 38 66 70 98 102 -* 27 31 59 63 91 95 123 127 | ... | 3 7 35 39 67 71 99 103 -******************************************************************************/ -void packing(u32* out, const u8* in) { - u32 tmp; - LE_LOAD(out, in); - LE_LOAD(out + 1, in + 8); - LE_LOAD(out + 2, in + 4); - LE_LOAD(out + 3, in + 12); - SWAPMOVE(out[0], out[0], 0x0a0a0a0a, 3); - SWAPMOVE(out[1], out[1], 0x0a0a0a0a, 3); - SWAPMOVE(out[2], out[2], 0x0a0a0a0a, 3); - SWAPMOVE(out[3], out[3], 0x0a0a0a0a, 3); - SWAPMOVE(out[2], out[0], 0x30303030, 2); - SWAPMOVE(out[1], out[0], 0x0c0c0c0c, 4); - SWAPMOVE(out[3], out[0], 0x03030303, 6); - SWAPMOVE(out[1], out[2], 0x0c0c0c0c, 2); - SWAPMOVE(out[3], out[2], 0x03030303, 4); - SWAPMOVE(out[3], out[1], 0x03030303, 2); -} - -/****************************************************************************** -* Unpack the input to a byte-wise representation -******************************************************************************/ -void unpacking(u8* out, u32 *in) { - u32 tmp; - SWAPMOVE(in[3], in[1], 0x03030303, 2); - SWAPMOVE(in[3], in[2], 0x03030303, 4); - SWAPMOVE(in[1], in[2], 0x0c0c0c0c, 2); - SWAPMOVE(in[3], in[0], 0x03030303, 6); - SWAPMOVE(in[1], in[0], 0x0c0c0c0c, 4); - SWAPMOVE(in[2], in[0], 0x30303030, 2); - SWAPMOVE(in[0], in[0], 0x0a0a0a0a, 3); - SWAPMOVE(in[1], in[1], 0x0a0a0a0a, 3); - SWAPMOVE(in[2], in[2], 0x0a0a0a0a, 3); - SWAPMOVE(in[3], in[3], 0x0a0a0a0a, 3); - LE_STORE(out, in[0]); - LE_STORE(out + 8, in[1]); - LE_STORE(out + 4, in[2]); - LE_STORE(out + 12, in[3]); -} - -/****************************************************************************** -* 0 4 1 5 -* 1 5 ---> 2 6 -* 2 6 3 7 -* 3 7 4 0 -******************************************************************************/ -void lfsr2_bs(u32* tk) { - u32 tmp; - tmp = tk[0] ^ (tk[2] & 0xaaaaaaaa); - tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); - tk[0] = tk[1]; - tk[1] = tk[2]; - tk[2] = tk[3]; - tk[3] = tmp; -} - -/****************************************************************************** -* 0 4 7 3 -* 1 5 ---> 0 4 -* 2 6 1 5 -* 3 7 2 6 -******************************************************************************/ -void lfsr3_bs(u32* tk) { - u32 tmp; - tmp = tk[3] ^ ((tk[1] & 0xaaaaaaaa) >> 1); - tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); - tk[3] = tk[2]; - tk[2] = tk[1]; - tk[1] = tk[0]; - tk[0] = tmp; -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, twice -******************************************************************************/ -void permute_tk_2(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,14) & 0xcc00cc00; - tk[i] |= (tmp & 0x000000ff) << 16; - tk[i] |= (tmp & 0xcc000000)>> 2; - tk[i] |= (tmp & 0x0033cc00) >> 8; - tk[i] |= (tmp & 0x00cc0000) >>18; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 4 times -******************************************************************************/ -void permute_tk_4(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,22) & 0xcc0000cc; - tk[i] |= ROR(tmp,16) & 0x3300cc00; - tk[i] |= ROR(tmp, 24) & 0x00cc3300; - tk[i] |= (tmp & 0x00cc00cc) >> 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 6 times -******************************************************************************/ -void permute_tk_6(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,6) & 0xcccc0000; - tk[i] |= ROR(tmp,24) & 0x330000cc; - tk[i] |= ROR(tmp,10) & 0x3333; - tk[i] |= (tmp & 0xcc) << 14; - tk[i] |= (tmp & 0x3300) << 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 8 times -******************************************************************************/ -void permute_tk_8(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0xcc000033; - tk[i] |= ROR(tmp,8) & 0x33cc0000; - tk[i] |= ROR(tmp,26) & 0x00333300; - tk[i] |= (tmp & 0x00333300) >> 6; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 10 times -******************************************************************************/ -void permute_tk_10(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc330000; - tk[i] |= ROR(tmp,26) & 0x33000033; - tk[i] |= ROR(tmp,22) & 0x00cccc00; - tk[i] |= (tmp & 0x00330000) >> 14; - tk[i] |= (tmp & 0xcc00) >> 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 12 times -******************************************************************************/ -void permute_tk_12(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc33; - tk[i] |= ROR(tmp,30) & 0x00cc00cc; - tk[i] |= ROR(tmp,10) & 0x33330000; - tk[i] |= ROR(tmp,16) & 0xcc003300; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 14 times -******************************************************************************/ -void permute_tk_14(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0x0033cc00; - tk[i] |= ROR(tmp,14) & 0x00cc0000; - tk[i] |= ROR(tmp,30) & 0xcc000000; - tk[i] |= ROR(tmp,16) & 0x000000ff; - tk[i] |= ROR(tmp,18) & 0x33003300; - } -} - -/****************************************************************************** -* Precompute all LFSRs on TK2 -******************************************************************************/ -void precompute_lfsr_tk2(u32* tk, const u8* key, const int rounds) { - u32 tk2[4]; - packing(tk2, key); - memcpy(tk, tk2, 16); - for(int i = 0 ; i < rounds; i+=2) { - lfsr2_bs(tk2); - memcpy(tk+i*4+4, tk2, 16); - } -} - -/****************************************************************************** -* Precompute all LFSRs on TK3 -******************************************************************************/ -void precompute_lfsr_tk3(u32* tk, const u8* key, const int rounds) { - u32 tk3[4]; - packing(tk3, key); - tk[0] ^= tk3[0]; - tk[1] ^= tk3[1]; - tk[2] ^= tk3[2]; - tk[3] ^= tk3[3]; - for(int i = 0 ; i < rounds; i+=2) { - lfsr3_bs(tk3); - tk[i*4+4] ^= tk3[0]; - tk[i*4+5] ^= tk3[1]; - tk[i*4+6] ^= tk3[2]; - tk[i*4+7] ^= tk3[3]; - } -} - -/****************************************************************************** -* XOR TK with TK1 before applying the permutations. -* The key is then rearranged to match the barrel shiftrows representation. -******************************************************************************/ -void permute_tk(u32* tk, const u8* key, const int rounds) { - u32 test; - u32 tk1[4], tmp[4]; - packing(tk1, key); - memcpy(tmp, tk, 16); - tmp[0] ^= tk1[0]; - tmp[1] ^= tk1[1]; - tmp[2] ^= tk1[2]; - tmp[3] ^= tk1[3]; - for(int i = 0 ; i < rounds; i += 8) { - test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P - tk[i*4] = tmp[2] & 0xf0f0f0f0; - tk[i*4+1] = tmp[3] & 0xf0f0f0f0; - tk[i*4+2] = tmp[0] & 0xf0f0f0f0; - tk[i*4+3] = tmp[1] & 0xf0f0f0f0; - memcpy(tmp, tk+i*4+4, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_2(tmp); // applies P^2 - else - permute_tk_10(tmp); // applies P^10 - tk[i*4+4] = ROR(tmp[0],26) & 0xc3c3c3c3; - tk[i*4+5] = ROR(tmp[1],26) & 0xc3c3c3c3; - tk[i*4+6] = ROR(tmp[2],26) & 0xc3c3c3c3; - tk[i*4+7] = ROR(tmp[3],26) & 0xc3c3c3c3; - tk[i*4+8] = ROR(tmp[2],28) & 0x03030303; - tk[i*4+8] |= ROR(tmp[2],12) & 0x0c0c0c0c; - tk[i*4+9] = ROR(tmp[3],28) & 0x03030303; - tk[i*4+9] |= ROR(tmp[3],12) & 0x0c0c0c0c; - tk[i*4+10] = ROR(tmp[0],28) & 0x03030303; - tk[i*4+10] |= ROR(tmp[0],12) & 0x0c0c0c0c; - tk[i*4+11] = ROR(tmp[1],28) & 0x03030303; - tk[i*4+11] |= ROR(tmp[1],12) & 0x0c0c0c0c; - memcpy(tmp, tk+i*4+12, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_4(tmp); // applies P^4 - else - permute_tk_12(tmp); // applies P^12 - for(int j = 0; j < 4; j++) { - tk[i*4+12+j] = ROR(tmp[j],14) & 0x30303030; - tk[i*4+12+j] |= ROR(tmp[j],6) & 0x0c0c0c0c; - } - tk[i*4+16] = ROR(tmp[2], 16) & 0xf0f0f0f0; - tk[i*4+17] = ROR(tmp[3], 16) & 0xf0f0f0f0; - tk[i*4+18] = ROR(tmp[0], 16) & 0xf0f0f0f0; - tk[i*4+19] = ROR(tmp[1], 16) & 0xf0f0f0f0; - memcpy(tmp, tk+i*4+20, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_6(tmp); // applies P^6 - else - permute_tk_14(tmp); // applies P^14 - tk[i*4+20] = ROR(tmp[0], 10) & 0xc3c3c3c3; - tk[i*4+21] = ROR(tmp[1], 10) & 0xc3c3c3c3; - tk[i*4+22] = ROR(tmp[2], 10) & 0xc3c3c3c3; - tk[i*4+23] = ROR(tmp[3], 10) & 0xc3c3c3c3; - tk[i*4+24] = ROR(tmp[2],12) & 0x03030303; - tk[i*4+24] |= ROR(tmp[2],28) & 0x0c0c0c0c; - tk[i*4+25] = ROR(tmp[3],12) & 0x03030303; - tk[i*4+25] |= ROR(tmp[3],28) & 0x0c0c0c0c; - tk[i*4+26] = ROR(tmp[0],12) & 0x03030303; - tk[i*4+26] |= ROR(tmp[0],28) & 0x0c0c0c0c; - tk[i*4+27] = ROR(tmp[1],12) & 0x03030303; - tk[i*4+27] |= ROR(tmp[1],28) & 0x0c0c0c0c; - memcpy(tmp, tk+i*4+28, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_8(tmp); // applies P^8 - for(int j = 0; j < 4; j++) { - tk[i*4+28+j] = ROR(tmp[j],30) & 0x30303030; - tk[i*4+28+j] |= ROR(tmp[j],22) & 0x0c0c0c0c; - } - if (test && (i+8 < rounds)) { //only if next loop iteration - tk[i*4+32] = tmp[2] & 0xf0f0f0f0; - tk[i*4+33] = tmp[3] & 0xf0f0f0f0; - tk[i*4+34] = tmp[0] & 0xf0f0f0f0; - tk[i*4+35] = tmp[1] & 0xf0f0f0f0; - } - } -} - -/****************************************************************************** -* Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst. -******************************************************************************/ -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3) { - memset(rtk, 0x00, 16*SKINNY128_384_ROUNDS); - precompute_lfsr_tk2(rtk, tk2, SKINNY128_384_ROUNDS); - precompute_lfsr_tk3(rtk, tk3, SKINNY128_384_ROUNDS); - permute_tk(rtk, (u8*)(rtk+8), SKINNY128_384_ROUNDS); // rtk+8 is NULL - for(int i = 0; i < SKINNY128_384_ROUNDS; i++) { // add rconsts - for(int j = 0; j < 4; j++) - rtk[i*4+j] ^= rconst_32_bs[i*4+j]; - } -} - -/****************************************************************************** -* Precompute RTK1. -******************************************************************************/ -void precompute_rtk1(u32* rtk1, const u8* tk1) { - memset(rtk1, 0x00, 16*16); - permute_tk(rtk1, tk1, 16); -} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.h b/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.h deleted file mode 100644 index e1f64f8..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1+v12/opt32/tk_schedule.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef TK_SCHEDULE_H_ -#define TK_SCHEDULE_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -void packing(u32* out, const u8* in); -void unpacking(u8* out, u32 *in); -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3); -void precompute_rtk1(u32* rtk1, const u8* tk1); - -#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) - -#define XOR_BLOCKS(x,y) ({ \ - (x)[0] ^= (y)[0]; \ - (x)[1] ^= (y)[1]; \ - (x)[2] ^= (y)[2]; \ - (x)[3] ^= (y)[3]; \ -}) - -#define SWAPMOVE(a, b, mask, n) ({ \ - tmp = (b ^ (a >> n)) & mask; \ - b ^= tmp; \ - a ^= (tmp << n); \ -}) - -#define LE_LOAD(x, y) \ - *(x) = (((u32)(y)[3] << 24) | \ - ((u32)(y)[2] << 16) | \ - ((u32)(y)[1] << 8) | \ - (y)[0]); - -#define LE_STORE(x, y) \ - (x)[0] = (y) & 0xff; \ - (x)[1] = ((y) >> 8) & 0xff; \ - (x)[2] = ((y) >> 16) & 0xff; \ - (x)[3] = (y) >> 24; - -#endif // TK_SCHEDULE_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/LWC_AEAD_KAT_128_128.txt b/romulus/Implementations/crypto_aead/romulusn1+v13/LWC_AEAD_KAT_128_128.txt new file mode 100644 index 0000000..3a8b9c7 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/LWC_AEAD_KAT_128_128.txt @@ -0,0 +1,7623 @@ +Count = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = +CT = 4F42AED219ECC79F4DAF3E3BAD52AEE7 + +Count = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00 +CT = AB8FE298CF6A3261F1F6C89B2B5E3367 + +Count = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001 +CT = 0AD6EE5DE5280CC51CBCAFBFCE5E99DF + +Count = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102 +CT = 6CD9F20267266610D4F769EB602BFF17 + +Count = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203 +CT = 19733DA1D8C16E0BD5F516A15BAA5908 + +Count = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001020304 +CT = 3A6D0641C711CF5B941364035663C7E7 + +Count = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405 +CT = B48A50D9E16DA2D0BCC784DB7C126536 + +Count = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203040506 +CT = A3D9197875E4F92DA35A48B1E07483B7 + +Count = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001020304050607 +CT = B96653DC95ED31D43A9E19DA42A71ABA + +Count = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708 +CT = ACA17AF4073855420675302764B5DC89 + +Count = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203040506070809 +CT = 7D79DF409392AA600A0D11CBFD906E80 + +Count = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A +CT = 092E181F40BE039D2E3E487E7077E445 + +Count = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B +CT = DC663A1D1901CE72BE4A7F3E4C3EB0BF + +Count = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C +CT = B50DD4A972DB1D311AFC204E29515C9B + +Count = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D +CT = 0F51E7B2AF267F0F22ABCD57F9A0D8C7 + +Count = 16 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E +CT = 39C467A055B702ABA9857E2C9A7DB716 + +Count = 17 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F +CT = 413D3F77845E976AC72596E765B26B6A + +Count = 18 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10 +CT = D17F367D07F02A0F93E1DE5385529556 + +Count = 19 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 5E8F2FC2BB627A819950B081BD9046A2 + +Count = 20 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 099377EB20CE32F6C2741C0271D420BF + +Count = 21 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 67EDE73262D0E89E8563F79B2C81183F + +Count = 22 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 0A02D202AC556A7C5D63BBCB48BD7C08 + +Count = 23 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 26767C17A6F2827F555B8D821B087776 + +Count = 24 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 2FC4C0CD30343AD78C94300201C02CCC + +Count = 25 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 65374F9820E14134A09BDD2736D35374 + +Count = 26 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = DD7653B181923EE9618FEE4167C4329F + +Count = 27 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = CF0F7BBBC999218F8965B0C95734F76A + +Count = 28 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = C4C21C764765BE3CD6AD1D4B8B7C3156 + +Count = 29 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E364473014F0B6E717B31D068FFEDE07 + +Count = 30 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = DC61BD30632AFA362E341B65243E10F0 + +Count = 31 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64795075A3EFFD16C578234D83263384 + +Count = 32 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 7BAF89F08686EE2266C2A648795011A9 + +Count = 33 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 77B3BBEA06D2F03827E928080703A571 + +Count = 34 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = +CT = DED8F65782F8D7BB14448E05D7A80579C3 + +Count = 35 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00 +CT = 99A4A09B46BB14D231B8DB511AEFDBC594 + +Count = 36 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001 +CT = 51DC8ECEDEB19DB9FA94D6C99F78AC4068 + +Count = 37 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102 +CT = 255456D923B18D1E3584421C272E6B4309 + +Count = 38 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203 +CT = 2BCF40227C025F52E4B1172B1F2849C931 + +Count = 39 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001020304 +CT = CA82DBD55E79213355DC8F9FA9F3F4BD75 + +Count = 40 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405 +CT = 85168B36CD4D1609980897F74C8BDA0217 + +Count = 41 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203040506 +CT = 3714256F75518BE16DEBF9C2FFC6F50E9B + +Count = 42 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001020304050607 +CT = 06CB79EB83C7CD1F10FF9D2FA36DF223C3 + +Count = 43 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708 +CT = EE34A26BC739EEBEFC41236A6570099332 + +Count = 44 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203040506070809 +CT = 25928856FCBB01EF7D9464FFF8C011EE41 + +Count = 45 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A +CT = B08153BD9658521865618224DF9B00A4F9 + +Count = 46 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B +CT = 7322A59A9CB8441BC9AE0DFCF046B13D6A + +Count = 47 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C +CT = 411210A9F99F4A2CF09096B26FD20A98A2 + +Count = 48 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D +CT = 1A01FEBD3B88C4A0A2B9D1466F18080D48 + +Count = 49 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E +CT = 399D10DBDEFAB2060B9A8606AA261E30A3 + +Count = 50 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F +CT = 9585BE4E12DE3302AC345C29C3B064A1B6 + +Count = 51 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 306F8744B7099CA9920B6B23B79E37F0ED + +Count = 52 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86FB19886DA9F925904899E5C5A981FA73 + +Count = 53 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F62A63F16D2635F7B67F5D524824099C87 + +Count = 54 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F4D192B18070E79470941779C2B3CDA3A + +Count = 55 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89DA3E4D3117CC7B68BA512853062C8891 + +Count = 56 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 20C86CD1A407D256E2985EC8E3029D25AF + +Count = 57 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20EF479CD5969B852112131FE39173FE39 + +Count = 58 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4FBB11855F19F28CB0518C833B5D6FA5A0 + +Count = 59 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 602B9FAFF092C914879B197CCD4237A42F + +Count = 60 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5ECAB4A6B4297D72310919DDF5CAB3ABB3 + +Count = 61 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 002D6FC7E333F55FA538DB0660F3E223E0 + +Count = 62 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B299854F06DA4D94374F59CB2685743890 + +Count = 63 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D91696580EA52E25BB7DEAB904985AC075 + +Count = 64 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5FB3BEFC67B88F4540BB96993A5F77F578 + +Count = 65 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 04A69765DD560A4F45BFD450EA459A1F7A + +Count = 66 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A13C5650F4FBA3D21C87AAD5A68BC4944 + +Count = 67 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = +CT = DE2718ACE56400234A9661A0DCDCC9A2275E + +Count = 68 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00 +CT = 998DA8848EA10E49CB12604A9297BEBF607C + +Count = 69 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001 +CT = 51E3D7A2D1DE4AD1F3A711BF70AA98826B47 + +Count = 70 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102 +CT = 255E2A81D0470AEBC8F43AE4FFB75A94E36C + +Count = 71 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203 +CT = 2BB8C3732E76BB72D57288C087DC6B328EDC + +Count = 72 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001020304 +CT = CAB0EFA3D5A655759D15021239109914340B + +Count = 73 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405 +CT = 85FF0071C0D86B7D5B6F2C9F1BA59FF7CF98 + +Count = 74 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203040506 +CT = 3746A524326D49ABED3BBC21B13D8EF2E377 + +Count = 75 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001020304050607 +CT = 066DA57BDAFA88D99685FFF41A481178F8A3 + +Count = 76 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708 +CT = EE35AFEA01C42BA26EDB52265FF296862D1A + +Count = 77 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203040506070809 +CT = 252E02A72960148D822490371C9A77AE17CF + +Count = 78 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A +CT = B0C1CF61CE22A466AE4A306579614195500A + +Count = 79 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B +CT = 73F5FC6D7892EB5154DAC16F5C446DD0C1E5 + +Count = 80 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C +CT = 41AA335270650285F15BE31E376F23875011 + +Count = 81 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D +CT = 1A927483B0D97CC8F6F3CF3134450E583904 + +Count = 82 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9F75B9BCDA5685647869EE230BF06C9C0 + +Count = 83 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A96E3455040C3FDC77937A9B14E02728B5 + +Count = 84 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307855FB6E7162F75414F3A86F76B31AFABA + +Count = 85 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B31FA9A4B4429F89082B5D883418C6E443 + +Count = 86 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60A4CFA5CE8BBCB28612FF9F61F383775FA + +Count = 87 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48090FBC0D05D52E787D3C55E1C6F45F3C + +Count = 88 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BD80A5EAF691949F8E4D2094471CEDD000 + +Count = 89 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021BE7369C8B9E53A77861A72B1F853B7AF + +Count = 90 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F2AF4E332D5877E6DAB5487313EA9D0DDC + +Count = 91 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC8CF78800CA852FC0071F77F08BA14FE + +Count = 92 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034528631EC07F09B54330446B542715B20 + +Count = 93 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E4237D366CC45AE12C0677CEBD5063830CD + +Count = 94 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 000500EAA18D1587251DF97C15DCB2164157 + +Count = 95 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2D47351DBED4FC574BA3C7B73A530AE5A + +Count = 96 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C15C34940E4529FBAF37EA2D446C5FEF6 + +Count = 97 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F51C34C14159CB614BA969182F46B14C1E9 + +Count = 98 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDEC235A030E8D0C7B7F0058BDAC666B4 + +Count = 99 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B1583E92745CB460F1B552AD3107F7B3C + +Count = 100 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = +CT = DE27B34B578AE7EE9F6D724A58357E64084C57 + +Count = 101 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00 +CT = 998D77F4E8339261CFD518F2433A832C46F4FD + +Count = 102 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001 +CT = 51E3F21B221B4DD7AE0FC2EF25541E2707BDD1 + +Count = 103 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102 +CT = 255ED80EB7031E4936331A80819C97FBE82570 + +Count = 104 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203 +CT = 2BB84CC9AADDAC611381AAFADA998DCD067DB6 + +Count = 105 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001020304 +CT = CAB056EB1FCFD0FD907009155895BD3AF0A3D3 + +Count = 106 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405 +CT = 85FF408E3E8BFE90BAA972A4A7B299E120A2BF + +Count = 107 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203040506 +CT = 37466E557CE9973710C0511317DEDB74CB6770 + +Count = 108 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001020304050607 +CT = 066D38418CF06AE11DB70D0AA9B060EBB819D0 + +Count = 109 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708 +CT = EE35C5817A2C1C30C1EAAFF6F8AB22DA523C3E + +Count = 110 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203040506070809 +CT = 252EA9C1AD2621711B2077B262AD997DA80D08 + +Count = 111 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A +CT = B0C1791AD0CDBDFAFAB328867D8049F7C9614B + +Count = 112 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B +CT = 73F508EABCAFAAEC55D282A0680190A1FAC2C6 + +Count = 113 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C +CT = 41AAA967EC86257C42137E52D4CAC098D83DB5 + +Count = 114 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D +CT = 1A92684FF4DF91217387D8776D99B2B8E85640 + +Count = 115 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E +CT = 39D99070C11618D7E39491ABC21C9FDD7AE431 + +Count = 116 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC50CDA8D085A3C620C06996A4D4E7B594 + +Count = 117 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824298971AFD0B069135E2B6F15FBBF47D6 + +Count = 118 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B489242C429B0D3C25C0C469FD88601631 + +Count = 119 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADCDEBEE0E9463B31FC080C4C9E9FC1D249 + +Count = 120 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F4837C8515B917BE204D91C47E11C915E6F02 + +Count = 121 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA4D595282B7E492984987C124F64234F5 + +Count = 122 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C88A65F027427EA8E36E59F3D56097236A + +Count = 123 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20F985145EF788727B9B07850922CE6CB92 + +Count = 124 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6588C56B879455AD5B61B762C8F7C9987 + +Count = 125 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C8F15F5641F74B88FB116440A2FA7D1330 + +Count = 126 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427AD9761BD7C026E55924F578672BE20AD9 + +Count = 127 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3B98DCC1E9917593C26C6844CF5043FBD + +Count = 128 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A8D9F8B982EADA416B829A39F40A5BD391 + +Count = 129 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C095A5FBA84AEBAFB6E577A3CC101F4F59B + +Count = 130 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143AD7D8F561BE8178933DD0094B81002E8 + +Count = 131 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDB8B114BBFD7802CBC24626F14C1288CF0 + +Count = 132 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58C8A42D0A5593C303CDA102865BF90B0F + +Count = 133 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = +CT = DE27B3C150EC780A5DA9CABFCB61A149003EAEEC + +Count = 134 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00 +CT = 998D770169E944BC240A12EEAEAB23467D3A6816 + +Count = 135 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001 +CT = 51E3F265AB46992E8FDBFD423520FA2CFB0CAAE3 + +Count = 136 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102 +CT = 255ED81399E2709967472BE2DBB074EF92CE7995 + +Count = 137 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203 +CT = 2BB84CB9B5D2B0D7321FA329FC633B1289D6C6A5 + +Count = 138 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001020304 +CT = CAB056AA205A4B641B8EDB60351EA8AC668575B8 + +Count = 139 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405 +CT = 85FF40FC3858860D1CF3662E54D9BDD12B8A0C05 + +Count = 140 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203040506 +CT = 37466ECBE1AC0227375874D3719C070102ABFD1B + +Count = 141 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001020304050607 +CT = 066D386B903C627DDAB12854C79006B110C774E8 + +Count = 142 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708 +CT = EE35C5EC38EEB0D661D9292F44763596A058C59F + +Count = 143 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203040506070809 +CT = 252EA99E66968A3B6A5EBD42E2B5084CFCB81DA0 + +Count = 144 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A +CT = B0C179ACECD3EAF74BE30679DC43632D0DA6F232 + +Count = 145 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B +CT = 73F5083ACE00D369A117301A1B545430B22EA93A + +Count = 146 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C +CT = 41AAA973305ABFE091A02053CC1708CEF98A789A + +Count = 147 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D +CT = 1A926838548D1B78E650D9D0A28D632814327EEA + +Count = 148 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E +CT = 39D99068B050C98A346D42011271C6CADE6CFE81 + +Count = 149 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC01EA19FD75ECD954A077B86EE6A99AC87C + +Count = 150 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FC01557BFE8F63200FF30F896026A2E279 + +Count = 151 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DC1824C01D9282E4880EC2176A932A2790 + +Count = 152 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC64AEB5EE736F503EE6D3B5A7D997DE58B1 + +Count = 153 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B973FF11995609664FE89186F045A9D8D + +Count = 154 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA4070F09477098ADDC7ABC88B872960FDB3 + +Count = 155 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BD007510FD2868CB750A5FAC0A9C434A8 + +Count = 156 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1E268A18DB397F62A4586C7E304DC49AC + +Count = 157 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B93FF7F14E64AC2893910007D4AD532B1C + +Count = 158 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C8391E39A4D4D693D05838198CD041532237 + +Count = 159 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3AEC7446564F4E4DEF5AA9BA0512650669 + +Count = 160 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3734A21C8C6A8A86D5B85DAEBDC0BC24B7E + +Count = 161 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81DC9FFBF35CC2837801A51F22C7338346F + +Count = 162 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C092708C3531AC5037F91C626409425DE9780 + +Count = 163 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FAF5C4F8227D199EBD62B74FFEF79D3280 + +Count = 164 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAE433DA7A8DE03FE962CD0D32685081FEA + +Count = 165 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B5844B4EEE6B66291059B449BD9C478FE0124 + +Count = 166 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = +CT = DE27B3C1B49996E04DCCC8F5EFA7A7B17A5F6AD79E + +Count = 167 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00 +CT = 998D7701C1B3E03C233776521D172840D73E6A83EC + +Count = 168 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001 +CT = 51E3F26591EDE1B4D54E61944C5D246C3946BABC9A + +Count = 169 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102 +CT = 255ED813C64DDA5222B2A0B93B1F6F68A51550D573 + +Count = 170 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203 +CT = 2BB84CB90BAA1B92B3F56BE068C76FBB77EB4D61BA + +Count = 171 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001020304 +CT = CAB056AA880D228B27520A9387F6DA9F7BCA235E55 + +Count = 172 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405 +CT = 85FF40FCBF9B9A7ADD2037C37EC7314C72C2BE8288 + +Count = 173 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203040506 +CT = 37466ECBEFF5587CEFB451B781E0CC5097DC3D09E7 + +Count = 174 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001020304050607 +CT = 066D386BDC7A38ABE257D9B95EDA853B076897FC9C + +Count = 175 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708 +CT = EE35C5ECBE911F7B6DAEBA6595B4B4EE3CD025E903 + +Count = 176 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203040506070809 +CT = 252EA99EE559F40F99600E2080981149CC6CE0AB23 + +Count = 177 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A +CT = B0C179AC6924149D42BE922CA56659FE37DA00843A + +Count = 178 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B +CT = 73F5083A22E1D759272535670E83E74DC76296DDA4 + +Count = 179 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C +CT = 41AAA9737721D932D84C1E687BA57BCBF0F4FB41E0 + +Count = 180 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E431994B0E1A193E7BEBBAF40FDC03DF46 + +Count = 181 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E +CT = 39D99068499843685C23A1653445E369B91A3AAE12 + +Count = 182 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016D8A44F6799DEE64CB76B0EEC7FBF5ED21 + +Count = 183 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBDA1416B618E8EA5E908528A2836B2225D + +Count = 184 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA5C0DB4ADD793BD6E384C0A5EE575DED87 + +Count = 185 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495D13F51CFE1DB1D0D90AD36BEC34B61FD + +Count = 186 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AD561102EF48E8FA373E1E5D9ABD0C8B2 + +Count = 187 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E37BE69581FC8D54A18C55BF542A8AED56 + +Count = 188 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC865FDFEB73B4C80CB6CF647EC8AD7EA6C + +Count = 189 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF167C908744AE21F060BD92A4532AFE2EF82 + +Count = 190 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F746E0BF9546B782C79450F2E638BC32D + +Count = 191 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C7F688688AAA436EEE57592F2E67ED346B + +Count = 192 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A5956D824E3CAD5516351E979804F3555DD + +Count = 193 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F1B313E843761177B83973B055C40067B + +Count = 194 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5F7BED03483EBBF590414E1D14ED95CF87 + +Count = 195 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C9C6E7AB75132252DDB437DF3AF0BA178 + +Count = 196 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA555358CEE7D4951B3381CE6DFD4E8417B0 + +Count = 197 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF50391871C839155B57F0B4DD08008D081 + +Count = 198 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442B389361BFD50808FCB3B235561FD7E0B7 + +Count = 199 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = +CT = DE27B3C1B43ABD71B0F7C07D84B65D53ADF724FB3296 + +Count = 200 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00 +CT = 998D7701C14B373043208579E6ADFF66EB28C1106CFA + +Count = 201 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001 +CT = 51E3F26591E39541B5597FD63378217299CAE4ADBA68 + +Count = 202 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102 +CT = 255ED813C6C9C4732FCD1CD796FFE2EAAEE974383BD7 + +Count = 203 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203 +CT = 2BB84CB90B56163D26FAB3B802F9BDD0F25D054419AE + +Count = 204 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001020304 +CT = CAB056AA88F153E95AB6989AFD030AD3450A6F5D31CD + +Count = 205 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405 +CT = 85FF40FCBFEBFF44B1CE0E58EC312410B5FC5AD6E411 + +Count = 206 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203040506 +CT = 37466ECBEF0C271D27B5949D19049920F1FBBF90FA30 + +Count = 207 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001020304050607 +CT = 066D386BDC3B7A85F433D572924B6ECFD42B88EE97D9 + +Count = 208 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708 +CT = EE35C5ECBEB4CE29EFCEAF6FAC0368C9C496ED074499 + +Count = 209 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203040506070809 +CT = 252EA99EE58ED63350A4A580E1625E16B70BA544C3FC + +Count = 210 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A +CT = B0C179AC69E83FFCCC0A88847E3DAAF9285ED7490EEB + +Count = 211 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B +CT = 73F5083A228D91ACC4C4F750A1492DD17036AD57FEC2 + +Count = 212 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B363268BE09920BF0ED8D4AC542FEF8822 + +Count = 213 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E5DCBD8550618160E0BE3B8428FD5033F + +Count = 214 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E +CT = 39D990684973CC10B83508B465332BF5C789487F6D5F + +Count = 215 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1C4255B3EB0E57C93FDC7B3DD99CEB855 + +Count = 216 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD3813765E40B0E00165936E8EBFB6769C5E + +Count = 217 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E42ACC89D49F06962A69EC6BABE36BD5C + +Count = 218 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BA22C2E26C8914B2F63E88DF606B64BB4F + +Count = 219 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF7C21613F01DA7242C2FD8077F48402712 + +Count = 220 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36AD2212FF15220E10D0C6C52FBF05F7EEF + +Count = 221 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884EF4A5D7B325260A75A96812D0216EB82 + +Count = 222 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674E0C47C078985064AE41C66A0B0EE11B2E + +Count = 223 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63E4F3D01CEEBAAFA24304F2D2FB62D673 + +Count = 224 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E918B1154CC8DEA9B14A4C770E252B441 + +Count = 225 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599A0A560EDF3B53734066FE97B12286C3B0 + +Count = 226 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F20B74E34EAF798A1262A6862F0A17F65BC + +Count = 227 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5DE16D785B69814B67E3757EA618789C6 + +Count = 228 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D21F199EA3960E18BE120A44B85C6E482 + +Count = 229 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E22DF5DB2ADF8A2A460958964F4606D0C6 + +Count = 230 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519551C9C85512981B9B0BE5005F051D3F3 + +Count = 231 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBDDC1C59D55C72CA3C8D099EDD999B540F + +Count = 232 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = +CT = DE27B3C1B43A54D62518F1D00DEC368FB4F900E316568A + +Count = 233 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00 +CT = 998D7701C14BB42EA6671F633F172905E74AF11CC33DD0 + +Count = 234 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001 +CT = 51E3F26591E3BE593CDE2B4D53A478BE4E41F0C9991F76 + +Count = 235 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102 +CT = 255ED813C6C9E755D8DFD4DBE2FB1ADDBFE6A35FEDCB35 + +Count = 236 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203 +CT = 2BB84CB90B56B276FA150694A9920CDE8641E0402D5319 + +Count = 237 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001020304 +CT = CAB056AA88F11081BFC816EA54991825547B8E4DAFBA22 + +Count = 238 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405 +CT = 85FF40FCBFEB1699E54025CD9D8795C55AE334C9C775EB + +Count = 239 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203040506 +CT = 37466ECBEF0CF67577D9829043BF00DCC1493608A5BEED + +Count = 240 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001020304050607 +CT = 066D386BDC3BFD5B0E86DBDF5C43B5A82060CC82FBF348 + +Count = 241 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708 +CT = EE35C5ECBEB4F7EF61D264B45AB316650310A0AA38582E + +Count = 242 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203040506070809 +CT = 252EA99EE58EE9252C1B54E38E75CBB44658B78B4A6E96 + +Count = 243 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A +CT = B0C179AC69E858EA8587E97D8BCB17018F941F18631FCD + +Count = 244 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA411B18A63640A216FCCE84842E1E389 + +Count = 245 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B3972F781A703972C76771CADAC6AFE81D17 + +Count = 246 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79A1A3A3E7736793944B25907ACB09B638 + +Count = 247 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736ACFEA213C88299219D0F70FAF4561CBD3 + +Count = 248 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D56FCAAA1CC08D2494D27DB53543FD98DF + +Count = 249 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D1744CF85B79A21590C6D346AE0E2B25F1 + +Count = 250 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E27A27FD949222443797A4E6F64145E91AD + +Count = 251 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB58BFCBE5D5B847B7BD5906B9420665E7E + +Count = 252 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF7528668A2E81710B698298AAF65C237B749 + +Count = 253 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9DF8D42E4A5C36AF68993424EBB389CE02 + +Count = 254 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC990D48914989FC10C1813537C51C55BA + +Count = 255 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0E2E0238E7828853A4390AC67275E2D9B + +Count = 256 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA085212455CE6B80739F6EA5640C191C4 + +Count = 257 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E7752A6D5487C1299EA7DFB694DDB17F08F + +Count = 258 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB55C49E5F13A392B8763F53E62F0F27013 + +Count = 259 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091229D1AF939EBA2735783539AE5BA2DEA + +Count = 260 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EAB1B0DEBFE9BDE71DF656B4507E9F428B + +Count = 261 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D955D5AC1AA84EDA53F7C9D3AAFB2F53E0F + +Count = 262 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E2401B0EFE803DE334D9E31E177F94A46EAB + +Count = 263 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DC1C94AA2F9A92F2C6F783B9B789F1BCB0 + +Count = 264 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD1895EED27997565814639FF645489EEC03 + +Count = 265 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = +CT = DE27B3C1B43A54C25541E3558F20E16231D5A5B964932993 + +Count = 266 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00 +CT = 998D7701C14BB41DD88440E79286BB0F881C2D4D15A21A90 + +Count = 267 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001 +CT = 51E3F26591E3BE66901BFD188CDA8195238369EBDFA389BE + +Count = 268 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102 +CT = 255ED813C6C9E79EF60A4A2CA102BC2BB40A486A6B7A458D + +Count = 269 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203 +CT = 2BB84CB90B56B23C3A24D6BC347EBD84AEA43B68DC3A296A + +Count = 270 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001020304 +CT = CAB056AA88F110F780CF8C5DEF2B02DEC09518D5537E6C12 + +Count = 271 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405 +CT = 85FF40FCBFEB16F5B6E5F6B395815F3E24036D4D5C19643F + +Count = 272 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203040506 +CT = 37466ECBEF0CF6C929B3B6296031CF4D6B4B8DBD5CD168F9 + +Count = 273 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001020304050607 +CT = 066D386BDC3BFDE562EA36234D704F81F5D4EF4F4F8C94D9 + +Count = 274 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721C4E10C2EAD1F52D7BA3A2322D015F781 + +Count = 275 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD41E7F080AC6D325B836A58F6B9E7EC98 + +Count = 276 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A +CT = B0C179AC69E8583FE372995E7F3A5E88A547D3D867384A2D + +Count = 277 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA49365D30F651E04D242165876A65FC2F9 + +Count = 278 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B397586DA942529D44E6A9EC77296DE86B876D + +Count = 279 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E793326CE2061369ABE62C80775A01183CA0B + +Count = 280 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFECC3456EF2226A0DB0BE4CBE2C3A35F18 + +Count = 281 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54691177FABFCC82952712B34743DE54B39 + +Count = 282 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D15214C25638896988603686950EA6F5C529 + +Count = 283 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E2775910E80406B9D2ABAB2B44C01F37C2A45 + +Count = 284 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA3D35E376752FE3D63656D6CDE3FC63FE + +Count = 285 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A80AF9FC4EFF007EA310A32E6EA8B7D74D + +Count = 286 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D3957589F78957638B2D322258E36AEBB90 + +Count = 287 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC660BDCDB6FAD3DF1EC629736F26113AE95 + +Count = 288 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF13D84925EC641BEF382E2EF866324500 + +Count = 289 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2A103889764FDCC5FF7D593307FFDEA491 + +Count = 290 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC408B47CBF8562492B47C9A24F84D5747 + +Count = 291 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF0F3C3A97B5BBF74668B5EEBE5BBCFA80 + +Count = 292 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FD079D58D1BA432A062AE116CCEF2C6073 + +Count = 293 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA29DC6FC6258762249B6F3035F969368E46 + +Count = 294 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557627CF2979F2A7798EA9DC1515105F207 + +Count = 295 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9CA2B807EE669036CB7496E6314B45B04 + +Count = 296 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4CB659B9E46C0947928E2BED2566B71AC + +Count = 297 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F78BA6A4B49199CAF4F5877A07A7F83DFB + +Count = 298 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = +CT = DE27B3C1B43A54C25A9EC999EE85073E014C3B51BB33005AA2 + +Count = 299 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00 +CT = 998D7701C14BB41DBAB49A54B539BC64596BFB22EF2E22AAB1 + +Count = 300 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001 +CT = 51E3F26591E3BE66E22CE91A78ACF215C8844F7BBC630798EB + +Count = 301 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102 +CT = 255ED813C6C9E79E11CE5BADEF2CFEB4C405417749E0FF96C7 + +Count = 302 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203 +CT = 2BB84CB90B56B23C16B7CF6F3A938BE1324EEE0F48A97CF4E6 + +Count = 303 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001020304 +CT = CAB056AA88F110F717C4CF9B5AC5A006E69BCE3ABE9A2F38B4 + +Count = 304 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405 +CT = 85FF40FCBFEB16F5ACAC99788BF7FCB713DD70BF183DB23949 + +Count = 305 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203040506 +CT = 37466ECBEF0CF6C998DCB79668769B826DF0217FB83DA1D1C9 + +Count = 306 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56BC51ADE8D40C35B7F89F7DCF87A0F1E5E + +Count = 307 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F449CE793744EE3D2AC66A0534A54A2AA1 + +Count = 308 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9F77B1FFCE885787DC74C91A02B93AB68E + +Count = 309 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD6406C55A0454FA8D791D2E54202C72D55 + +Count = 310 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA4500C9645582EF057671305F1BA8CF7C61C + +Count = 311 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE208ACEA0DF3905DCC26958071C244BCC + +Count = 312 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E75CB0133C7EA8AD437ECB29C19671536 + +Count = 313 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9405E0CFF495953DF6976F1E0FBB4BACD + +Count = 314 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668F64F27C71C56F7BFBCCF165FAE3556AE + +Count = 315 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551E4086F7AA212973B17DC874F7C8FE07 + +Count = 316 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E27754179CD9E4DD1ACA1DAD93194A504E4C717 + +Count = 317 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA384F5E9D8BB7F0BA6C3682901859E82D46 + +Count = 318 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C6D9C20E188670E544E67C9045590C4A7C + +Count = 319 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A5836D90C1631A78B45FA73BB74A1543A7 + +Count = 320 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3E92098A96B7A4520A45952AA432B343 + +Count = 321 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8AD19F8A19686AC963D4826E34DD80E2F3 + +Count = 322 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB82101C9BCD6A9720C628BA326367B733A + +Count = 323 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0F98BD1922417F6DF1711732A2D9B0EED2 + +Count = 324 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF749D2F10933470927B1C9CEAE1CB48C28A + +Count = 325 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA37C9551BAFCDE193B1DB374B463436F95 + +Count = 326 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C93C312559D9E3D8F7AF47AED076F0CBA + +Count = 327 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D4C53964878103708501DC4363E1856960 + +Count = 328 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9574C395B565DEA49FFAA048B83F1D2282D + +Count = 329 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E6C960B0A36DA6716E98A55D313B08332B + +Count = 330 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F57EE355E2E1011A42AB5F2E013A5258C1 + +Count = 331 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = +CT = DE27B3C1B43A54C25A720B0EEE5B3A487F26AB8B14A616BDB20D + +Count = 332 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00 +CT = 998D7701C14BB41DBA9138AFBF15211BB432FEA348888655A204 + +Count = 333 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001 +CT = 51E3F26591E3BE66E2C33CBFA1F26164A7D38E8655623805A67F + +Count = 334 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102 +CT = 255ED813C6C9E79E1107B53FDFA17BBBFBD9055386C634EFFB11 + +Count = 335 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203 +CT = 2BB84CB90B56B23C16EAF248B4144648B9B942A11DEFEFFB20C9 + +Count = 336 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001020304 +CT = CAB056AA88F110F7178FDE9B3FC79A245506EF74FC44A032DF18 + +Count = 337 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7B1DF2C76818BFBBFD5B468374B80B07 + +Count = 338 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203040506 +CT = 37466ECBEF0CF6C998796069E82F058123D0EEF0EC0A9DD405A9 + +Count = 339 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07AACA3A01571CDD44E0E43203A4A0578C + +Count = 340 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3EC1674E7CDB36BC1BDF8478FB9973241 + +Count = 341 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2325C5D87F86848959AD23F8167BA44A4 + +Count = 342 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B86DED6EE3452AE7B024355866A84A966 + +Count = 343 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045D17A811C82E8D5A0258C63FB64BED07A + +Count = 344 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9EB3F19E9F017FED91D05C211CC0D54B58 + +Count = 345 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AD9A7C3D250899EAB6A55F09638058145 + +Count = 346 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B99F3229B716DDCCCEA0C10649B7730F48 + +Count = 347 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CC506839D4AC0E8115BD38944655164256 + +Count = 348 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551D566D49661802EEB44D13FCB1E2FC054C + +Count = 349 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E950266047EFB0901E26823B4B96AB47BA + +Count = 350 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B3C22BC1ED0E05300D21D2E3259E0C82B8 + +Count = 351 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C6316F99A96AFB3EC83BD798F061D7F5F301 + +Count = 352 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DA0E82EB1459F9D053E9A52CBDC3C624E + +Count = 353 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C32F240BD690C856BCDB311B6B5CE000A2C + +Count = 354 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55BF05A4A4EE578336A9A9E3CEAE582B1B + +Count = 355 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB89043FC00DA798E8CEAD28F5A8DF928E101 + +Count = 356 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED3A0E075EF46452E9AB9465FBCD3BB91 + +Count = 357 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFB5B47421E543D6929A1BDFEEC6A55BE6 + +Count = 358 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA360BB0FADA5313F4DDCA5F016A04CF21BBD + +Count = 359 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C080AEF4636189E435A8042D0809A1D927A + +Count = 360 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43BA33BDA86C651C62C9774A3F61EEAE263 + +Count = 361 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571617AD15C490A9BF3D29229118FB1E48BD + +Count = 362 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65AFE252934F92194219430C35E080FB4FF + +Count = 363 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EAD4A2F699F7607CB385CE9D92B748267B + +Count = 364 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = +CT = DE27B3C1B43A54C25A724A5B265549690C0CE6C6AEC1007F5B3617 + +Count = 365 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00 +CT = 998D7701C14BB41DBA91A2CF89F93DC9A36F3ED4F49766614CBB2A + +Count = 366 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001 +CT = 51E3F26591E3BE66E2C31CED40DF4DC0A26D30A15BF18B037CB97E + +Count = 367 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102 +CT = 255ED813C6C9E79E1107AD4D73C122CE67E272429BB8A6BB1B1BE1 + +Count = 368 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203 +CT = 2BB84CB90B56B23C16EA913827E85927B4F50B22DCEFE4AC9A5B03 + +Count = 369 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001020304 +CT = CAB056AA88F110F7178FA14DF2DFE8631FB77E56F82771E017263D + +Count = 370 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7F0151568928260700D463BDA20951E910 + +Count = 371 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203040506 +CT = 37466ECBEF0CF6C998792425E05AE24CE99DE56889EDBE35941374 + +Count = 372 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07788D2C9B70A75A392C8019AE87F9B110C0 + +Count = 373 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F137A529550D5317A1D65173C074575C9F + +Count = 374 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DFB75C8363AB5EE6CCAF4E73D6D558658A + +Count = 375 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C33B800C6BFA3464D40F40DD201D5F8B8 + +Count = 376 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA450455696CB04754450C6CEDDE3A73CBB2B6D2D + +Count = 377 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E861BB533AD748C7E07AD64FCBB9F12EA44 + +Count = 378 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB00E517E2E7BE6A26DFBB5F832086E715 + +Count = 379 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC2C400EC9DC2745C2434D6D1352ECCEEC + +Count = 380 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA079CC84132F9BDB0B18502444726D2E8C + +Count = 381 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC4876DCCFD4BE305A4A21CF880F3B50F64 + +Count = 382 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D0979E6D89FFAE752108FE03681D3A5DF + +Count = 383 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38F5883C6FDF4B0BC27BEB901C0D685AE60 + +Count = 384 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C6317459134175AE321BD051D187AF63CF2202 + +Count = 385 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE857238C6B7ECD4B6A1351543779C642B + +Count = 386 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243D2C88FA3C9592189D88AC8A257A1F978 + +Count = 387 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE1C54203D74FEB64D47C963AA84013AC4 + +Count = 388 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B5DA4CE74183CA58FDB7F6E8529093A58 + +Count = 389 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED76EDB09CF1BD9E145FF249DAE32617B25 + +Count = 390 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEB38A149816060441FB45B3003EE8EA918 + +Count = 391 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E94A52E3F1EDD6D54C2E513C767069351 + +Count = 392 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C08122D87E56DC35F85A741BC78F5824E8768 + +Count = 393 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B723A1C82D16492BE255CD23F1C1E1DCEB5 + +Count = 394 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F957165663A793227F007A35D1CAC3C7BE84CD32 + +Count = 395 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5D467F54E3708F1F95CB8794DEF58CC0BE + +Count = 396 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1BE20A5DD208616A2F7DE3BD9587DFBE9F + +Count = 397 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = +CT = DE27B3C1B43A54C25A724A5F132D2F74A13CE8DE40A2442775C881EC + +Count = 398 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00 +CT = 998D7701C14BB41DBA91A24023B53FC01A2A8AF6BFF38612E0D2E421 + +Count = 399 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDAFA62412098632D0A43E1301EF69559D + +Count = 400 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102 +CT = 255ED813C6C9E79E1107AD13E974C4752DDDAAA4F8282F639D88C2CC + +Count = 401 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203 +CT = 2BB84CB90B56B23C16EA91859EB385B2BF27FB7EE062D00B0C3F2F3D + +Count = 402 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C0C894FA25EAAF1C6F257B9F4D448775C9 + +Count = 403 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEA5AE39C47574DEAE0ECC63974D52DC650 + +Count = 404 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924ACD7260472B57B14EB473A149BE5684750 + +Count = 405 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782D1BBAEF8CCC66D4A11387554D764136B1 + +Count = 406 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18FC13BF9CCC7CEA6B3800902EFF72D4457 + +Count = 407 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E15AA09BDCC0267E9CDCDFFB2D31A0A34 + +Count = 408 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C0090148E0BB4FB8089A196FF2449127105 + +Count = 409 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C160578593315740965FB0908B3125AB7 + +Count = 410 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E860691931F816C04031EE48C5CBF9245640F + +Count = 411 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76866B97BAE5ECB4D0D1DE94686C802170 + +Count = 412 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC58477BABA416FAA9F1E58B1EAA617A3666 + +Count = 413 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DCD4CC641FEE6CADA7C81EBD19953178F1 + +Count = 414 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44EA874AC55FC80531604664C46C8A12351 + +Count = 415 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63E7477615DB609B5917C9185AB7EF73D4 + +Count = 416 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB323D969E16AFD916A07255AFCD9FE693F + +Count = 417 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E4B1A8385C3A6DD4E4A09FA6D93F1AA13 + +Count = 418 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE66D70A432A1112BB12392981660C0DB0A9 + +Count = 419 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C825C65D5A61B4288337038B2072A6D528 + +Count = 420 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE236BD52D3A49A08C2B67E72A66CB545F08 + +Count = 421 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B5264BEAEA6AB5C05FD49D24BCBFB30DF97 + +Count = 422 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C73F425C34BC72031B4733665D0BA7A087 + +Count = 423 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4CDC6D610506C82D6556F721C026BC99F + +Count = 424 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E153309E7C8D7FC9A10329410C17AD70250 + +Count = 425 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCAD712D0A45E9CBA23F37FD1C34DC5B7A + +Count = 426 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72993C5248128B6A814D371BF626C3279C70 + +Count = 427 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9032C911BD6FCDA74D177D0009C0A296D + +Count = 428 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD5F0CDDBF693FD9691E990FCA1C82F7E2 + +Count = 429 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1DC2061869B4315879279688CF86CD3E96 + +Count = 430 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = +CT = DE27B3C1B43A54C25A724A5F572C13E81827C0AC0433B21F446D5F725B + +Count = 431 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00 +CT = 998D7701C14BB41DBA91A240DAED264D9141D3E492917106F5C3406AC1 + +Count = 432 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD59F77BECF1154A5D5EE6C89B2E3E964E5 + +Count = 433 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC7965036592AA2D795865012A6EAEFEEA + +Count = 434 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8A6B7F9E955AEEBF27FC15B03B9728009 + +Count = 435 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075466E0C41679EB03A3524E8F86A6E04EF + +Count = 436 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAA42004D53BC575AFB07F5650FF37EA3F5 + +Count = 437 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC513F054655C039F5C581E6EB250986115D + +Count = 438 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF949CC6A9A9EF22720307461790F83BB6E + +Count = 439 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F72C748787C7979DE29141D374A8041E987 + +Count = 440 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E89B5F86CDB16327F182C33E9864A325FDC + +Count = 441 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C0036F27CA7A6DA61C1AE4826E4454E6719D6 + +Count = 442 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2097BDE4CCA8C3948DDBFFFED5E895C129 + +Count = 443 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E674753186E13E517FD3145E1225CEA34E + +Count = 444 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7EB755D646528F81029CB9DD468108086 + +Count = 445 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851A65A0081CE9AE669E95E53114890A995 + +Count = 446 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BB31CF3B7F35AD0F1291EF5CB19BE60A4 + +Count = 447 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E167B41EB091C45C196A8F3A0F6FCB26423 + +Count = 448 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AFC5D036DA6C8DE3C8B26ABE9B7AFAB144 + +Count = 449 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383C6FF654DC8A8E0FD77CB383F62088215 + +Count = 450 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E725FBA12951B4FC7DD9CC5D05774524B22 + +Count = 451 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE66971525E5BBD4295B9F5F65162C926092FE + +Count = 452 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C82229D4C6970E3BCCBF4C6B0A873885384E + +Count = 453 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE2340E9E34DF8587AF6E8590247DAEF1A7E32 + +Count = 454 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C01446904668BCBDBAD3DE8DEFF47E5ACE + +Count = 455 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D7474FCB2FE4B63F85C7E1271CD4FC2AB5 + +Count = 456 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E5B246DF1685D5C9E3D4F8FCC36FE1AEA7 + +Count = 457 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EB670F41BC7814CA6B0D271E0473DD8FE + +Count = 458 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD91A67C5CFF3B26B831F121AF43FC52C4B + +Count = 459 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998ECA36CAD8EFEDA95CA516457579BFFBE1 + +Count = 460 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B98240483FF4CE4B301455D1B2316D39A49C + +Count = 461 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7ED59BCAD4267E5A558F8C72D6CD2C175D + +Count = 462 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D2467D6FE75012B1D82EE546A786E96B7F0 + +Count = 463 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = +CT = DE27B3C1B43A54C25A724A5F57FCD516143D44F4D95E60AF41CBB7D67EA7 + +Count = 464 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00 +CT = 998D7701C14BB41DBA91A240DA8297DEE8EAAEDCCC5D6949C9319A646D5E + +Count = 465 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF59A3E748124D2E536220D1B6D375BA5E + +Count = 466 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC8986CB303A99E68589E376CBBEE5BFF8BF + +Count = 467 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3AC5D40C155F4943BE3C716BCB8410B84 + +Count = 468 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C07581F7E2D9CD48746B78A7215527907DCAD8 + +Count = 469 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7ADF1E728DD1EF957CE8D13B2DEB252B7 + +Count = 470 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E000148AB483E1C93994B6663FF0BEA792 + +Count = 471 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F74DB4A854DFAB87C6367A46905233D72B + +Count = 472 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254B8D0583627BB65A603492A2A64388E9D + +Count = 473 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C945FE27CD7768D1E2E19CC0B431EC85E + +Count = 474 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368DA5C8E7A4F39E63717EF9E33F2413B667 + +Count = 475 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C200808F7E6ADB713B5C18BFE5EA5F8C7E2C6 + +Count = 476 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E644627204F782E92CF589C5BC825CA86A94 + +Count = 477 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B16DD06234A7AE36BAF09EC43AE81CD9C9 + +Count = 478 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBD529820E3B05C76967534DC6AB938CE4 + +Count = 479 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC6CA110EA817DF8C099E92F80055691891 + +Count = 480 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D5F3ED127A7B9FF98D62452FF287A7F709 + +Count = 481 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66F2D97C20D1571B18578E84A91DFF266E + +Count = 482 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7219FD6DEE5447393592FB0272879D69A + +Count = 483 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC295672AE5B1FC59403B0E9C725C7CEB1 + +Count = 484 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D5C3F5F137D8F41FB11CF0B9A8E3ED7A24 + +Count = 485 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C82295889A48E50D443032AB4F99F4DCE28ECC + +Count = 486 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C143DDE4D715952DDD458EB9FBA6757D + +Count = 487 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C099D4F8690F3E5D056498C0D31604E045BE + +Count = 488 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75BE9B2E350B31C2E0BFE7ED244CCB0F519 + +Count = 489 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555BC18457121237B00CA97D3F718CB2442 + +Count = 490 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBED61D7BEB45C95C7571C510850D5C57BF + +Count = 491 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919EB2D8B4830B36245C0DDCE43B8832979 + +Count = 492 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41F60319EE1B7E90A009AA7C00D1DEDCC2 + +Count = 493 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B98236B03F0D9A77AD4F04B396D289EB5E8832 + +Count = 494 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C36F7275BF57BBE1E317CA5F5AE9C28CE + +Count = 495 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243B3D979AFA55B4733E04B71A6A6285E7AC + +Count = 496 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59CFB04993ED986092A992EDFDAC29D238 + +Count = 497 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00 +CT = 998D7701C14BB41DBA91A240DA8260486C0DAB5420A3CAB0C2F30B1C53DA89 + +Count = 498 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8C268AA461A6DE2A660E9B1B6C977541C4 + +Count = 499 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB864346939F2B630C16D0850C1805D96B + +Count = 500 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3292FC42021CA4361D3FB327BEF8BCB53AD + +Count = 501 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813764F4EC308AC0222AC0E1812CCDFA129C + +Count = 502 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C0344F02D2C6F23E58B6A71A40A34EC703 + +Count = 503 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05EA7538AD9CC731FE32F23DFB77573DA9F + +Count = 504 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784C931377253EB809B105B89EF46388772 + +Count = 505 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F72547664AC6F1DFB4AFD4543C9A5FD87519D78 + +Count = 506 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C8544A961788B4C6D3C4E3556BE833EDDA7 + +Count = 507 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DA64860E063245F00FBD957883064977F + +Count = 508 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A441654086DD7BCD2D2529D9FA81B244B0 + +Count = 509 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416AC94A12483933A272B5BA9A459C8F665 + +Count = 510 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B1490013C80D4BCECB14EE7CDFF7997D4743 + +Count = 511 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBF6E91E727DE1983AF8BA39820CD3A7759 + +Count = 512 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC64447F969D97146542EBA8D75A6C749CD02 + +Count = 513 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BAFEF778DC0A970739B28F88B81A123B5 + +Count = 514 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CF18B7D6409FCA8ACA004E187E0E5A6C55 + +Count = 515 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EE1ADB2FF6FED921ED1A41912503124C66 + +Count = 516 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51660C8D5CD22EF5450F74C0E583B7CABD + +Count = 517 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508CF1D72865D896221B971C974B58F7AFB + +Count = 518 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C82295227DAEFDC15670DEA4D863133FC25DFA0A + +Count = 519 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C6E8FCDDEC7D2F04B4E1EB1A974F05A345 + +Count = 520 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998DB01683103C69DA6D7FC2CF02DB049124 + +Count = 521 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B237845754934B43C3C7E4550112C6D349F + +Count = 522 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C6BBFA3068B2565380C310BEBE4621B066 + +Count = 523 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE936F61500006F7111B2B0C374E7E51013 + +Count = 524 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919237FD15BB858B3DCC192582F539DB8E835 + +Count = 525 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2E2B0181AC634AFF351B629DA3F363857 + +Count = 526 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639446197213786E05BCC787DE679A380D9 + +Count = 527 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16937DEB03E39640F04C37543ABB86692D + +Count = 528 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2EC65EDAF30A9E34255A7F63A08A85557 + +Count = 529 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B50AD6CC30AF7D617FA57C4D48A6E820CE + +Count = 530 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BC97BA43A842706EA35ED04EE12BD6038 + +Count = 531 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD5CEACA5CDC087D7121D6DB2362CBDD532 + +Count = 532 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB046745C48E632A2E6D0A36F5109380738B + +Count = 533 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295723FECF5E556465E5E61C5527058EDAF5 + +Count = 534 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C0758137048D46DAF3D48AA4DA03D36238626B411E + +Count = 535 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADF52045955F4C73E84DB2FCAF3767666 + +Count = 536 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DE97EDC55A1F89690F5A30EDE77439212 + +Count = 537 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B3749282EDD2EE8198317FFBB41F8B4207 + +Count = 538 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B4D6700A94F98C120F6DFDB063EBFC9E0 + +Count = 539 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F52671B3C0FD9AAE5F60B53B7D8B71A068 + +Count = 540 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD8CF56F709E6E94E411369E9870139333 + +Count = 541 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E18AD9F8FBFDEAD8BB97FD1847F2427A22 + +Count = 542 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BEF1ED479FEA50F67CD90C446C5CD9A108 + +Count = 543 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B1490999A6E9372649A78E70D4ADF5DA8FDD4C + +Count = 544 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF48040F0FCF26689DCF0182716BA11CC6 + +Count = 545 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC64485547AC7F5AB368E040FEFE52F74CB2FF5 + +Count = 546 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC829914A6A405866D0F0110C48C38542F4 + +Count = 547 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA26E772932C04D9E1187672EE166D9E2D1 + +Count = 548 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECDA542AC4871F3B201DFC85B8EA6EDD58E + +Count = 549 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB5A6301B630D6609665BA52F168BB5157 + +Count = 550 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D50897B6DAD629168745E03DFB09945969C8C0 + +Count = 551 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297D60C2E17F858F4FBDCC7F08EA2A0608A + +Count = 552 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610BD6E2811093E4D16AEE7F9796109D7ED + +Count = 553 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4C579EA1655C212EF2AD34E3BAA092935E + +Count = 554 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238FB176B2543D1AF0AC63C6533424780A8A + +Count = 555 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E3644DB3C4020CA7564FD0C0CDCB76829 + +Count = 556 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE9328E07845FD9B81B808876937BEAA347E5 + +Count = 557 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233924D173BA77D2BD14347C03F03F358B59 + +Count = 558 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9B57351F00118A6B9024626528D755CCA + +Count = 559 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F4BDDB0B81CEA48FACB24925B3550C38EE + +Count = 560 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C1687058784BD51F0B6E4A38967EC9CA550AC + +Count = 561 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE22797201581EF2E787A3CD47BC751A4C7BF + +Count = 562 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B5913644C7291FE90382EA41A7DA15FADB55 + +Count = 563 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABBC71EFD1F260C303A6EDD891AB1C7B7B + +Count = 564 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B1523E670219CE4BC86667F2AB5A96BBE + +Count = 565 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464F50C585D2090295CB34540EF6F763AEE + +Count = 566 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775718CE92212194ED5EB63549F26379C86 + +Count = 567 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEC07F8232A8902EAD7CB4544D674F862B + +Count = 568 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA71A2CE8799D11FBBD4AF46C263541844 + +Count = 569 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC76FFE63E0AA5FE23F8CD1604DC7953F8B + +Count = 570 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30BF524CDB7289784E9D2ED459E705FE885 + +Count = 571 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89F451125A41C30B6E0869E4E51AC44EE5 + +Count = 572 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E3BC85313090A01A2E15DE2C612490EBB6 + +Count = 573 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93841304CB5A14C9812AAE1C43565F562E + +Count = 574 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B582B33CF37D345AE67E8B0E12794C494B + +Count = 575 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91732C477A72F8137A2F0F1FACB5F07C22 + +Count = 576 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C828AB041378F497F23A88CA4BC6CDA3B + +Count = 577 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF13E7E506E32C75E681208F6AD307C0874D + +Count = 578 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CC1D92B2EA26C2A96177A75B4C52C77B5 + +Count = 579 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A67A18202436A61D938636D29A9BFC445B + +Count = 580 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1B49A11189BD0542FE3C7BCF3506E3A5A + +Count = 581 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8EAA8286A8661AAFA9B80ABA599072A6E1 + +Count = 582 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8455FFD9C08C031C0614E43AFB17C00B7C + +Count = 583 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975C79C94EECC960BCA95F588CE69E8EF45B + +Count = 584 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A23845018771036E35A1AACC242D8264F3 + +Count = 585 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D12D05A8E280031A1E5A74C3589892523D + +Count = 586 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD094C23B14BE9BC768CEAA792433807F83 + +Count = 587 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4345CC4D6A5CAE28573AAFEC012BA4C39B + +Count = 588 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60B78930C63A44F145CA3E37FE1D556A59 + +Count = 589 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE9324142A3D843F0ABB1FFE9C769922A76D141 + +Count = 590 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD91923393416E1FE7E358A239863D6536EE3B42217 + +Count = 591 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DFDF8B876AA39FFD1B69B3B5B5CAEE5539 + +Count = 592 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F43761F5054E01510A1C26C9C6B8A0F0A5B0 + +Count = 593 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A36249638E05E3602DED1653A15827293 + +Count = 594 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D729B26C87EBC50EB37BC1DFE597113F7 + +Count = 595 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B591856C25E18918BDE7769CD17A5939330459 + +Count = 596 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF11E72C8E383FAD442D6F0DBDB5002B324 + +Count = 597 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B6806A20A0E3C88FAAE3429D5CEFF9B21 + +Count = 598 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6EDA4204ABB66A702DCD3553BEE434C9B + +Count = 599 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA1C927AE68B7F5DBEFC1B1D56CD15FE4F + +Count = 600 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB2FD8AA1B4A3E79BE6EED9320BA7F2F3DA + +Count = 601 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA72A0ACFF5F94D1BD10C286BC86C9C941BC + +Count = 602 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC7265150F7577802CCF4E64F29FD41C8A88E + +Count = 603 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B607C19B5FDF87DAF3E73B7B7D3B23D693F + +Count = 604 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDCFA48E42866C883ED5A51B0B62B4257C + +Count = 605 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30FFA14BB26FC231AFD7D99C6034E9D6483 + +Count = 606 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD9315186B984778F5623580E94E5B0CAC0C86 + +Count = 607 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F9264827915CB9FA12D219D2FAD86D3DF7 + +Count = 608 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91892FE0C794ACE9EA745F9B4B06F55BF1AA + +Count = 609 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C72894F550AA43A56D221AFB8D63FF6A145 + +Count = 610 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305E98F6E209A470D070CF75DE3E2067411 + +Count = 611 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB70AF4487701575A671ACAC61CA34A7778 + +Count = 612 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A62079959EC90DB68D33C9B5C63C0FB09ED2 + +Count = 613 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7C472C65284F6DBD0E428CC173F6A075F + +Count = 614 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D29D6EE5B5AFE4A402DB2CD2C6882F60A + +Count = 615 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB841954DDE46FF1765EEE974836AE3299C37E + +Count = 616 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA59DBAD72E387666DE4FDFF3B2A3D4583 + +Count = 617 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A20689E0DAAC1BDAF69CFF07A10A376AA30F + +Count = 618 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D177364CC17647D32F09AB80021AA2346184 + +Count = 619 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD04717B230EA4CD664F8169E970B615EB598 + +Count = 620 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334684E646D68023737EC20D9652981B98C + +Count = 621 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F54D5459D621550E9D549E0BA8C6315C80 + +Count = 622 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE9324122B1D31056D9D60BB4D83F0D742E35F9BF + +Count = 623 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB6CB9C976B36E1DA1797C051E6B46F965 + +Count = 624 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5ACC9934741BB5CB21A4B37192B3DA5A0E + +Count = 625 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C8C4F7EA1BA1ECC3ED46A67A52BDA466DF + +Count = 626 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30D7A534C9137B2156F4AE75E020FE55E2 + +Count = 627 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D080DC8FFDFDEE6780B7161C2CDEEAC2F79 + +Count = 628 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2E69AB41F97D9F823171716E4CBDC812B + +Count = 629 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF1785F5792519EFA56E587ED3DCAFA72B8F7 + +Count = 630 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86D43366FF024750E12F20F0877E0F88A9 + +Count = 631 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F500329DE6A1DFAD15D9A819C6A56B8CCB + +Count = 632 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA076BC8ABDDA1120C7BDECB1AA21879F970 + +Count = 633 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AC2DD2A19334A598BFC6A87E9BBED9B8E + +Count = 634 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA7256CCABFD3E28F3B6830E14C47E56981E3C + +Count = 635 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726436019CDF31F28E95EDA3C7E5002713C52 + +Count = 636 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B6077711CB0E0889AF0C78B5F79C65BD5E331 + +Count = 637 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE7625AAC4477FA42DE2C8E55718D1747AC + +Count = 638 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F9849D04895F6F3B95755F57CA40266ED81 + +Count = 639 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CBAEAD52F5D062B9F2F72C4AAB992242A + +Count = 640 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91CF1DD8AFF8B5EDF3C833BC2A13B0EC57A + +Count = 641 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E8EA9293757102858D714F18E90FBB33E + +Count = 642 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A2EA950A7055F1ECE73FD6F49F7EA8CAA + +Count = 643 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF13056821E302D4E1B7E560AF7D5AA8D7B16022 + +Count = 644 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A8A3D5CFA93DB549FC5E57569895F16C43 + +Count = 645 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A62071BE98A430416E158031FB2C94C0293DFD + +Count = 646 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A55E204C34372BA4E1ECDB4179397D3DF5 + +Count = 647 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D877313981C9A3D2F7EE3199C0DFA6D1083 + +Count = 648 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7459A030FDEBBE95FC7D8E3491E8235CB + +Count = 649 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA588CA01ADA2E3D283255D8FBE4EA3A8F74 + +Count = 650 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F848E6C352A763AA059D7604B530DB172 + +Count = 651 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775E905F37CAC2C32DBBA627E4CA5D3379B3 + +Count = 652 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8BC33EBC6EA068AE4AFF6D999E6774371 + +Count = 653 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B9FC4DA5C3D713B22B591CD838C38CB223 + +Count = 654 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505A4139F15D6BF201A1763A30AF781D5E3 + +Count = 655 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228319DB34D82BDF12723FE1CCEDE8F6B3F7 + +Count = 656 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB157038200CD38E129BB2411449063136BA + +Count = 657 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44EE4DE7FD505CD75D4148A2A01EC6475A + +Count = 658 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C8597F88919FDB0398ACD57FE9A2F9884CCE + +Count = 659 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A304597164B76083C10FD4A9BDF931C4D01AD + +Count = 660 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABDBA8B3C03491B52274B24B244B824310 + +Count = 661 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF06D8F0F70403903EE2A0FACC1B20EB03 + +Count = 662 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C951715945DE2013BC7350B287F7F9C19B + +Count = 663 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C02E89FF9853EA44979A0AABF43E7E788C + +Count = 664 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F55561DD9608CBAAB17DB7D2D5E63CE80038 + +Count = 665 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BC8156D4872FC3716E959E0DD75EBB2D0 + +Count = 666 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFB76BEFBC8A10B5784306C021F5B7E147F + +Count = 667 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA72560756200CF4F120C625CB2F267F3CDE83CC + +Count = 668 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BD27451060C933EBD63D81F96DD50A46C + +Count = 669 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770CD3E51E7D972650F44E226599CA1B1301 + +Count = 670 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE7478FB2EAF96CEA6B962D7AC4737902010A + +Count = 671 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4F513936DA3C8F7A7FFD0A080B9DAAB90 + +Count = 672 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF5A4AB04071C49BB020B6D57D52868C843 + +Count = 673 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58DA0144D18770D47E8F443D39C18AC211 + +Count = 674 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95ED27A585881DC76984350C60243B0823 + +Count = 675 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A99F14F9B5463DA9AE4367CD987095BB73C + +Count = 676 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686BC33C0E339D3D74F6F31037998CBE57F7 + +Count = 677 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E8F1656763B740E89B6B6559EB5A194A1 + +Count = 678 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717F3EFF5996454348FA3CDE439FF7769B73 + +Count = 679 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A5467F536C0D1EC628013FDF7037E562ACEA + +Count = 680 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF9B2A70681D617D3400F89688D3202C4B + +Count = 681 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B878F663C9D171118EE535C43D025017B3 + +Count = 682 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA5882C2E09E364689608132EF8642A2100CF4 + +Count = 683 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CAD96C2E6210815908682855BD9D3D160 + +Count = 684 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEAD8DF1AA8FE6D297723F9EA321E293F7C + +Count = 685 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE527D1733E42E51383804E310179B80B5 + +Count = 686 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B9258903339E8326428D9B29A76DEB4563FB + +Count = 687 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F50542CC94BAB44001D94B498E031139A85F25 + +Count = 688 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE9324122837421BDFA7A10AC22629F7D8718AF76424F + +Count = 689 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155CE5B1F8A50A2BBE718372D9DC87B8F457 + +Count = 690 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FA68D0E36A8AB3C4786D3E44A8185C3BCE + +Count = 691 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1522C2375D5E1DCC8E9586604A25F48E6 + +Count = 692 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456E2454CA1A9026F15BB7838B067B99F2C9 + +Count = 693 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB666B77A61B3D5C93B73673BCACF93498 + +Count = 694 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4BB6543EF3A53A6E8C32739E20459AECC0 + +Count = 695 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD2EF6B903FA6C0A2B9DB7356073738495 + +Count = 696 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB97943AD21C627989995867824831C215 + +Count = 697 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F555276AA03223559F532B5D78D7EF05D3EA49 + +Count = 698 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF385D971DE283075839964320814A0007 + +Count = 699 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD1A26D684CA5839C9951311F8B94A9D8F + +Count = 700 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C490B420827341763CC8BDB52DD8C7AF15 + +Count = 701 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBEE9372C2EE5CCB9AD966E80E16D4F0F3D + +Count = 702 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C5511433A142135250AD132F2888ECEE452 + +Count = 703 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE7474607F5A47AB308B3859CEF8101B3B047C3 + +Count = 704 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BBF50540B3F28688A06277C644AE945404 + +Count = 705 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9478EE46EF0245D17A6721474A742EB2 + +Count = 706 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B68A5EB29A39CE448103C9C1A4F0A8F090 + +Count = 707 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CD0892B7FA1AC9B912A3186A38962E5B34 + +Count = 708 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A99065E4346DF5BF0001D09A19C2A5BFFF265 + +Count = 709 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8B1B44FAC558DD8A6B4A7519788FCC2517 + +Count = 710 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03CC4AD5D531254C3651CCC541B9E2960B + +Count = 711 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA16F38C1075743CC863714F4FD3019035E + +Count = 712 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D079C9C99BF394766A44EC71F474B2D543 + +Count = 713 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B1C9D9EB40B69790E8596B434155DA540 + +Count = 714 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4D6FA4F6BA8A63E4AA19BA7DE8EACAA98 + +Count = 715 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA588234B0E1A85254061813E42D6C2E791A24A6 + +Count = 716 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5E28FF3A7FC1185E040E32ED6B82AEEB0 + +Count = 717 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5AACE20A17309CCC1E0B562DFB87587A10 + +Count = 718 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B94DDF6FDB34B9A25BE48F48549EF0ADB + +Count = 719 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB15AED29BF297CABAB344128A51FCDA2B + +Count = 720 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E0F7EB0E04F47F577A2789BF5659633D9 + +Count = 721 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B85E36DDAB0608DD95A3246CAA42357A83 + +Count = 722 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C1215131FF14DCCE1F9A3E9E3BA9F4675B6 + +Count = 723 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAAB3E353E5DAFA7A62A3720B0A168E70F28 + +Count = 724 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0EF207DB7CE437862DBD9BB043CEA3822 + +Count = 725 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEB591CFCC41E938565D44ECEDCEA13D0BE + +Count = 726 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A8B0FAC2EF55E9A307AECF477A06A7CD6 + +Count = 727 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B688EBE30100EAEC155A295EC555241B67C + +Count = 728 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD86B86E48BFB425228F839D53591E5314AF + +Count = 729 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB34E5C566E7EDC221AC165DA7FDF915CA9A + +Count = 730 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F55527626E810DFA14EEA429753026B3308CE14C + +Count = 731 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B910C0C99B836B2E175BE41C8E207C939 + +Count = 732 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02B12FACADCDF44FE5B9F5D020D91886DC + +Count = 733 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E217038CA62827AB4CD8214750047ECC3 + +Count = 734 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6ED6613D96D508D12F18469ADB99815017 + +Count = 735 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B8A647EB750DD2A5C0267C81774355563C + +Count = 736 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FEE09E8C24C0130F5F216C378131343336 + +Count = 737 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB941654DCFDBD55CD4B0562F41EF12A10F3 + +Count = 738 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9313D7324326FA0F0AC161C06787099D4B + +Count = 739 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B66956840ACED3CA10DAFFB9DBCF3FBB587C + +Count = 740 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEF4DBC1727AE76B93DBBACE8F33CCD714 + +Count = 741 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906367033129C42228A79FD42492FF215EB78 + +Count = 742 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFE702BA125B5D30250F67908DFA4CE88B8 + +Count = 743 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EAE2FF19CCAF1DDA8BFC28CF612248931B + +Count = 744 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA1301E646C172236B3171FABBCCB1210DB29 + +Count = 745 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D44FA97C0C870A27714A624DEEF59AF2DE + +Count = 746 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B030FABD24E3E40F9C44464CB029A5C5EB9 + +Count = 747 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E438F5DC8B09D8DC5439533A9CB24B09F98A + +Count = 748 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414145DBB651630E84DD19C9EC7C6C85BC7 + +Count = 749 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA420766C74B91A73D3DDCDAD1920820A8 + +Count = 750 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97AAB890133FDE1ADA66CA026F91C843A4 + +Count = 751 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46417BDCCCC71C6C88078A89E53A10758B + +Count = 752 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB439FF83D74756E275E05E5ED1D81A3D83C + +Count = 753 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E43693A96552C6798878C190FDF11719F3C + +Count = 754 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0369EE2765A4CE8E15C91EAF4E1C1EAEA + +Count = 755 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBDA2D269771AAFD5E628F464B7E881BD7 + +Count = 756 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEF03CD711BFB8E8F0AAC4A903877648148 + +Count = 757 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FA6218BAC2D3D4FB89BEAED2DC15AE1A + +Count = 758 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD28997B246BABE06F90F40CA37971E0FA0 + +Count = 759 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47C314DB9085BF2770CD9317B58F3E1485 + +Count = 760 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C137DD77ED700429834C3A7B05955643A + +Count = 761 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D92778045161BBE0A2237AA56F1F1D881 + +Count = 762 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB34252C9852F8082D5306899D6BBD676BF017 + +Count = 763 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C972E3A41082CDADC17DC0FDF8B377B67E + +Count = 764 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1ADC5D75D418B763E91FB1418BF698CA51 + +Count = 765 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEC93C4DBEBAF1B001B49B3E8C04A0FC5E + +Count = 766 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E698F58D9ED3B0CDFD8B23EF38FF270A486 + +Count = 767 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B01ADF9D507F34A53A1F280D46002ADA6 + +Count = 768 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83AE3474A70C74798443CBD57D8CAC5ADAC + +Count = 769 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE75B762CA9368B906F196730045AA311E28 + +Count = 770 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB94217940BEF185840053C258ACE4533D37C4 + +Count = 771 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B93769A1EC2DF4019DE6D26A2FF2D31063F28 + +Count = 772 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698ADDA1BF5DAC5BE104E66556E7BAE4903E + +Count = 773 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB23C1E54418BE76E5076C262D1DF3EB79D + +Count = 774 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B5586444B27A15824DB8FD5FD2F967793 + +Count = 775 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED995F72D69F3CF9B8F0C236B4E0CD91317 + +Count = 776 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8C6304B310ED84F648DB22B10ABA80F08F + +Count = 777 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130910B903925D16E53D8B75444B2EDE48F61 + +Count = 778 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D32E1BEFF94584E5BDB9526ECFADAB2D2 + +Count = 779 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B0343FABDA4494EEB6E9F31812A28DCC302F0 + +Count = 780 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387E443FB49A3821FF2CB9BB49255430BC1C + +Count = 781 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA5882341402608E94FDB0BED73EB6C2CCBB25A21565 + +Count = 782 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA438E244389911110CB88A6031AB3F31229 + +Count = 783 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97961A8FED7740A98242AFE575DA52923D13 + +Count = 784 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD2DE5C25EC53645B977BD84D26AF9A41C + +Count = 785 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D4D775645C99A6DEF06BF997BEC68656F6 + +Count = 786 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342219C62C4A6B5A5197505E745C4CCDA82 + +Count = 787 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0387B4EF3423000B2AE994ACBDCCA8C4911 + +Count = 788 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABC3B503FECD993412B0B4A9E7A3744A8C + +Count = 789 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC9F70075DD48764DF30000B286AA7D46E2 + +Count = 790 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FEC4DA35453B203581400AFEB70B771E16 + +Count = 791 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26A2D07C509EC25E6E4CAA2CE8915D5A2A4 + +Count = 792 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC540FDC6BFA24072713234C2F295E27FC + +Count = 793 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6DE4EBA173D3EC7EA5CE095188C1030AFE + +Count = 794 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5ACB1305C649520A0719E059D8A4F55CEB + +Count = 795 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB34251634CA42CA45CDD6A11B4F71C9D63E7925 + +Count = 796 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C967FA46CD022C883330E7974406BA6ECDF3 + +Count = 797 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A281DD851AB2B6B4EF6DFDE0CFE169D2B + +Count = 798 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE129B3061ACA4B9C372DE8FB599E9050A8 + +Count = 799 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694FA5FEA066211661879A83031E0977C623 + +Count = 800 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B27C069D0D8D747A1F00168A25997B8B909 + +Count = 801 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6D8E97EA9DE04A9521C3B40B2C87ADFE03 + +Count = 802 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757DAB9B245A211ACC7742A4A8C0E69FE28A + +Count = 803 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C4E9EF7680649ADA75185CFF4C03BAC5DC + +Count = 804 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2A02646E5F089BA1FA55CAE8B6E7ECAB1 + +Count = 805 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAA4EA86D58F83E6101F42711F86157D571 + +Count = 806 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E5F5E9F6AEF9B42682D6C6B6150A1CAEC + +Count = 807 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D534218C0E20B382A6A1C4115C97236D5 + +Count = 808 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99FD56CC74C5BD0669C19A94793556D9CC5 + +Count = 809 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8E3362C2CE8BE680A604114880CA6658 + +Count = 810 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E2E121E41A669A40D810158AE266AC40B + +Count = 811 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D940FD4F3CE694A619501E904BB40AB0E32 + +Count = 812 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312ACA0AEA5F8B497E789B307864315978F + +Count = 813 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC118AB12D5310926EBF38164D20B51091F + +Count = 814 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D16D72F98ADD54BFC4630ACE6F08EAF0C + +Count = 815 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AE2AEC2F16D1ED75D84A87D342372B7C + +Count = 816 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A979658CD2D2A329458189DFE037C585F5F2C32 + +Count = 817 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD14B240F181D11AB8EF496BE3702900FDF6 + +Count = 818 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D4888CB47182AD5808DF08D3F25A9A746406 + +Count = 819 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BBB03E64A05A57A1196E0D6DF65D068AFD + +Count = 820 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BD7AC6351EC7F7C65FFF354CFE819FC36 + +Count = 821 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD8BAC1B6B0BD0AE8D680477283F9017452 + +Count = 822 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956CBCF9CCEB5B86A7B830B64F08992DD51 + +Count = 823 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE424641CD31319C45D765822F602A002D49 + +Count = 824 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD59F68FC2156E298A57A781EBC8ED69DE7 + +Count = 825 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4A6B8837E6F8CDAFA3BE0078E3705B3F1A + +Count = 826 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B1F7A3404552E100806538F83786BA733 + +Count = 827 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A132687DD91CC9BCD73993303DDDBCC1626 + +Count = 828 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F0F07765B7B0D78B795C98C28795DDCA78 + +Count = 829 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C96763CAB21F64912F5F199F4095ECF11625CF + +Count = 830 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A197EE810EB23BBFB5ACFB5B36693095B83 + +Count = 831 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A7DFAD3D86DB58FD862FA0B7F266762B1 + +Count = 832 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D4523A4D095500282BE4BF93E25252EA3 + +Count = 833 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B2726D75F38620CA5488BD4C323206844E096 + +Count = 834 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5D64B576DF3B240E98768B1DFD64D4B63 + +Count = 835 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F40C610BF53F2A7DB970879F1AD922D3B + +Count = 836 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C4103822874952AC8ECC5755C9000C8DD817 + +Count = 837 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC39E2F575928594DBB92037A70F85C455 + +Count = 838 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEF298FD33AC729DEE4F77C44D004FFF601 + +Count = 839 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E96582CC16F90612C5D23D8A20B89DF4BA5 + +Count = 840 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D612C867111298646CBE171E4966C9B7854 + +Count = 841 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6D7DF876DEFDF264AC5642E3C12DCA7F1D + +Count = 842 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F784F67A268998FA7E6F9FD3D9E9EBFE5 + +Count = 843 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E700C249363C7A322A59B3275AB093AD0F5 + +Count = 844 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C1983A30CD67FD527588C0CBD2A73993E + +Count = 845 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8E00DCE82C34C7801DC938B32A80C64D3 + +Count = 846 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130378F4913D20C368C45FA2C1E733032B6 + +Count = 847 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2DFB3945175E099DCB92E1EBDCA4663147 + +Count = 848 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA2F9B23D450D6585BCBFA732FB244FCCB + +Count = 849 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818219E57A854284AD0FB67637EBB11C433 + +Count = 850 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428E55AF65769CABBA4C92BF7E5D91A8676 + +Count = 851 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D48853C4E10DBC21E7E7E12A009988DC3DB362 + +Count = 852 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03D83BDFA9BCF2D9B48ED1D6D5B5C50B2B + +Count = 853 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA97FAFE86B9B664A9CE5FDB549BC9E6ED8 + +Count = 854 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855A22F51F1E0109B9D1DA8D934FF5F9ECA + +Count = 855 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B418718B434E8563B5297C65B52C7DE60D + +Count = 856 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256C6E5F4BB0EDEBB5E6826DA7E9CD5BD6F + +Count = 857 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0FCF01D23A9A67568A25D3ADEFD1CEEB8 + +Count = 858 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB16D1DA05886223E82C63F2D2981ECBB03 + +Count = 859 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CE009CAF624E78A99898F75F372F3BA02 + +Count = 860 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E1828BA9C9E2BBA2C5FE44DCAA584EA5E + +Count = 861 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F0062C866E5A73212199FCA83AC0E0DE5ED3 + +Count = 862 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392DFC075703AB2514C66FA4E17B1D69258 + +Count = 863 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A1966D58C05C5312D51529764D3B84B6A9187 + +Count = 864 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8EE5B4458C20886F21E8D913CB1C086204 + +Count = 865 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D583C8E97C6B5EB6358C5C9A9AE6E2F1325 + +Count = 866 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B2726495D230EC871C3D854C864D8EE1FBF4086 + +Count = 867 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5287C4AACE44DF798C23907B0D0FA216D45 + +Count = 868 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F636E51B931EAAF18E6EBCE02EBBCC3A942 + +Count = 869 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FCD4E1AD71E229A7F81F6354057F006A6B + +Count = 870 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC300F2DFA65644CF002AA2D114601146EE6 + +Count = 871 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCD1C969D65ED16861199C0E9F0AA5B711F + +Count = 872 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E96452451E49882961B606C94F331353AB77B + +Count = 873 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D61822040B2CDA50C049B3C95D27D86F239D9 + +Count = 874 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB7337ABB8F3392B9FA148EE14250E985C5 + +Count = 875 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F45B9113E114D1FE64EDBDDF18E034D6B2E + +Count = 876 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D097860D44238F570076199926A715B513 + +Count = 877 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E76D36ECED21536D82FC4057786A7EA7C + +Count = 878 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DDBA58D59E5CFE6325CFDD35CF13EB6C7B + +Count = 879 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC13079E0A2EFCDE91C4FB98266B89D07DCCAAA + +Count = 880 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2FA528DFAAF4EE0E6F281C1738547D4F28 + +Count = 881 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50217869CCC28896DD475A37C15C42CD6E + +Count = 882 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A9796581894AA1C243A9FF21A9B55E6E73068B5CC6D + +Count = 883 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F13ED20A5018C2E65D1DB3B07C96D4BF4B + +Count = 884 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D48853128BD97F766CDE4030F95CB85AAC3CD033 + +Count = 885 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBA9CD930B5A56BB28AC72EAA69A5FA40A + +Count = 886 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9ED3E4D8F71EE60BD42701B022798D4A509 + +Count = 887 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB722A205425D3292B5C3BC67D88B606E8 + +Count = 888 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A940D935BE9E1865D5FC3BDCC07F79CF75 + +Count = 889 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9E017923F7C88E091173DA0674EF60CB9 + +Count = 890 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0152C2BF2423B25C7879B9CCCC2ACD8ACB3 + +Count = 891 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB1132409D07819A014227CE89FD9905B3E13 + +Count = 892 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA62D01C2BF892CACF3FAE10F46C412A0CE + +Count = 893 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17A7482AFB7E5283781A013957B0AA62FF + +Count = 894 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F0063912DE108B2103EFE2963AF9014E193D6A + +Count = 895 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B47857F9456F9F0D6D90D26CE959EA3EF8 + +Count = 896 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A1966002EB430294E55BBA1F49F3B1BEA8EEA38 + +Count = 897 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0088E94AA281A04917D1B97461B796D094 + +Count = 898 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F213D8336970A2E6F09CD481912067CB5 + +Count = 899 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BC0DCAE9BA723B1CA497F81F5017A4D986 + +Count = 900 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289859E4320310550D9E011213746A61D7FC + +Count = 901 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8A7D7EF7772022B3E1D06617DA9671E55 + +Count = 902 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0F7A1828F1EFE6652F0774E910A67E0E75 + +Count = 903 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007046D7D88191C4829265FD03EED607792 + +Count = 904 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5931DFB2F754BC85115B557A43EE6192 + +Count = 905 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550BEF80E49A27CA456A016F50B16DB39B8 + +Count = 906 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A419456461E3815E0923375E9A52994C2F + +Count = 907 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728F4C7A3471421792DA24E33A87232C475 + +Count = 908 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A45838F01F48CBDD8EF862D27C6E05721 + +Count = 909 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FE55F9107771B7ADA3884F28E7A494EB4 + +Count = 910 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E73C35CF705AAA338334080E10A08F90DFB + +Count = 911 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD61D0AE8BA643533D849A5400DFAE72D5A0 + +Count = 912 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796C3215DB5BEE8DA029B57913986ECD56B8 + +Count = 913 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A99DCB3B31F94547EA0CBA0C5BA0DCBE9 + +Count = 914 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A94E589E6BD9337B26E8FE35FD9E1A682F + +Count = 915 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DAA39C0F23D0E274A990DFBA33EAF69A0 + +Count = 916 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1215E0375021B087D683DA3440A707A1621 + +Count = 917 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D4885312147B455C85DE1F68D14F0E1F390D2DBAF7 + +Count = 918 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD0ECE83D92044430395F220BA51C71ECAC + +Count = 919 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD9EB62D6E6339A4B24DA0E35E130737441 + +Count = 920 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8ACEEE90F9D19B1D3577EE799E517190CA + +Count = 921 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D1DF20ABB708E9054A0677C19E1291C694 + +Count = 922 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A93001054D72B0F9E006C7F45D1202D8ADD3 + +Count = 923 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C7C01227A6708152CD85614B42C0A164A + +Count = 924 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB1138630E220CABB4E5585F512DC7870EE60C3 + +Count = 925 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67E0E30207C5BA3578B1B6A16FA9C13714E + +Count = 926 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D91AFE6A65DBE6B79470271F38824DCC3B + +Count = 927 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A5C17BCA428F4309B31FB28F4CA224123B + +Count = 928 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FBC3C39D7B0D620040552C91BFA95241A + +Count = 929 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC778CC1BF6F2BB52E6E77923671FE807E + +Count = 930 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059133887F1DCC8149D2C808DD32475EBFE + +Count = 931 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F8A43F540410ED9DA78A62BFF19FFD54A + +Count = 932 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC36507D169E2A7386E88AEDEF2CF85BE3 + +Count = 933 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888021A78F5B773488567D97C75802E5023 + +Count = 934 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC51E70A25F34F002920EF1CD083DB5A6C + +Count = 935 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE5C03BEF8662C1DCC17ABAA38A1FC65FE2 + +Count = 936 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2F47236EAB23EA3F7C5522B2F80C24150 + +Count = 937 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5581D77AB23D3322AAFB07FEB207A3890A + +Count = 938 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF7ED4BBEFF592B131207683B75C2076B4 + +Count = 939 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A410E783BE5F1B4FEAF899DB5E1C7DCF0928 + +Count = 940 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEDBAE87BA2F0EF6C9D0325377BDBA1B3A + +Count = 941 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A8941DAA09F21E79423E3554E32CC025EE4 + +Count = 942 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD5E027D21B035DFC9C4FFF13EAC7DA236 + +Count = 943 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730E0B86E912D11D58E92DA9BDC8D9CCC537 + +Count = 944 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F33D94DB6E5970090DC17323AD94DF9AE + +Count = 945 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA6B018930DCE05B039F6ED9C161BCB6F5A + +Count = 946 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53DD29B295D9ABAE386C3D6048602EFC78 + +Count = 947 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A9828EF209CF303422A60D2618025DA5BD05 + +Count = 948 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFA180012668CEA0FC43B851FF5C544ADBF + +Count = 949 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D40AB9556C6FA8F2A93E23127E486A62E + +Count = 950 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E7739EC3A7E9B08F35F4CF7037E472B004 + +Count = 951 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E77B632E569EABA78EAF59D8BC4B719F9 + +Count = 952 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FF38302D70014C733CC226A2A2F45B05C + +Count = 953 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE7ED64BE35D90DA37AA37DF82EDE36DA56 + +Count = 954 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115D043045FA26DB875D3CC138D70309E12 + +Count = 955 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306F7F08DCC004E1124766E0DCDC3F444FDA + +Count = 956 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4FC14B3C8ABA177E3D7858BF46965CAD31 + +Count = 957 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBE143538367F6E20F9AF324B314C8BC92 + +Count = 958 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEA8F5FEFEEBECC2C87B6D20D286E57200F + +Count = 959 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D9784CFD928F8FAAD4E353571B3C02B8A5D0 + +Count = 960 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58CF56F4D25C025AC43753B57A780915894 + +Count = 961 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC3FE92BDB4610C0CDF49816FAC3DD6B104 + +Count = 962 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC21843978418FA934A5A04EBCA369475BB8 + +Count = 963 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D8B90A23893857939E99BE953D86486E5A + +Count = 964 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F97596FF51A4CA0DF5E2B316EA9FE58F0CE + +Count = 965 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC84F9E05C5FBB63ECF627B6C01D61F5081A + +Count = 966 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888833D861C9D4597FEA74AAF3B5BB57A0F1D + +Count = 967 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC693F822191C747E17507F46CB00CD73D8C + +Count = 968 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE53069818EA777F2BC835FE5220E8BD6A66A + +Count = 969 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E17F56A87D5B3BEDC9A794F34391097808 + +Count = 970 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505D83BEB1384AF00A9FCF7CA27CF873236 + +Count = 971 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D345976E4D5A483045D3EE40F10A9E550 + +Count = 972 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102F06691BA2FBB55B91FFB34D1E27447998 + +Count = 973 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEB23A4853362402096CEF71EF2E6AFBAAE + +Count = 974 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC162186848021E29268C16C5DD589F976 + +Count = 975 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F29FFE78650C0ECA34862E53C481330EB + +Count = 976 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF55FAAAA7060F50496229256BC08C5C0F3 + +Count = 977 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1D04EB5FCD29884C31810D6CDA0456B878 + +Count = 978 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA6627A7640FCBA4F0291BA8C5678C958C727 + +Count = 979 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53511F454C26989B6E1709C54B08DD460DBC + +Count = 980 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A98244C0429FE55C4BF0A2E04CC85E2299BDFE + +Count = 981 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAEDD02DDAC6C6AA9E7476617C7B3ED9385 + +Count = 982 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34C9139E4CCB0FB035204B6D6CE6C6AFFA + +Count = 983 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E7870341C92644A360694C89A771E193B5A3 + +Count = 984 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B6846B91D5F7401C58DEA06B0FFF34A6F + +Count = 985 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC3A612627EBD881F80971F7C8AF0AF25A1 + +Count = 986 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE7250C94D7037DB9594EC6E4E4898C7A9FD6 + +Count = 987 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E061058CC9D37543D5EF0D44E5E0526EC0 + +Count = 988 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FED8A9C478CE2A737C2BAD99CC472372134 + +Count = 989 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F5703CFCFF5D3EE762B13FC6343029658BF + +Count = 990 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCA56D751579E326047725FE5FF7C20BC8 + +Count = 991 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEAD2BB8D82902B17A349C36631BB610CAC33 + +Count = 992 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D978EE4C9C5356C3CD0D7B6CB063D481E2B4D6 + +Count = 993 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58C4329540F8C93C0B968D91F4CEF2FF0FAD6 + +Count = 994 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC32CB5CFFEF5D3E8D2DE965CD6E162D60EA5 + +Count = 995 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC2193A13213BFD5EA456E10C707C39050158D + +Count = 996 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D800381738A6B5C851A24B39C6C52816B408 + +Count = 997 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F97902FA024EA9CFC6199E760665C937A093B + +Count = 998 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC84153ECF688C4D783E8A00DAA3FD93DCDE36 + +Count = 999 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888831D135D17DA914104B915707C6C409E309D + +Count = 1000 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC6903B229E6D0E14304D8848A78D193E3DE2F + +Count = 1001 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE530E5A79282F8819B722221CA7C818107BBE6 + +Count = 1002 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E1140A20A80437DC114DF162FEDA53664894 + +Count = 1003 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505DB64117965291AF1E6DA80AC51C3A0EAA0 + +Count = 1004 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D4E965D476AB53AD9AAB54A81282FD42EEB + +Count = 1005 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102FDEB0231EF80369F2B52CCEEC6A75F4DD25 + +Count = 1006 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEBD3203FD2A2A608477F33EB433F75607A73 + +Count = 1007 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC3E3378F20E773C2A1167BE48CA9EAB78AF + +Count = 1008 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F2DCE588390F8125A4B552B36AC566D8B2E + +Count = 1009 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF5284541F4BA7AD1747AB88A86D830727032 + +Count = 1010 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1DC54FEFB98634D815D255DBEB6141F7C2D0 + +Count = 1011 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA662BBDFEB6EDA39BC609FE20C6730002FE494 + +Count = 1012 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53516966AEF02E97815B67FB2F42CB31DBA6F9 + +Count = 1013 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A9824416747EBFE01F19402A06CC9144B1A801A4 + +Count = 1014 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAE62C32778975109B7CA3759370095745CE2 + +Count = 1015 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34AD65BD0075156E4C92628A8572ECE8DF24 + +Count = 1016 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E787B4022D38DAB650E34DEECF35136102B64E + +Count = 1017 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B425FD89147A7082BB6CFBB5E70AD557D82 + +Count = 1018 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC39FF3CD39F6DA939F75AD8BBA2C1698C508 + +Count = 1019 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE7255497C59322424D9426874DEC92B05D8EA3 + +Count = 1020 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E08DC49EEFB0DEFA1DB4C26EE4B38EF43405 + +Count = 1021 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FEDF5AA7F8DBF1CF54B4898CAE46680967F85 + +Count = 1022 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F57452D649671DB6D7653001F0947AC37A379 + +Count = 1023 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCADF86130FA70E67BEC99AA0C4886D7345E + +Count = 1024 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEAD2DA65B30B0ACCC36BA960737D163B806D32 + +Count = 1025 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D978EE8E794C41A8DE1B20508CE7B64F5187AF6C + +Count = 1026 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58C4355EA18D0EB3E50D916490B645BF4377CF8 + +Count = 1027 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC32CD4BD49E28AC474CA58BD4BE4768E1C34AA + +Count = 1028 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC219387FA708F7B2377916F06E6936A18FCA2C9 + +Count = 1029 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D8000098B446EEA2809D410953FE57090F1A8B + +Count = 1030 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F979080D45CEACB2036D0CA7E8D042BD338C5E5 + +Count = 1031 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC84157505BA51FCF1DFA37DF0D8053CAD4CBFD5 + +Count = 1032 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888831D952ACF345C7E72D4EAD3190AAC6115D83E + +Count = 1033 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC6903782ED369A39CF024FE12947416C9FF25C0 + +Count = 1034 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE530E5ECE480C33EE9B7F16FFBB923B19725E889 + +Count = 1035 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E1142588040EB00A8366154556D6877147DF32 + +Count = 1036 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505DB54EA9C5599089A90A6E10FA497ECC5E61D + +Count = 1037 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D4E87543FDC15DFBDC7A86E083B59252D07D8 + +Count = 1038 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102FDED3EC0CD39D474C58FF7B92EFCEA2C50E14 + +Count = 1039 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEBD3B48FD77CF9BD3F0F930D252FB3914E6859 + +Count = 1040 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC3ED349788B6873856FBDDA6348F6159642D4 + +Count = 1041 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F2D46227AD14380B2A7F2B36E50176FABD906 + +Count = 1042 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF528D49E4815BBA3EE34515F6224500C14CEF0 + +Count = 1043 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1DC5F2A83631EAB14C3B6109DD81C1FB1407E0 + +Count = 1044 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA662BB39C299BCFD54C029011B5A16CD048492B7 + +Count = 1045 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A53516981FCE35C000BDF7A6EDAA661BF433D314D + +Count = 1046 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A98244165C9432824F03A7C18BFFC987D76BA56D78 + +Count = 1047 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAE628A43321D3FAB966B3264AE16C757624FF6 + +Count = 1048 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34AD9F0F6F924971B9FBD97EC664D9C17C001C + +Count = 1049 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E787B4787CAD13067F6440FC2163B4C8897BDF58 + +Count = 1050 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B42824863E866072B25D20BFFA832A5EE5C1B + +Count = 1051 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC39F216C77B8320EFF6C64C73F98CE9B1A68B4 + +Count = 1052 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE72554E69D0AEF2CEBFC058BB810316B9329537C + +Count = 1053 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E08D8A0E1257B2F4BA89ED6A5F6300C734EBCC + +Count = 1054 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FEDF5FEB173F52B2FFEC68DF5E3F90614E20791 + +Count = 1055 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F57453552B415F5AC8BB6B5DBA37F3AFA99CAC4 + +Count = 1056 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCADA00B43508E0187446F06C8AC54CB2D9700 + +Count = 1057 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = +CT = DE27B3C1B43A54C25A724A5F57FC59B59185E2EF4B687C6D4B4CA67EEAD2DAE240737EB5F63221B6B5BA8C1AF1B567F2 + +Count = 1058 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00 +CT = 998D7701C14BB41DBA91A240DA82606BABF178C9DD868D5A136E17D978EE8EC26FEEA3B851F89609ED89DE2E13FC43AE + +Count = 1059 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001 +CT = 51E3F26591E3BE66E2C31CBDD5BF8CD58B6B86C0EB342516F00639A58C43559BF895C379AF7AE332DA52B4A9CAC9C426 + +Count = 1060 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102 +CT = 255ED813C6C9E79E1107AD13AC89CB0464C6F5552762C9676392B48FC32CD42695AF998569D9CF70C01F83A8322B42F6 + +Count = 1061 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203 +CT = 2BB84CB90B56B23C16EA9185A8C3295775EA072BAF4B1A6A196600EC2193871EA51629161BEEED07C1AE88D7E95A571C + +Count = 1062 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304 +CT = CAB056AA88F110F7178FA1C075813704BEB21AFBAD02DEE10A8E0059D800006A1A036BCEC0BBC71B52E35AEAA1B2C591 + +Count = 1063 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405 +CT = 85FF40FCBFEB16F5AC3B7FEAAAB7C01ADA725607C49E694F0D587F9F979080C9B6CDC4E53A8C638CC43C359D6EF6A0EE + +Count = 1064 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506 +CT = 37466ECBEF0CF6C9987924AC51E05E0DC726432BBE6E9B272649BCAC841575588CBC74B6FCC33DC3256D51D269292563 + +Count = 1065 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304050607 +CT = 066D386BDC3BFDE56B07782DF9F784B30B60770C55B83A6DA5289888831D95AD156817A8DDFCC167CD1499D1DEF08690 + +Count = 1066 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708 +CT = EE35C5ECBEB4F721F4F3F18F7254768B89BDE74746FE757D2F63D8DC6903786A526A2A7799B1272598709B0DDFAE05E4 + +Count = 1067 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506070809 +CT = 252EA99EE58EE9DD9FA2DF9E896C85F5E30F98D4BB9421C410FC0FE530E5ECC110D50F5164BC42BEE3CDAE48CE7B049A + +Count = 1068 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A +CT = B0C179AC69E8583FD66B5C00368D4DBD93157CF52B9376E2FC3007B2E11425F23ADB09B4C2183265025169987A7A8B7C + +Count = 1069 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B +CT = 73F5083A228D1FA45045563C2008A4E1B5F91C58B6698AAAEFCDBC5505DB545887519DAE89FDB7F6CF7A2244163777AB + +Count = 1070 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C +CT = 41AAA97377B39758FE9E8606E64416BE91895E95CDAEB22E964550CF4D4E879D0C3DCB42177F0D628543E554B0E3B691 + +Count = 1071 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D +CT = 1A926838E49E79330E6AFB76A7B149093C726A9906360B1D6182A4102FDED39BD4F91C303CE514D60A08637527357AA7 + +Count = 1072 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E +CT = 39D9906849736AFEE9B9EC5851CBBFBF1305686B8BFED99F6DB728DEEBD3B4C38ECB948A7FA6ECDC5012BC2714DC8255 + +Count = 1073 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F +CT = 95A9CC016DB1D54668CCA0DC7BC644852CB7A83E03EA8CBA8F452A89DC3ED33A6569265FEC0A693AFEF3C34E61B3D90E + +Count = 1074 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 307824FCBD38D152551DC44E16D56BC8A620717FA130914E70D00FCD7F2D464585D288467EDAE6815507237DCF62DE99 + +Count = 1075 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 86B3B4DCA59E277541E95D63AF66CFA2B1C7A546D0D47D942C8E730EF528D4B2B8570A516A70075EE50AAE067B183221 + +Count = 1076 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = F60ADC6495BAB5AA38B38FB383B7EECD8E5D87BF4B034312F8DD617F1DC5F2A9C09012D04660D249A6557A79BA6594B8 + +Count = 1077 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 4F48371B6AF752A8C631742E72BC51EB8419B7B8E4387EC130796CA662BB396967249FF5EBF75DB1848564F6953533E1 + +Count = 1078 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 89BDEA40E36A9D39A59DFE6697D508975CEA58823414029D2D2F4A5351698111B98529EEAFF7E0BD1D41D496CBA99249 + +Count = 1079 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 2021C84BC884DC665C3243C822952297A2066F8CF5BA4380AA50A98244165C60762DAF943C8621229A87EDAFF317AD3D + +Count = 1080 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 20F20FF1674EC0DF8A55CE234064C610D1775EEA5A97965818941DFAAE628AC0F573A56C4C6B3A1E0F00990BC43CAF64 + +Count = 1081 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 4F7CC6B92F63AA2AB8907B52C0998D4CD047B8AE5B46DD1428F1214D34AD9F6168DCAF706905F39F4C51C6C3B8D8BB3D + +Count = 1082 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 6034C839C70E77FC0FCED7C7D75B238F4334B925CB43D488531214E787B478268D9DD797F94A6C15657463044BDEF47D + +Count = 1083 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 5E427A3A599AB5CF74AFEBB4E555C69E60F505422E4342BB03CBD08E6B4282207CDC3D532369A7024A8CCF3BDCA4AD05 + +Count = 1084 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 0005A3730F2091FDA3602E158EBEE93241228374B8C0384BA9EDD94FC39F2183F5B9DAB76BF2357367ED21BE8C835E0C + +Count = 1085 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = B2B2A81D5FB5EA292C0812FCD919233934AB155C12FBABD855BB8AE72554E60CC3730EE1CCF20311132999544635B374 + +Count = 1086 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = D96C09271C1D9557D43B72998E41E2D9DF5A44FAABEFC956B4A9D115E08D8AC92CE5670A2CCBD2259AB93E7D43D39EB7 + +Count = 1087 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 5F5143FA55E240F9571656B9823639F437C859B1D0B5FE4256A9306FEDF5FEF4DB7932F49C4D2F67B002E0ADCE86B66B + +Count = 1088 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 047BDBAEF519DCC4E65A5DCD7E0C16873A30456EEBD26AD5B0159C4F574535D3E79D8569A7E17BF6FF7080DF6E947B12 + +Count = 1089 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 1A9B58442BBD18F7F5EA1B1D243BE2277D08ABAB0A47AC4AB11386BBDCADA04A47B9E1731E9679190165412401BD62AB + diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/api.h b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/crypto_aead.h new file mode 100644 index 0000000..6f4ee42 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/crypto_aead.h @@ -0,0 +1,13 @@ +//API required by the NIST for the LWC competition +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); + +//API required by the NIST for the LWC competition +int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, + 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); diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/encrypt.c b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/encrypt.c new file mode 100644 index 0000000..8b819f8 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/encrypt.c @@ -0,0 +1,261 @@ +#include "skinny128.h" +#include "romulus.h" +#include + +//Encryption and authentication using Romulus-N1 +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) { + + u32 tmp; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + memset(state, 0x00, BLOCKBYTES); + tks.tk1[0] = 0x01; // Init 56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the associated data ----------------- + if (adlen == 0) { // Handle the special case of no AD + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else { // Process double blocks but the last + SET_DOMAIN(tks, 0x08); + while (adlen > 2*BLOCKBYTES) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + // Pad and process the left-over blocks + UPDATE_CTR(tks.tk1); + if (adlen == 2*BLOCKBYTES) { // Left-over complete double block + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x18); + } else if (adlen > BLOCKBYTES) { // Left-over partial double block + adlen -= BLOCKBYTES; + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + } else if (adlen == BLOCKBYTES) { // Left-over complete single block + XOR_BLOCK(state, state, ad); + SET_DOMAIN(tks, 0x18); + } else { // Left-over partial single block + for(int i = 0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; // Padding + SET_DOMAIN(tks, 0x1A); + } + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } + // ----------------- Process the associated data ----------------- + + // ----------------- Process the plaintext ----------------- + memset(tks.tk1, 0x00, KEYBYTES/2); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + if (mlen == 0) { + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x15); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else { // Process all blocks except the last + SET_DOMAIN(tks, 0x04); + while (mlen > BLOCKBYTES) { + RHO(state,c,m); + UPDATE_CTR(tks.tk1); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + c += BLOCKBYTES; + m += BLOCKBYTES; + mlen -= BLOCKBYTES; + } + // Pad and process the last block + UPDATE_CTR(tks.tk1); + if (mlen < BLOCKBYTES) { // Last message single block is full + for(int i = 0; i < (int)mlen; i++) { + tmp = m[i]; // Use of tmp variable in case c = m + c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= (u8)tmp; + } + state[15] ^= (u8)mlen; // Padding + SET_DOMAIN(tks, 0x15); + } else { // Last message single block is partial + RHO(state,c,m); + SET_DOMAIN(tks, 0x14); + } + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + c += mlen; + } + // ----------------- Process the plaintext ----------------- + + // ----------------- Generate the tag ----------------- + G(c,state); + // ----------------- Generate the tag ----------------- + + return 0; +} + + +//Decryption and tag verification using Romulus-N1 +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) { + + u32 tmp; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + *mlen = clen - TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + memset(state, 0x00, BLOCKBYTES); + tks.tk1[0] = 0x01; // Init 56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the associated data ----------------- + if (adlen == 0) { // Handle the special case of no AD + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else { // Process double blocks except the last + SET_DOMAIN(tks, 0x08); + while (adlen > 2*BLOCKBYTES) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + // Pad and process the left-over blocks + UPDATE_CTR(tks.tk1); + if (adlen == 2*BLOCKBYTES) { // Left-over complete double block + XOR_BLOCK(state, state, ad); + tkschedule_lfsr(tks.rtk, ad + BLOCKBYTES, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x18); + } else if (adlen > BLOCKBYTES) { // Left-over partial double block + adlen -= BLOCKBYTES; + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; + tkschedule_lfsr(tks.rtk, pad, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + } else if (adlen == BLOCKBYTES) { // Left-over complete single block + XOR_BLOCK(state, state, ad); + SET_DOMAIN(tks, 0x18); + } else { // Left-over partial single block + for(int i = 0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; // Padding + SET_DOMAIN(tks, 0x1A); + } + tkschedule_lfsr(tks.rtk, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(tks.rtk); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } + // ----------------- Process the associated data ----------------- + + // ----------------- Process the ciphertext ----------------- + clen -= TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES/2); + tks.tk1[0] = 0x01; // Init the 56-bit LFSR counter + if (clen == 0) { + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x15); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } else { // Process all blocks except the last + SET_DOMAIN(tks, 0x04); + while (clen > BLOCKBYTES) { + RHO_INV(state,c,m); + UPDATE_CTR(tks.tk1); + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + c += BLOCKBYTES; + m += BLOCKBYTES; + clen -= BLOCKBYTES; + } + // Pad and process the last block + UPDATE_CTR(tks.tk1); + if (clen < BLOCKBYTES) { // Last message double block is partial + for(int i = 0; i < (int)clen; i++) { + m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= m[i]; + } + state[15] ^= (u8)clen; // Padding + SET_DOMAIN(tks, 0x15); + } else { // Last message double block is full + RHO_INV(state,c,m); + SET_DOMAIN(tks, 0x14); + } + tkschedule_perm_tk1(tks.rtk1, tks.tk1); + skinny128_384(state, tks.rtk, state, tks.rtk1); + } + // ----------------- Process the plaintext ----------------- + + // ----------------- Generate and check the tag ----------------- + G(state,state); + tmp = 0; + for(int i = 0; i < TAGBYTES; i++) + tmp |= state[i] ^ c[clen+i]; // Constant-time tag comparison + // ----------------- Generate and check the tag ----------------- + + return tmp; +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/romulus.h b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/romulus.h new file mode 100644 index 0000000..4c0e141 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/romulus.h @@ -0,0 +1,68 @@ +#ifndef ROMULUSN1_H_ +#define ROMULUSN1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef struct { + u8 tk1[16]; //to manipulate tk1 in a byte-wise manner + u32 rtk1[32]; //to avoid recomputation of the tk schedule + u32 rtk[4*SKINNY128_384_ROUNDS];//all round tweakeys +} skinny_128_384_tks; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) + +//G as defined in the Romulus specification in a 32-bit word-wise manner +#define G(x,y) ({ \ + tmp = ((u32*)(y))[0]; \ + ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[1]; \ + ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[2]; \ + ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[3]; \ + ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ +}) + +//update the counter in tk1 in a 32-bit word-wise manner +#define UPDATE_CTR(tk1) ({ \ + tmp = ((u32*)(tk1))[1]; \ + ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ + ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ + ((u32*)(tk1))[1] |= tmp & 0xff000000; \ + ((u32*)(tk1))[0] <<= 1; \ + if ((tmp >> 23) & 0x01) \ + ((u32*)(tk1))[0] ^= 0x95; \ +}) + +//x <- y ^ z for 128-bit blocks +#define XOR_BLOCK(x,y,z) ({ \ + ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ + ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ + ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ + ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ +}) + + +//Rho as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO(x,y,z) ({ \ + G(pad,x); \ + XOR_BLOCK(y, pad, z); \ + XOR_BLOCK(x, x, z); \ +}) + +//Rho inverse as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO_INV(x, y, z) ({ \ + G(pad, x); \ + XOR_BLOCK(z, pad, y); \ + XOR_BLOCK(x, x, z); \ +}) + +#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.h b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.h new file mode 100644 index 0000000..7f53b7d --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.h @@ -0,0 +1,15 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +#define SKINNY128_384_ROUNDS 40 + +extern void skinny128_384(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1); +extern void tkschedule_lfsr(u32* rtk, const u8* tk2, const u8* tk3, const int rounds); +extern void tkschedule_perm(u32* rtk); +extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1); + + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.s b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.s new file mode 100644 index 0000000..2f938a0 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/armcortexm/skinny128.s @@ -0,0 +1,1706 @@ +/******************************************************************************* +* ARM assembly implementation of fixsliced SKINNY-128-384. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +*******************************************************************************/ + +.syntax unified +.thumb + +/******************************************************************************* +* applies P^2 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p2: + movw r1, #0xcc00 + movt r1, #0xcc00 //r1 <- 0xcc00cc00 + movw r10, #0xcc00 + movt r10, #0x0033 //r10<- 0xcc000033 + and r11, r1, r6, ror #14 + bfi r11, r6, #16, #8 + and r12, r6, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r6 + orr r11, r11, r12, lsr #8 + and r12, r6, #0x00cc0000 + orr r6, r11, r12, lsr #18 + and r11, r1, r7, ror #14 + bfi r11, r7, #16, #8 + and r12, r7, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r7 + orr r11, r11, r12, lsr #8 + and r12, r7, #0x00cc0000 + orr r7, r11, r12, lsr #18 + and r11, r1, r8, ror #14 + bfi r11, r8, #16, #8 + and r12, r8, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r8 + orr r11, r11, r12, lsr #8 + and r12, r8, #0x00cc0000 + orr r8, r11, r12, lsr #18 + and r11, r1, r9, ror #14 + bfi r11, r9, #16, #8 + and r12, r9, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r9 + orr r11, r11, r12, lsr #8 + and r12, r9, #0x00cc0000 + orr r9, r11, r12, lsr #18 + bx lr + +/******************************************************************************* +* applies P^4 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p4: + str.w r14, [sp] //store r14 on the stack + movw r14, #0x00cc + movt r14, #0xcc00 //r14<- 0xcc0000cc + movw r12, #0xcc00 + movt r12, #0x3300 //r12<- 0x3300cc00 + movw r11, #0x00cc + movt r11, #0x00cc //r11<- 0x00cc00cc + and r10, r14, r6, ror #22 + and r1, r12, r6, ror #16 + orr r10, r10, r1 + and r1, r6, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r6, r6, r1 + orr r6, r10, r6, ror #24 + and r10, r14, r7, ror #22 + and r1, r12, r7, ror #16 + orr r10, r10, r1 + and r1, r7, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r7, r7, r1 + orr r7, r10, r7, ror #24 + and r10, r14, r8, ror #22 + and r1, r12, r8, ror #16 + orr r10, r10, r1 + and r1, r8, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r8, r8, r1 + orr r8, r10, r8, ror #24 + and r10, r14, r9, ror #22 + ldr.w r14, [sp] //restore r14 + and r12, r12, r9, ror #16 + orr r10, r10, r12 + and r12, r9, r11 + orr r10, r10, r12, lsr #2 + movw r12, #0xcc33 //r1 <- 0x0000cc33 + and r9, r9, r12 + orr r9, r10, r9, ror #24 + bx lr + +/******************************************************************************* +* applies P^6 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p6: + movw r1, #0x3333 //r1 <- 0x00003333 + movw r12, #0x00cc + movt r12, #0x3300 //r12<- 0x330000cc + and r10, r6, r1, ror #8 // --- permute r6 6 times + and r11, r12, r6, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r6, ror #10 + orr r11, r11, r10 + and r10, r6, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r6, #0x00003300 + orr r6, r11, r10, lsl #2 // permute r6 6 times --- + and r10, r7, r1, ror #8 // --- permute r7 6 times + and r11, r12, r7, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r7, ror #10 + orr r11, r11, r10 + and r10, r7, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r7, #0x00003300 + orr r7, r11, r10, lsl #2 // permute r7 6 times --- + and r10, r8, r1, ror #8 // --- permute r8 6 times + and r11, r12, r8, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r8, ror #10 + orr r11, r11, r10 + and r10, r8, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r8, #0x00003300 + orr r8, r11, r10, lsl #2 // permute r8 6 times --- + and r10, r9, r1, ror #8 // --- permute r9 6 times + and r11, r12, r9, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r9, ror #10 + orr r11, r11, r10 + and r10, r9, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r9, #0x00003300 // permute r9 6 times --- + orr r9, r11, r10, lsl #2 + bx lr + +/******************************************************************************* +* applies P^8 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p8: + movw r12, #0x3333 //r12<- 0x00003333 + movw r1, #0x0000 + movt r1, #0x33cc //r1 <- 0x33cc0000 + and r10, r6, r1 // --- permute r6 8 times + and r11, r1, r6, ror #8 + orr r11, r11, r10, ror #24 + and r10, r6, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r6, r12, lsl #8 + orr r6, r11, r10, lsr #6 // permute r6 8 times --- + and r10, r7, r1 // --- permute r7 8 times + and r11, r1, r7, ror #8 + orr r11, r11, r10, ror #24 + and r10, r7, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r7, r12, lsl #8 + orr r7, r11, r10, lsr #6 // permute r7 8 times --- + and r10, r8, r1 // --- permute r8 8 times + and r11, r1, r8, ror #8 + orr r11, r11, r10, ror #24 + and r10, r8, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r8, r12, lsl #8 + orr r8, r11, r10, lsr #6 // permute r8 8 times --- + and r10, r9, r1 // --- permute r9 8 times + and r11, r1, r9, ror #8 + orr r11, r11, r10, ror #24 + and r10, r9, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r9, r12, lsl #8 + orr r9, r11, r10, lsr #6 // permute r9 8 times --- + bx lr + +/******************************************************************************* +* applies P^10 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p10: + movw r12, #0x0033 + movt r12, #0x3300 //r12<- 0x33000033 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r10, r6, r1, ror #8 // --- permute r6 10 times + and r11, r12, r6, ror #26 + orr r11, r11, r10, ror #8 + and r10, r6, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r6, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r6, #0x0000cc00 + orr r6, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r7, r1, ror #8 // --- permute r6 10 times + and r11, r12, r7, ror #26 + orr r11, r11, r10, ror #8 + and r10, r7, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r7, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r7, #0x0000cc00 + orr r7, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r8, r1, ror #8 // --- permute r6 10 times + and r11, r12, r8, ror #26 + orr r11, r11, r10, ror #8 + and r10, r8, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r8, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r8, #0x0000cc00 + orr r8, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r9, r1, ror #8 // --- permute r6 10 times + and r11, r12, r9, ror #26 + orr r11, r11, r10, ror #8 + and r10, r9, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r9, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r9, #0x0000cc00 + orr r9, r11, r10, lsr #2 // permute r6 10 times --- + bx lr + +/******************************************************************************* +* applies P^12 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p12: + str.w r14, [sp] //store r14 on the stack + movw r14, #0xcc33 //r14<- 0x0000cc33 + movw r12, #0x00cc + movt r12, #0x00cc //r12<- 0x00cc00cc + movw r1, #0x3300 + movt r1, #0xcc00 //r1 <- 0xcc003300 + and r10, r14, r6, ror #8 // --- permute r6 12 times + and r11, r12, r6, ror #30 + orr r11, r11, r10 + and r10, r1, r6, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r6, r10, ror #8 + orr r6, r11, r10, ror #10 // permute r6 12 times --- + and r10, r14, r7, ror #8 // --- permute r7 12 times + and r11, r12, r7, ror #30 + orr r11, r11, r10 + and r10, r1, r7, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r7, r10, ror #8 + orr r7, r11, r10, ror #10 // permute r7 12 times --- + and r10, r14, r8, ror #8 // --- permute r8 12 times + and r11, r12, r8, ror #30 + orr r11, r11, r10 + and r10, r1, r8, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r8, r10, ror #8 + orr r8, r11, r10, ror #10 // permute r8 12 times --- + and r10, r14, r9, ror #8 // --- permute r9 12 times + and r11, r12, r9, ror #30 + orr r11, r11, r10 + and r10, r1, r9, ror #16 + ldr.w r14, [sp] + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r9, r10, ror #8 + orr r9, r11, r10, ror #10 // permute r9 12 times --- + bx lr + +/******************************************************************************* +* applies P^14 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p14: + movw r1, #0xcc00 + movt r1, #0x0033 //r1 <- 0x0033cc00 + movw r12, #0xcc00 + movt r12, #0xcc00 //r12<- 0x33003300 + and r10, r1, r6, ror #24 // --- permute r6 14 times + and r11, r6, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r6, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r6, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r6, r12 + orr r6, r11, r10, ror #18 // permute r6 14 times --- + and r10, r1, r7, ror #24 // --- permute r7 14 times + and r11, r7, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r7, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r7, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r7, r12 + orr r7, r11, r10, ror #18 // permute r7 14 times --- + and r10, r1, r8, ror #24 // --- permute r8 14 times + and r11, r8, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r8, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r8, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r8, r12 + orr r8, r11, r10, ror #18 // permute r8 14 times --- + and r10, r1, r9, ror #24 // --- permute r9 14 times + and r11, r9, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r9, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r9, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r9, r12 + orr r9, r11, r10, ror #18 // permute r9 14 times --- + bx lr + +.align 2 +packing: + eor r12, r2, r2, lsr #3 + and r12, r12, r10 + eor r2, r2, r12 + eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + eor r12, r3, r3, lsr #3 + and r12, r12, r10 + eor r3, r3, r12 + eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r12, r4, r4, lsr #3 + and r12, r12, r10 + eor r4, r4, r12 + eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r12, r5, r5, lsr #3 + and r12, r12, r10 + eor r5, r5, r12 + eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r12, r2, r4, lsr #2 + and r12, r12, r11 + eor r2, r2, r12 + eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r12, r2, r3, lsr #4 + and r12, r12, r11, lsr #2 + eor r2, r2, r12 + eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r12, r2, r5, lsr #6 + and r12, r12, r11, lsr #4 + eor r2, r2, r12 + eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r12, r4, r3, lsr #2 + and r12, r12, r11, lsr #2 + eor r4, r4, r12 + eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r12, r4, r5, lsr #4 + and r12, r12, r11, lsr #4 + eor r4, r4, r12 + eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r12, r3, r5, lsr #2 + and r12, r12, r11, lsr #4 + eor r3, r3, r12 + eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + bx lr + +/****************************************************************************** +* Compute LFSR2(TK2) ^ LFSR3(TK3) for all rounds. +* Performing both at the same time allows to save some memory accesses. +******************************************************************************/ +@ void tkschedule_lfsr(u32* tk, const u8* tk2, const u8* tk3, const int rounds) +.global tkschedule_lfsr +.type tkschedule_lfsr,%function +.align 2 +tkschedule_lfsr: + push {r0-r12, r14} + ldr.w r3, [r1, #8] //load tk2 (3rd word) + ldr.w r4, [r1, #4] //load tk2 (2nd word) + ldr.w r5, [r1, #12] //load tk2 (4th word) + ldr.w r12, [r1] //load tk2 (1st word) + mov r1, r2 //move tk3 address in r1 + mov r2, r12 //move 1st tk2 word in r2 + movw r10, #0x0a0a + movt r10, #0x0a0a //r10 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r7 <- 0x30303030 + bl packing //pack tk2 + mov r6, r2 //move tk2 from r2-r5 to r6-r9 + mov r7, r3 //move tk2 from r2-r5 to r6-r9 + mov r8, r4 //move tk2 from r2-r5 to r6-r9 + mov r9, r5 //move tk2 from r2-r5 to r6-r9 + ldr.w r3, [r1, #8] //load tk3 (3rd word) + ldr.w r4, [r1, #4] //load tk3 (2nd word) + ldr.w r5, [r1, #12] //load tk3 (4th) word) + ldr.w r2, [r1] //load tk3 (1st) word) + bl packing //pack tk3 + eor r10, r10, r10, lsl #4 //r10<- 0xaaaaaaaa + ldr.w r1, [sp, #12] //load loop counter in r1 + eor r11, r2, r6 //tk2 ^ tk3 (1st word) + eor r12, r3, r7 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r4, r8 //tk2 ^ tk3 (3rd word) + eor r12, r5, r9 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #8 //store in tk + loop: + and r12, r8, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r6 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r6, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r3, r10 // --- apply LFSR3 to tk3 + eor r12, r5, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r5, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r5, r7 //tk2 ^ tk3 (1st word) + eor r12, r2, r8 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r3, r9 //tk2 ^ tk3 (3rd word) + eor r12, r4, r6 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r9, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r7 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r7, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r2, r10 // --- apply LFSR3 to tk3 + eor r12, r4, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r4, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r4, r8 //tk2 ^ tk3 (1st word) + eor r12, r5, r9 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r2, r6 //tk2 ^ tk3 (3rd word) + eor r12, r3, r7 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r6, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r8 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r8, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r5, r10 // --- apply LFSR3 to tk3 + eor r12, r3, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r3, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r3, r9 //tk2 ^ tk3 (1st word) + eor r12, r4, r6 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r5, r7 //tk2 ^ tk3 (3rd word) + eor r12, r2, r8 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r7, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r9 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r9, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r4, r10 // --- apply LFSR3 to tk3 + eor r12, r2, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r2, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r2, r6 //tk2 ^ tk3 (1st word) + eor r12, r3, r7 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r4, r8 //tk2 ^ tk3 (3rd word) + eor r12, r5, r9 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + subs.w r1, r1, #8 //decrease loop counter by 8 + bne loop + pop {r0-r12, r14} + bx lr + +@ void tkschedule_perm(u32* tk) +.global tkschedule_perm +.type tkschedule_perm,%function +.align 2 +tkschedule_perm: + push {r0-r12, lr} + sub.w sp, #4 //to store r14 in subroutines + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r6, r6, r10 //tk &= 0xf0f0f0f0 (1st word) + and r7, r7, r10 //tk &= 0xf0f0f0f0 (2nd word) + and r8, r8, r10 //tk &= 0xf0f0f0f0 (3rd word) + and r9, r9, r10 //tk &= 0xf0f0f0f0 (4th word) + eor r8, r8, #0x00000004 //add rconst + eor r9, r9, #0x00000040 //add rconst + mvn r9, r9 //to remove a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 1st round + strd r6, r7, [r0], #8 //store 2nd half tk for 1st round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 2nd round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000100 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 3rd round + strd r6, r7, [r0], #8 //store 2nd half tk for 3rd round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 5th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 5th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 4th round + strd r8, r9, [r0], #24 //store 2nd half tk for 4th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 6th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x00400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 6th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + eor r9, r9, #0x00000400 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 7th round + strd r6, r7, [r0], #8 //store 2nd half tk for 7th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + eor r12, r12, #0x00000040 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 9th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000054 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 9th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r8, r8, #0x00010000 + eor r8, r8, #0x00000410 + eor r9, r9, #0x00000410 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 8th round + strd r8, r9, [r0], #24 //store 2nd half tk for 8th round + ldm r0, {r6-r9} //load tk + bl p10 //apply the permutation 10 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x00000100 //add rconst + eor r12, r12, #0x00000100 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 10th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 10th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r6, r6, #0x04000000 //add rconst + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + eor r9, r9, #0x00000100 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 11th round + strd r6, r7, [r0], #8 //store 2nd half tk for 11th round + ldm r0, {r6-r9} //load tk + bl p12 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 13th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00140000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 13th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x04000000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 12th round + strd r8, r9, [r0], #24 //store 2nd half tk for 12th round + ldm r0, {r6-r9} //load tk + bl p14 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 14th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x01400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 14th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 //add rconst + eor r8, r8, #0x00004400 //add rconst + eor r9, r9, #0x00000400 //add const + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 15th round + strd r6, r7, [r0], #8 //store 2nd half tk for 15th round + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + eor r11, r11, #0x00000040 //add rconst + eor r12, r12, #0x00000040 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 17th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000004 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 17th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r7 ,r7, #0x00000010 + eor r8, r8, #0x00000010 + eor r8, r8, #0x00010000 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 16th round + strd r8, r9, [r0], #24 //store 2nd half tk for 16th round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x00000100 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 18th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000040 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 18th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x40000000 //add rconst + eor r8, r8, #0x00000100 //add rconst + eor r9, r9, #0x04000000 //add rconst + eor r9, r9, #0x00000100 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 19th round + strd r6, r7, [r0], #8 //store 2nd half tk for 19th round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 21th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00100000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 21th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r8, r8, #0x04100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 20th round + strd r8, r9, [r0], #24 //store 2nd half tk for 20th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 22th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 22th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 23th round + strd r6, r7, [r0], #8 //store 2nd half tk for 23th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #24] //store 2nd half tk for 25th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000014 //add rconst + eor r12, r12, #0x00000040 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 25th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r8, r8, #0x00010400 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 24th round + strd r8, r9, [r0], #24 //store 2nd half tk for 24th round + ldm r0, {r6-r9} //load tk + bl p10 //apply the permutation 10 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 26th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 26th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x40000000 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 27th round + strd r6, r7, [r0], #8 //store 2nd half tk for 27th round + ldm r0, {r6-r9} //load tk + bl p12 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 29th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 29th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r8, r8, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 28th round + strd r8, r9, [r0], #24 //store 2nd half tk for 28th round + ldm r0, {r6-r9} //load tk + bl p14 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 30th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 30th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 31th round + strd r6, r7, [r0], #8 //store 2nd half tk for 31th round + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #24] //store 2nd half tk for 33th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000014 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 33th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r8, r8, #0x00010400 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 32th round + strd r8, r9, [r0], #24 //store 2nd half tk for 32th round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 34th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 34th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 35th round + strd r6, r7, [r0], #8 //store 2nd half tk for 35th round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 37th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 37th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 36th round + strd r8, r9, [r0], #24 //store 2nd half tk for 36th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 38th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x00400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 38th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x00000400 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 39th round + strd r6, r7, [r0], #8 //store 2nd half tk for 39th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0x3030 + movt r10, #0x3030 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000010 + eor r8, r8, #0x00010000 + eor r8, r8, #0x00000010 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 40th round + strd r8, r9, [r0] //store 2nd half tk for 40th round + add.w sp, #4 + pop {r0-r12, lr} + bx lr + +/****************************************************************************** +* Applies the permutations P^2, ..., P^14 for rounds 0 to 16. Since P^16=Id, we +* don't need more calculations as no LFSR is applied to TK1. +******************************************************************************/ +@ void tkschedule_perm_tk1(u32* tk, const u8* key) +.global tkschedule_perm_tk1 +.type tkschedule_perm_tk1,%function +.align 2 +tkschedule_perm_tk1: + push {r0-r12, lr} + ldr.w r3, [r1, #8] //load tk1 (3rd word) + ldr.w r4, [r1, #4] //load tk1 (2nd word) + ldr.w r5, [r1, #12] //load tk1 (4th word) + ldr.w r2, [r1] //load tk1 (1st word) + movw r10, #0x0a0a + movt r10, #0x0a0a //r6 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r7 <- 0x30303030 + bl packing //pack tk1 + mov r6, r2 //move tk1 from r2-r5 to r6-r9 + mov r7, r3 //move tk1 from r2-r5 to r6-r9 + mov r8, r4 //move tk1 from r2-r5 to r6-r9 + mov r9, r5 //move tk1 from r2-r5 to r6-r9 + movw r2, #0xf0f0 + movt r2, #0xf0f0 //r2<- 0xf0f0f0f0 + and r11, r8, r2 //tk &= 0xf0f0f0f0 (3rd word) + and r12, r9, r2 //tk &= 0xf0f0f0f0 (4th word) + strd r11, r12, [r0], #8 //store 1st half tk for 1st round + and r11, r6, r2 //tk &= 0xf0f0f0f0 (1st word) + and r12, r7, r2 //tk &= 0xf0f0f0f0 (2nd word) + strd r11, r12, [r0], #8 //store 2nd half tk for 1st round + + bl p2 //apply the permutation twice + movw r3, #0x0303 + movt r3, #0x0303 //r3<- 0x03030303 + and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #8] + and r11, r3, r7, ror #28 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #12] + and r11, r3, r9, ror #28 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #4] + and r11, r3, r8, ror #28 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 4 times + and r11, r2, r6, ror #16 //ror and mask to match fixslicing + and r12, r2, r7, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 5th round + and r11, r2, r8, ror #16 //ror and mask to match fixslicing + and r12, r2, r9, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 5th round + bl p2 //apply the permutation 6 times + and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #8] + and r11, r3, r7, ror #12 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #12] + and r11, r3, r9, ror #12 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #4] + and r11, r3, r8, ror #12 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 8 times + and r11, r2, r6 //ror and mask to match fixslicing + and r12, r2, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 9th round + and r11, r2, r8 //ror and mask to match fixslicing + and r12, r2, r9 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 9th round + bl p2 //apply the permutation 10 + and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #8] + and r11, r3, r7, ror #28 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #12] + and r11, r3, r9, ror #28 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #4] + and r11, r3, r8, ror #28 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 12 times + and r11, r2, r6, ror #16 //ror and mask to match fixslicing + and r12, r2, r7, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 5th round + and r11, r2, r8, ror #16 //ror and mask to match fixslicing + and r12, r2, r9, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 5th round + bl p2 //apply the permutation 14 times + and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #8] + and r11, r3, r7, ror #12 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #12] + and r11, r3, r9, ror #12 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #4] + and r11, r3, r8, ror #12 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0] //ror and masks to match fixslicing --- + pop {r0-r12, lr} + bx lr + +.align 2 +quadruple_round: + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rtk_2_3 + rconst + eor r3, r3, r9 //add rtk_2_3 + rconst + eor r4, r4, r10 //add rtk_2_3 + rconst + eor r5, r5, r11 //add rtk_2_3 + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #30 // --- mixcolumns 0 --- + eor r2, r2, r8, ror #24 + and r8, r7, r2, ror #18 + eor r2, r2, r8, ror #2 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #4 + and r8, r7, r3, ror #30 + eor r3, r3, r8, ror #24 + and r8, r7, r3, ror #18 + eor r3, r3, r8, ror #2 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #4 + and r8, r7, r4, ror #30 + eor r4, r4, r8, ror #24 + and r8, r7, r4, ror #18 + eor r4, r4, r8, ror #2 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #4 + and r8, r7, r5, ror #30 + eor r5, r5, r8, ror #24 + and r8, r7, r5, ror #18 + eor r5, r5, r8, ror #2 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #4 + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + and r8, r7, r2, ror #16 // --- mixcolumns 1 --- + eor r2, r2, r8, ror #30 + and r8, r7, r2, ror #28 + eor r2, r2, r8 + and r8, r7, r2, ror #16 + eor r2, r2, r8, ror #2 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #30 + and r8, r7, r3, ror #28 + eor r3, r3, r8 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #2 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #30 + and r8, r7, r4, ror #28 + eor r4, r4, r8 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #2 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #30 + and r8, r7, r5, ror #28 + eor r5, r5, r8 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #2 + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rtk_2_3 + rconst + eor r3, r3, r9 //add rtk_2_3 + rconst + eor r4, r4, r10 //add rtk_2_3 + rconst + eor r5, r5, r11 //add rtk_2_3 + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #10 // --- mixcolumns 2 --- + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #6 + and r8, r7, r2, ror #26 + eor r2, r2, r8 + and r8, r7, r3, ror #10 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #6 + and r8, r7, r3, ror #26 + eor r3, r3, r8 + and r8, r7, r4, ror #10 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #6 + and r8, r7, r4, ror #26 + eor r4, r4, r8 + and r8, r7, r5, ror #10 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #6 + and r8, r7, r5, ror #26 + eor r5, r5, r8 + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + ldmia r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + and r8, r7, r2, ror #4 // --- mixcolumns 3 --- + eor r2, r2, r8, ror #26 + and r8, r7, r2 + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #4 + eor r2, r2, r8, ror #22 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #26 + and r8, r7, r3 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #22 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #26 + and r8, r7, r4 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #22 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #26 + and r8, r7, r5 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #22 + bx lr + +/****************************************************************************** +* Encrypt a single block using fixsliced SKINNY-128-128. +******************************************************************************/ +@ void skinny128_384(u8* ctext, const u32* tk, const u8* ptext) +.global skinny128_384 +.type skinny128_384,%function +.align 2 +skinny128_384: + push {r0-r12, r14} + mov.w r0, r3 + ldr.w r3, [r2, #8] + ldr.w r4, [r2, #4] + ldr.w r5, [r2, #12] + ldr.w r2, [r2] + movw r6, #0x0a0a + movt r6, #0x0a0a //r6 <- 0x0a0a0a0a + movw r7, #0x3030 + movt r7, #0x3030 //r7 <- 0x30303030 + eor r12, r2, r2, lsr #3 + and r12, r12, r6 + eor r2, r2, r12 + eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + eor r12, r3, r3, lsr #3 + and r12, r12, r6 + eor r3, r3, r12 + eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r12, r4, r4, lsr #3 + and r12, r12, r6 + eor r4, r4, r12 + eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r12, r5, r5, lsr #3 + and r12, r12, r6 + eor r5, r5, r12 + eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r12, r2, r4, lsr #2 + and r12, r12, r7 + eor r2, r2, r12 + eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r12, r2, r3, lsr #4 + and r12, r12, r7, lsr #2 + eor r2, r2, r12 + eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r12, r2, r5, lsr #6 + and r12, r12, r7, lsr #4 + eor r2, r2, r12 + eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r12, r4, r3, lsr #2 + and r12, r12, r7, lsr #2 + eor r4, r4, r12 + eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r12, r4, r5, lsr #4 + and r12, r12, r7, lsr #4 + eor r4, r4, r12 + eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r12, r3, r5, lsr #2 + and r12, r12, r7, lsr #4 + eor r3, r3, r12 + eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + movw r6, #0x5555 + movt r6, #0x5555 //r6 <- 0x55555555 + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #128 // rtk1 repeats every 16 rounds + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #128 // rtk1 repeats every 16 rounds + bl quadruple_round + bl quadruple_round + movw r6, #0x0a0a + movt r6, #0x0a0a //r6 <- 0x0a0a0a0a + eor r10, r3, r5, lsr #2 + and r10, r10, r7, lsr #4 + eor r3, r3, r10 + eor r5, r5, r10, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + eor r10, r4, r5, lsr #4 + and r10, r10, r7, lsr #4 + eor r4, r4, r10 + eor r5, r5, r10, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r10, r4, r3, lsr #2 + and r10, r10, r7, lsr #2 + eor r4, r4, r10 + eor r3, r3, r10, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r10, r2, r5, lsr #6 + and r10, r10, r7, lsr #4 + eor r2, r2, r10 + eor r5, r5, r10, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r10, r2, r3, lsr #4 + and r10, r10, r7, lsr #2 + eor r2, r2, r10 + eor r3, r3, r10, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r10, r2, r4, lsr #2 + and r10, r10, r7 + eor r2, r2, r10 + eor r4, r4, r10, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r10, r5, r5, lsr #3 + and r10, r10, r6 + eor r5, r5, r10 + eor r5, r5, r10, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r10, r4, r4, lsr #3 + and r10, r10, r6 + eor r4, r4, r10 + eor r4, r4, r10, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r10, r3, r3, lsr #3 + and r10, r10, r6 + eor r3, r3, r10 + eor r3, r3, r10, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r10, r2, r2, lsr #3 + and r10, r10, r6 + eor r2, r2, r10 + eor r2, r2, r10, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + ldr.w r0, [sp], #4 + strd r2, r4, [r0] + strd r3, r5, [r0, #8] + pop {r1-r12,r14} + bx lr + \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/api.h b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/crypto_aead.h new file mode 100644 index 0000000..e2ca9b0 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/crypto_aead.h @@ -0,0 +1,18 @@ + +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 +); + +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 +); \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/encrypt.c b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/encrypt.c new file mode 100644 index 0000000..fb144a9 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/encrypt.c @@ -0,0 +1,270 @@ +#include "skinny128.h" +#include "tk_schedule.h" +#include "romulus.h" +#include +#include + +//Encryption and authentication using Romulus-N1 +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) { + + int i; + u32 tmp; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + memset(state, 0x00, BLOCKBYTES); + tks.tk1[0] = 0x01; //56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the associated data ----------------- + //Handle the special case of no associated data + if (adlen == 0) { + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else { + // Process all double blocks except the last + SET_DOMAIN(tks, 0x08); + while (adlen > 2*BLOCKBYTES) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + //Pad and process the left-over blocks + UPDATE_CTR(tks.tk1); + if (adlen == 2*BLOCKBYTES) { + // Left-over complete double block + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x18); + } else if (adlen > BLOCKBYTES) { + // Left-over partial double block + adlen -= BLOCKBYTES; + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + } else if (adlen == BLOCKBYTES) { + // Left-over complete single block + XOR_BLOCK(state, state, ad); + SET_DOMAIN(tks, 0x18); + } else { + // Left-over partial single block + for(i =0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; + SET_DOMAIN(tks, 0x1A); + } + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } + // ----------------- Process the associated data ----------------- + + // ----------------- Process the plaintext ----------------- + memset(tks.tk1, 0, KEYBYTES); + tks.tk1[0] = 0x01; //init the 56-bit LFSR counter + if (mlen == 0) { + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x15); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else { + //process all blocks except the last + SET_DOMAIN(tks, 0x04); + while (mlen > BLOCKBYTES) { + RHO(state,c,m); + UPDATE_CTR(tks.tk1); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + c += BLOCKBYTES; + m += BLOCKBYTES; + mlen -= BLOCKBYTES; + } + //pad and process the last block + UPDATE_CTR(tks.tk1); + if (mlen < BLOCKBYTES) { + for(i = 0; i < (int)mlen; i++) { + tmp = m[i]; //use of tmp variable just in case 'c = m' + c[i] = m[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= (u8)tmp; + } + state[15] ^= (u8)mlen; //padding + SET_DOMAIN(tks, 0x15); + } else { + RHO(state,c,m); + SET_DOMAIN(tks, 0x14); + } + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + c += mlen; + } + // ----------------- Process the plaintext ----------------- + + // ----------------- Generate the tag ----------------- + G(state, state); + memcpy(c, state, TAGBYTES); + // ----------------- Generate the tag ----------------- + + return 0; +} + + +//Decryption and tag verification using Romulus-N1 +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) { + + int i; + u32 tmp; + skinny_128_384_tks tks; + u8 state[BLOCKBYTES], pad[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + *mlen = clen - TAGBYTES; + memset(tks.tk1, 0x00, KEYBYTES); + memset(state, 0x00, BLOCKBYTES); + tks.tk1[0] = 0x01; //56-bit LFSR counter + // ----------------- Initialization ----------------- + + // ----------------- Process the associated data ----------------- + //Handle the special case of no associated data + if (adlen == 0) { + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else { + // Process all double blocks except the last + SET_DOMAIN(tks, 0x08); + while (adlen > 2*BLOCKBYTES) { + UPDATE_CTR(tks.tk1); + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + ad += 2*BLOCKBYTES; + adlen -= 2*BLOCKBYTES; + } + //Pad and process the left-over blocks + UPDATE_CTR(tks.tk1); + if (adlen == 2*BLOCKBYTES) { + // Left-over complete double block + XOR_BLOCK(state, state, ad); + precompute_rtk2_3(tks.rtk2_3, ad + BLOCKBYTES, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x18); + } else if (adlen > BLOCKBYTES) { + // Left-over partial double block + adlen -= BLOCKBYTES; + XOR_BLOCK(state, state, ad); + memcpy(pad, ad + BLOCKBYTES, adlen); + memset(pad + adlen, 0x00, 15 - adlen); + pad[15] = adlen; + precompute_rtk2_3(tks.rtk2_3, pad, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x1A); + } else if (adlen == BLOCKBYTES) { + // Left-over complete single block + XOR_BLOCK(state, state, ad); + SET_DOMAIN(tks, 0x18); + } else { + // Left-over partial single block + for(i =0; i < (int)adlen; i++) + state[i] ^= ad[i]; + state[15] ^= adlen; + SET_DOMAIN(tks, 0x1A); + } + precompute_rtk2_3(tks.rtk2_3, npub, k); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } + // ----------------- Process the associated data ----------------- + + // ----------------- Process the ciphertext ----------------- + clen -= TAGBYTES; + memset(tks.tk1, 0, KEYBYTES); + tks.tk1[0] = 0x01; //init the 56-bit LFSR counter + if (clen == 0) { + UPDATE_CTR(tks.tk1); + SET_DOMAIN(tks, 0x15); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } else { + //process all blocks except the last + SET_DOMAIN(tks, 0x04); + while (clen > BLOCKBYTES) { + RHO_INV(state,c,m); + UPDATE_CTR(tks.tk1); + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + c += BLOCKBYTES; + m += BLOCKBYTES; + clen -= BLOCKBYTES; + } + //pad and process the last block + UPDATE_CTR(tks.tk1); + if (clen < BLOCKBYTES) { + for(i = 0; i < (int)clen; i++) { + m[i] = c[i] ^ (state[i] >> 1) ^ (state[i] & 0x80) ^ (state[i] << 7); + state[i] ^= m[i]; + } + state[15] ^= (u8)clen; //padding + SET_DOMAIN(tks, 0x15); + } else { + RHO_INV(state,c,m); + SET_DOMAIN(tks, 0x14); + } + precompute_rtk1(tks.rtk1, tks.tk1); + skinny128_384_plus(state, state, tks.rtk1, tks.rtk2_3); + } + // ----------------- Process the plaintext ----------------- + + // ----------------- Generate and check the tag ----------------- + G(state,state); + tmp = 0; + for(i = 0; i < TAGBYTES; i++) + tmp |= state[i] ^ c[clen+i]; //constant-time tag comparison + // ----------------- Generate and check the tag ----------------- + + return tmp; +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/romulus.h b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/romulus.h new file mode 100644 index 0000000..3a70219 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/romulus.h @@ -0,0 +1,68 @@ +#ifndef ROMULUSN1_H_ +#define ROMULUSN1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef struct { + u8 tk1[16]; //to manipulate tk1 byte-wise + u32 rtk1[4*16]; //to avoid tk schedule recomputations + u32 rtk2_3[4*SKINNY128_384_ROUNDS]; //all round tweakeys +} skinny_128_384_tks; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(tks, domain) ((tks).tk1[7] = (domain)) + +//G as defined in the Romulus specification in a 32-bit word-wise manner +#define G(x,y) ({ \ + tmp = ((u32*)(y))[0]; \ + ((u32*)(x))[0] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[1]; \ + ((u32*)(x))[1] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[2]; \ + ((u32*)(x))[2] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ + tmp = ((u32*)(y))[3]; \ + ((u32*)(x))[3] = (tmp >> 1 & 0x7f7f7f7f) ^ ((tmp ^ (tmp << 7)) & 0x80808080); \ +}) + +//update the counter in tk1 in a 32-bit word-wise manner +#define UPDATE_CTR(tk1) ({ \ + tmp = ((u32*)(tk1))[1]; \ + ((u32*)(tk1))[1] = (tmp << 1) & 0x00ffffff; \ + ((u32*)(tk1))[1] |= (((u32*)(tk1))[0] >> 31); \ + ((u32*)(tk1))[1] |= tmp & 0xff000000; \ + ((u32*)(tk1))[0] <<= 1; \ + if ((tmp >> 23) & 0x01) \ + ((u32*)(tk1))[0] ^= 0x95; \ +}) + +//x <- y ^ z for 128-bit blocks +#define XOR_BLOCK(x,y,z) ({ \ + ((u32*)(x))[0] = ((u32*)(y))[0] ^ ((u32*)(z))[0]; \ + ((u32*)(x))[1] = ((u32*)(y))[1] ^ ((u32*)(z))[1]; \ + ((u32*)(x))[2] = ((u32*)(y))[2] ^ ((u32*)(z))[2]; \ + ((u32*)(x))[3] = ((u32*)(y))[3] ^ ((u32*)(z))[3]; \ +}) + + +//Rho as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO(x,y,z) ({ \ + G(pad,x); \ + XOR_BLOCK(y, pad, z); \ + XOR_BLOCK(x, x, z); \ +}) + +//Rho inverse as defined in the Romulus specification +//use pad as a tmp variable in case y = z +#define RHO_INV(x, y, z) ({ \ + G(pad, x); \ + XOR_BLOCK(z, pad, y); \ + XOR_BLOCK(x, x, z); \ +}) + +#endif // ROMULUSN1_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.c b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.c new file mode 100644 index 0000000..a1061d5 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.c @@ -0,0 +1,107 @@ +/****************************************************************************** +* Constant-time implementation of the SKINNY tweakable block ciphers. +* +* This implementation doesn't compute the ShiftRows operation. Some masks and +* shifts are applied during the MixColumns operation so that the proper bits +* are XORed together. Moreover, the row permutation within the MixColumns +* is omitted, as well as the bit permutation at the end of the Sbox. The rows +* are synchronized with the classical after only 4 rounds. Therefore, this +* implementation relies on a "QUADRUPLE_ROUND" routine. +* +* The Sbox computation takes advantage of some symmetry in the 8-bit Sbox to +* turn it into a 4-bit S-box computation. Although the last bit permutation +* within the Sbox is not computed, the bit ordering is synchronized with the +* classical representation after 2 calls. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include +#include "skinny128.h" +#include "tk_schedule.h" + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void mixcolumns_0(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],24) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,30); + tmp = ROR(state[i],16) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,4); + tmp = ROR(state[i],8) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 1 +******************************************************************************/ +void mixcolumns_1(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 2 +******************************************************************************/ +void mixcolumns_2(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],8) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,6); + tmp = ROR(state[i],16) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],24) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 3 +******************************************************************************/ +void mixcolumns_3(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x30303030; + state[i] ^= ROR(tmp,4); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,26); + } +} + +/****************************************************************************** +* Encryption of a single block without any operation mode using SKINNY-128-384. +* RTK1 and RTK2_3 are given separately to take advantage of the fact that +* TK2 and TK3 remains the same through the entire data encryption/decryption. +******************************************************************************/ +void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, + const u32* rtk2_3) { + u32 tmp; // used in SWAPMOVE macro + u32 state[4]; // 128-bit state + packing(state, ptext); // from byte to bitsliced representation + QUADRUPLE_ROUND(state, rtk1, rtk2_3); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); + QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); + QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); + QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); + QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); + QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); + QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); + unpacking(ctext, state); // from bitsliced to byte representation +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.h b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.h new file mode 100644 index 0000000..bda1e9b --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/skinny128.h @@ -0,0 +1,95 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +void skinny128_384_plus(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); + +#define SKINNY128_384_ROUNDS 40 + +#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[0] ^= (rtk1)[0]; \ + state[1] ^= (rtk1)[1]; \ + state[2] ^= (rtk1)[2]; \ + state[3] ^= (rtk1)[3]; \ + state[0] ^= (rtk2_3)[0]; \ + state[1] ^= (rtk2_3)[1]; \ + state[2] ^= (rtk2_3)[2]; \ + state[3] ^= (rtk2_3)[3]; \ + mixcolumns_0(state); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[0] ^= (rtk1)[4]; \ + state[1] ^= (rtk1)[5]; \ + state[2] ^= (rtk1)[6]; \ + state[3] ^= (rtk1)[7]; \ + state[0] ^= (rtk2_3)[4]; \ + state[1] ^= (rtk2_3)[5]; \ + state[2] ^= (rtk2_3)[6]; \ + state[3] ^= (rtk2_3)[7]; \ + mixcolumns_1(state); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[0] ^= (rtk1)[8]; \ + state[1] ^= (rtk1)[9]; \ + state[2] ^= (rtk1)[10]; \ + state[3] ^= (rtk1)[11]; \ + state[0] ^= (rtk2_3)[8]; \ + state[1] ^= (rtk2_3)[9]; \ + state[2] ^= (rtk2_3)[10]; \ + state[3] ^= (rtk2_3)[11]; \ + mixcolumns_2(state); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[0] ^= (rtk1)[12]; \ + state[1] ^= (rtk1)[13]; \ + state[2] ^= (rtk1)[14]; \ + state[3] ^= (rtk1)[15]; \ + state[0] ^= (rtk2_3)[12]; \ + state[1] ^= (rtk2_3)[13]; \ + state[2] ^= (rtk2_3)[14]; \ + state[3] ^= (rtk2_3)[15]; \ + mixcolumns_3(state); \ +}) + + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.c b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.c new file mode 100644 index 0000000..1da4277 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.c @@ -0,0 +1,368 @@ +/****************************************************************************** +* Implementation of the SKINNY tweakey schedule to match fixslicing. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include //for memcmp +#include "tk_schedule.h" +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; + +/****************************************************************************** +* The round constants according to the new representation. +******************************************************************************/ +u32 rconst_32_bs[160] = { + 0x00000004, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000100, 0xfffffeff, 0x44000000, 0xfbffffff, 0x00000000, 0x04000000, + 0x00100000, 0x00100000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, + 0x00400000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffbfffff, + 0x01004000, 0xfefffbff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, + 0x00010410, 0xfffffbef, 0x00000054, 0xffffffaf, 0x00000000, 0x00000040, + 0x00000100, 0x00000100, 0x10000140, 0xfffffeff, 0x44000000, 0xfffffeff, + 0x04000000, 0x04000000, 0x00100000, 0x00100000, 0x04000001, 0xfbffffff, + 0x00140000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x00000000, + 0x01401000, 0xfebfffff, 0x01004400, 0xfffffbff, 0x00000000, 0x00000400, + 0x00000010, 0x00000010, 0x00010010, 0xffffffff, 0x00000004, 0xffffffaf, + 0x00000040, 0x00000040, 0x00000100, 0x00000000, 0x10000140, 0xffffffbf, + 0x40000100, 0xfbfffeff, 0x00000000, 0x04000000, 0x00100000, 0x00000000, + 0x04100001, 0xffefffff, 0x00440000, 0xffefffff, 0x00000000, 0x00400000, + 0x01000000, 0x01000000, 0x00401000, 0xffffffff, 0x00004000, 0xfeffffff, + 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00010400, 0xfffffbff, + 0x00000014, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000100, 0xffffffff, 0x40000000, 0xfbffffff, 0x00000000, 0x04000000, + 0x00100000, 0x00000000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, + 0x00000000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffffffff, + 0x00004000, 0xfeffffff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, + 0x00010400, 0xfffffbff, 0x00000014, 0xffffffaf, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x10000140, 0xfffffeff, 0x44000000, 0xffffffff, + 0x00000000, 0x04000000, 0x00100000, 0x00100000, 0x00000001, 0xffefffff, + 0x00440000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x01000000, + 0x01401000, 0xffbfffff, 0x01004000, 0xfffffbff, 0x00000400, 0x00000400, + 0x00000010, 0x00000000, 0x00010010, 0xfffffbff +}; + +/****************************************************************************** +* Pack the input into the bitsliced representation +* 24 28 56 60 88 92 120 124 | ... | 0 4 32 36 64 68 96 100 +* 25 29 57 61 89 93 121 125 | ... | 1 5 33 37 65 69 97 101 +* 26 30 58 62 90 94 122 126 | ... | 2 6 34 38 66 70 98 102 +* 27 31 59 63 91 95 123 127 | ... | 3 7 35 39 67 71 99 103 +******************************************************************************/ +void packing(u32* out, const u8* in) { + u32 tmp; + LE_LOAD(out, in); + LE_LOAD(out + 1, in + 8); + LE_LOAD(out + 2, in + 4); + LE_LOAD(out + 3, in + 12); + SWAPMOVE(out[0], out[0], 0x0a0a0a0a, 3); + SWAPMOVE(out[1], out[1], 0x0a0a0a0a, 3); + SWAPMOVE(out[2], out[2], 0x0a0a0a0a, 3); + SWAPMOVE(out[3], out[3], 0x0a0a0a0a, 3); + SWAPMOVE(out[2], out[0], 0x30303030, 2); + SWAPMOVE(out[1], out[0], 0x0c0c0c0c, 4); + SWAPMOVE(out[3], out[0], 0x03030303, 6); + SWAPMOVE(out[1], out[2], 0x0c0c0c0c, 2); + SWAPMOVE(out[3], out[2], 0x03030303, 4); + SWAPMOVE(out[3], out[1], 0x03030303, 2); +} + +/****************************************************************************** +* Unpack the input to a byte-wise representation +******************************************************************************/ +void unpacking(u8* out, u32 *in) { + u32 tmp; + SWAPMOVE(in[3], in[1], 0x03030303, 2); + SWAPMOVE(in[3], in[2], 0x03030303, 4); + SWAPMOVE(in[1], in[2], 0x0c0c0c0c, 2); + SWAPMOVE(in[3], in[0], 0x03030303, 6); + SWAPMOVE(in[1], in[0], 0x0c0c0c0c, 4); + SWAPMOVE(in[2], in[0], 0x30303030, 2); + SWAPMOVE(in[0], in[0], 0x0a0a0a0a, 3); + SWAPMOVE(in[1], in[1], 0x0a0a0a0a, 3); + SWAPMOVE(in[2], in[2], 0x0a0a0a0a, 3); + SWAPMOVE(in[3], in[3], 0x0a0a0a0a, 3); + LE_STORE(out, in[0]); + LE_STORE(out + 8, in[1]); + LE_STORE(out + 4, in[2]); + LE_STORE(out + 12, in[3]); +} + +/****************************************************************************** +* 0 4 1 5 +* 1 5 ---> 2 6 +* 2 6 3 7 +* 3 7 4 0 +******************************************************************************/ +void lfsr2_bs(u32* tk) { + u32 tmp; + tmp = tk[0] ^ (tk[2] & 0xaaaaaaaa); + tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); + tk[0] = tk[1]; + tk[1] = tk[2]; + tk[2] = tk[3]; + tk[3] = tmp; +} + +/****************************************************************************** +* 0 4 7 3 +* 1 5 ---> 0 4 +* 2 6 1 5 +* 3 7 2 6 +******************************************************************************/ +void lfsr3_bs(u32* tk) { + u32 tmp; + tmp = tk[3] ^ ((tk[1] & 0xaaaaaaaa) >> 1); + tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); + tk[3] = tk[2]; + tk[2] = tk[1]; + tk[1] = tk[0]; + tk[0] = tmp; +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, twice +******************************************************************************/ +void permute_tk_2(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,14) & 0xcc00cc00; + tk[i] |= (tmp & 0x000000ff) << 16; + tk[i] |= (tmp & 0xcc000000)>> 2; + tk[i] |= (tmp & 0x0033cc00) >> 8; + tk[i] |= (tmp & 0x00cc0000) >>18; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 4 times +******************************************************************************/ +void permute_tk_4(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,22) & 0xcc0000cc; + tk[i] |= ROR(tmp,16) & 0x3300cc00; + tk[i] |= ROR(tmp, 24) & 0x00cc3300; + tk[i] |= (tmp & 0x00cc00cc) >> 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 6 times +******************************************************************************/ +void permute_tk_6(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,6) & 0xcccc0000; + tk[i] |= ROR(tmp,24) & 0x330000cc; + tk[i] |= ROR(tmp,10) & 0x3333; + tk[i] |= (tmp & 0xcc) << 14; + tk[i] |= (tmp & 0x3300) << 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 8 times +******************************************************************************/ +void permute_tk_8(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0xcc000033; + tk[i] |= ROR(tmp,8) & 0x33cc0000; + tk[i] |= ROR(tmp,26) & 0x00333300; + tk[i] |= (tmp & 0x00333300) >> 6; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 10 times +******************************************************************************/ +void permute_tk_10(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc330000; + tk[i] |= ROR(tmp,26) & 0x33000033; + tk[i] |= ROR(tmp,22) & 0x00cccc00; + tk[i] |= (tmp & 0x00330000) >> 14; + tk[i] |= (tmp & 0xcc00) >> 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 12 times +******************************************************************************/ +void permute_tk_12(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc33; + tk[i] |= ROR(tmp,30) & 0x00cc00cc; + tk[i] |= ROR(tmp,10) & 0x33330000; + tk[i] |= ROR(tmp,16) & 0xcc003300; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 14 times +******************************************************************************/ +void permute_tk_14(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0x0033cc00; + tk[i] |= ROR(tmp,14) & 0x00cc0000; + tk[i] |= ROR(tmp,30) & 0xcc000000; + tk[i] |= ROR(tmp,16) & 0x000000ff; + tk[i] |= ROR(tmp,18) & 0x33003300; + } +} + +/****************************************************************************** +* Precompute all LFSRs on TK2 +******************************************************************************/ +void precompute_lfsr_tk2(u32* tk, const u8* key, const int rounds) { + u32 tk2[4]; + packing(tk2, key); + memcpy(tk, tk2, 16); + for(int i = 0 ; i < rounds; i+=2) { + lfsr2_bs(tk2); + memcpy(tk+i*4+4, tk2, 16); + } +} + +/****************************************************************************** +* Precompute all LFSRs on TK3 +******************************************************************************/ +void precompute_lfsr_tk3(u32* tk, const u8* key, const int rounds) { + u32 tk3[4]; + packing(tk3, key); + tk[0] ^= tk3[0]; + tk[1] ^= tk3[1]; + tk[2] ^= tk3[2]; + tk[3] ^= tk3[3]; + for(int i = 0 ; i < rounds; i+=2) { + lfsr3_bs(tk3); + tk[i*4+4] ^= tk3[0]; + tk[i*4+5] ^= tk3[1]; + tk[i*4+6] ^= tk3[2]; + tk[i*4+7] ^= tk3[3]; + } +} + +/****************************************************************************** +* XOR TK with TK1 before applying the permutations. +* The key is then rearranged to match the barrel shiftrows representation. +******************************************************************************/ +void permute_tk(u32* tk, const u8* key, const int rounds) { + u32 test; + u32 tk1[4], tmp[4]; + packing(tk1, key); + memcpy(tmp, tk, 16); + tmp[0] ^= tk1[0]; + tmp[1] ^= tk1[1]; + tmp[2] ^= tk1[2]; + tmp[3] ^= tk1[3]; + for(int i = 0 ; i < rounds; i += 8) { + test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P + tk[i*4] = tmp[2] & 0xf0f0f0f0; + tk[i*4+1] = tmp[3] & 0xf0f0f0f0; + tk[i*4+2] = tmp[0] & 0xf0f0f0f0; + tk[i*4+3] = tmp[1] & 0xf0f0f0f0; + memcpy(tmp, tk+i*4+4, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_2(tmp); // applies P^2 + else + permute_tk_10(tmp); // applies P^10 + tk[i*4+4] = ROR(tmp[0],26) & 0xc3c3c3c3; + tk[i*4+5] = ROR(tmp[1],26) & 0xc3c3c3c3; + tk[i*4+6] = ROR(tmp[2],26) & 0xc3c3c3c3; + tk[i*4+7] = ROR(tmp[3],26) & 0xc3c3c3c3; + tk[i*4+8] = ROR(tmp[2],28) & 0x03030303; + tk[i*4+8] |= ROR(tmp[2],12) & 0x0c0c0c0c; + tk[i*4+9] = ROR(tmp[3],28) & 0x03030303; + tk[i*4+9] |= ROR(tmp[3],12) & 0x0c0c0c0c; + tk[i*4+10] = ROR(tmp[0],28) & 0x03030303; + tk[i*4+10] |= ROR(tmp[0],12) & 0x0c0c0c0c; + tk[i*4+11] = ROR(tmp[1],28) & 0x03030303; + tk[i*4+11] |= ROR(tmp[1],12) & 0x0c0c0c0c; + memcpy(tmp, tk+i*4+12, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_4(tmp); // applies P^4 + else + permute_tk_12(tmp); // applies P^12 + for(int j = 0; j < 4; j++) { + tk[i*4+12+j] = ROR(tmp[j],14) & 0x30303030; + tk[i*4+12+j] |= ROR(tmp[j],6) & 0x0c0c0c0c; + } + tk[i*4+16] = ROR(tmp[2], 16) & 0xf0f0f0f0; + tk[i*4+17] = ROR(tmp[3], 16) & 0xf0f0f0f0; + tk[i*4+18] = ROR(tmp[0], 16) & 0xf0f0f0f0; + tk[i*4+19] = ROR(tmp[1], 16) & 0xf0f0f0f0; + memcpy(tmp, tk+i*4+20, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_6(tmp); // applies P^6 + else + permute_tk_14(tmp); // applies P^14 + tk[i*4+20] = ROR(tmp[0], 10) & 0xc3c3c3c3; + tk[i*4+21] = ROR(tmp[1], 10) & 0xc3c3c3c3; + tk[i*4+22] = ROR(tmp[2], 10) & 0xc3c3c3c3; + tk[i*4+23] = ROR(tmp[3], 10) & 0xc3c3c3c3; + tk[i*4+24] = ROR(tmp[2],12) & 0x03030303; + tk[i*4+24] |= ROR(tmp[2],28) & 0x0c0c0c0c; + tk[i*4+25] = ROR(tmp[3],12) & 0x03030303; + tk[i*4+25] |= ROR(tmp[3],28) & 0x0c0c0c0c; + tk[i*4+26] = ROR(tmp[0],12) & 0x03030303; + tk[i*4+26] |= ROR(tmp[0],28) & 0x0c0c0c0c; + tk[i*4+27] = ROR(tmp[1],12) & 0x03030303; + tk[i*4+27] |= ROR(tmp[1],28) & 0x0c0c0c0c; + memcpy(tmp, tk+i*4+28, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_8(tmp); // applies P^8 + for(int j = 0; j < 4; j++) { + tk[i*4+28+j] = ROR(tmp[j],30) & 0x30303030; + tk[i*4+28+j] |= ROR(tmp[j],22) & 0x0c0c0c0c; + } + if (test && (i+8 < rounds)) { //only if next loop iteration + tk[i*4+32] = tmp[2] & 0xf0f0f0f0; + tk[i*4+33] = tmp[3] & 0xf0f0f0f0; + tk[i*4+34] = tmp[0] & 0xf0f0f0f0; + tk[i*4+35] = tmp[1] & 0xf0f0f0f0; + } + } +} + +/****************************************************************************** +* Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst. +******************************************************************************/ +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3) { + memset(rtk, 0x00, 16*SKINNY128_384_ROUNDS); + precompute_lfsr_tk2(rtk, tk2, SKINNY128_384_ROUNDS); + precompute_lfsr_tk3(rtk, tk3, SKINNY128_384_ROUNDS); + permute_tk(rtk, (u8*)(rtk+8), SKINNY128_384_ROUNDS); // rtk+8 is NULL + for(int i = 0; i < SKINNY128_384_ROUNDS; i++) { // add rconsts + for(int j = 0; j < 4; j++) + rtk[i*4+j] ^= rconst_32_bs[i*4+j]; + } +} + +/****************************************************************************** +* Precompute RTK1. +******************************************************************************/ +void precompute_rtk1(u32* rtk1, const u8* tk1) { + memset(rtk1, 0x00, 16*16); + permute_tk(rtk1, tk1, 16); +} \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.h b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.h new file mode 100644 index 0000000..e1f64f8 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1+v13/opt32/tk_schedule.h @@ -0,0 +1,39 @@ +#ifndef TK_SCHEDULE_H_ +#define TK_SCHEDULE_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +void packing(u32* out, const u8* in); +void unpacking(u8* out, u32 *in); +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3); +void precompute_rtk1(u32* rtk1, const u8* tk1); + +#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) + +#define XOR_BLOCKS(x,y) ({ \ + (x)[0] ^= (y)[0]; \ + (x)[1] ^= (y)[1]; \ + (x)[2] ^= (y)[2]; \ + (x)[3] ^= (y)[3]; \ +}) + +#define SWAPMOVE(a, b, mask, n) ({ \ + tmp = (b ^ (a >> n)) & mask; \ + b ^= tmp; \ + a ^= (tmp << n); \ +}) + +#define LE_LOAD(x, y) \ + *(x) = (((u32)(y)[3] << 24) | \ + ((u32)(y)[2] << 16) | \ + ((u32)(y)[1] << 8) | \ + (y)[0]); + +#define LE_STORE(x, y) \ + (x)[0] = (y) & 0xff; \ + (x)[1] = ((y) >> 8) & 0xff; \ + (x)[2] = ((y) >> 16) & 0xff; \ + (x)[3] = (y) >> 24; + +#endif // TK_SCHEDULE_H_ \ No newline at end of file diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/api.h b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/api.h deleted file mode 100644 index a4aa567..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/crypto_aead.h deleted file mode 100644 index cfc09d6..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/crypto_aead.h +++ /dev/null @@ -1,11 +0,0 @@ -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); - -int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, - 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); diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/encrypt.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/encrypt.c deleted file mode 100644 index e953677..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/encrypt.c +++ /dev/null @@ -1,540 +0,0 @@ -/* - * Date: 29 November 2018 - * Contact: Thomas Peyrin - thomas.peyrin@gmail.com - * Mustafa Khairallah - mustafam001@e.ntu.edu.sg - */ - -#include "crypto_aead.h" -#include "api.h" -#include "skinny.h" -#include -#include - -void pad (const unsigned char* m, unsigned char* mp, int l, int len8) { - int i; - - for (i = 0; i < l; i++) { - if (i < len8) { - mp[i] = m[i]; - } - else if (i == l - 1) { - mp[i] = (len8 & 0x0f); - } - else { - mp[i] = 0x00; - } - } - -} - -void g8A (unsigned char* s, unsigned char* c) { - unsigned int tmps[4]; - unsigned int tmpc[4]; - - tmps[0] = *((unsigned int *)&s[0]); - tmps[1] = *((unsigned int *)&s[4]); - tmps[2] = *((unsigned int *)&s[8]); - tmps[3] = *((unsigned int *)&s[12]); - - // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); - // - // (s[i] >> 1) -> ((s[i]>>1)&0x7f) - // (s[i] & 0x80) -> (s[i])&0x80) not changed - // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) - - // use word access because of speeding up - tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); - tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); - tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); - tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); - - *((unsigned int *)&c[0]) = tmpc[0]; - *((unsigned int *)&c[4]) = tmpc[1]; - *((unsigned int *)&c[8]) = tmpc[2]; - *((unsigned int *)&c[12]) = tmpc[3]; -} - -void g8A_for_Tag_Generation (unsigned char* s, unsigned char* c) { - unsigned int tmps[4]; - unsigned int tmpc[4]; - - tmps[0] = *((unsigned int *)&s[0]); - tmps[1] = *((unsigned int *)&s[4]); - tmps[2] = *((unsigned int *)&s[8]); - tmps[3] = *((unsigned int *)&s[12]); - - // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); - // - // (s[i] >> 1) -> ((s[i]>>1)&0x7f) - // (s[i] & 0x80) -> (s[i])&0x80) not changed - // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) - - // use word access because of speeding up - tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); - tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); - tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); - tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); - - // use byte access because of memory alignment. - // c is not always in word(4 byte) alignment. - c[0] = tmpc[0] &0xFF; - c[1] = (tmpc[0]>>8) &0xFF; - c[2] = (tmpc[0]>>16)&0xFF; - c[3] = (tmpc[0]>>24)&0xFF; - c[4] = tmpc[1] &0xFF; - c[5] = (tmpc[1]>>8) &0xFF; - c[6] = (tmpc[1]>>16)&0xFF; - c[7] = (tmpc[1]>>24)&0xFF; - c[8] = tmpc[2] &0xFF; - c[9] = (tmpc[2]>>8) &0xFF; - c[10] = (tmpc[2]>>16)&0xFF; - c[11] = (tmpc[2]>>24)&0xFF; - c[12] = tmpc[3] &0xFF; - c[13] = (tmpc[3]>>8) &0xFF; - c[14] = (tmpc[3]>>16)&0xFF; - c[15] = (tmpc[3]>>24)&0xFF; -} - -void rho_ad_eqov16 (const unsigned char* m, - unsigned char* s) { - *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); -} - -void rho_ad_ud16 (const unsigned char* m, - unsigned char* s, - int len8) { - unsigned char mp [16]; - - pad(m,mp,16,len8); - *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); -} - -void rho_eqov16 (const unsigned char* m, - unsigned char* c, - unsigned char* s) { - g8A(s,c); - - *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); - - *((unsigned int *)&c[0]) ^= *((unsigned int *)&m[0]); - *((unsigned int *)&c[4]) ^= *((unsigned int *)&m[4]); - *((unsigned int *)&c[8]) ^= *((unsigned int *)&m[8]); - *((unsigned int *)&c[12]) ^= *((unsigned int *)&m[12]); -} - -void rho_ud16 (const unsigned char* m, - unsigned char* c, - unsigned char* s, - int len8, - int ver) { - int i; - unsigned char mp [16]; - - pad(m,mp,ver,len8); - - g8A(s,c); - *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); - *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); - *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); - *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); - for (i = 0; i < ver; i++) { - if (i < len8) { - c[i] = c[i] ^ mp[i]; - } - else { - c[i] = 0; - } - } -} - -void irho (unsigned char* m, - const unsigned char* c, - unsigned char* s, - int len8, - int ver) { - int i; - unsigned char cp [16]; - - pad(c,cp,ver,len8); - - g8A(s,m); - for (i = 0; i < ver; i++) { - if (i < len8) { - s[i] = s[i] ^ cp[i] ^ m[i]; - } - else { - s[i] = s[i] ^ cp[i]; - } - if (i < len8) { - m[i] = m[i] ^ cp[i]; - } - else { - m[i] = 0; - } - } -} - -void reset_lfsr_gf56 (unsigned char* CNT) { - *((unsigned int *)&CNT[0]) = 0x00000001; - *((unsigned int *)&CNT[4]) = 0x00000000; -} - -void lfsr_gf56 (unsigned char* CNT) { - unsigned int tmpCNT[2]; - unsigned int fb0; - - tmpCNT[0] = *((unsigned int *)&CNT[0]); // CNT3 CNT2 CNT1 CNT0 - tmpCNT[1] = *((unsigned int *)&CNT[4]); // CNT7 CNT6 CNT5 CNT4 - - fb0 = 0; - if ((tmpCNT[1] >> 23)&0x01) { - fb0 = 0x95; - } - - tmpCNT[1] = tmpCNT[1] << 1 | tmpCNT[0] >> 31; - tmpCNT[0] = tmpCNT[0] << 1 ^ fb0; - - *((unsigned int *)&CNT[0]) = tmpCNT[0]; - *((unsigned int *)&CNT[4]) = tmpCNT[1]; -} - -void block_cipher(unsigned char* s, - const unsigned char* k, unsigned char* T, - unsigned char* CNT, - skinny_ctrl* p_skinny_ctrl) { - p_skinny_ctrl->func_skinny_128_384_enc (s,p_skinny_ctrl,CNT,T,k); -} - -void nonce_encryption (const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - skinny_ctrl* p_skinny_ctrl) { - unsigned char T [16]; - - *((unsigned int *)&T[0]) = *((unsigned int *)&N[0]); - *((unsigned int *)&T[4]) = *((unsigned int *)&N[4]); - *((unsigned int *)&T[8]) = *((unsigned int *)&N[8]); - *((unsigned int *)&T[12]) = *((unsigned int *)&N[12]); - CNT[7] = D; - block_cipher(s,k,T,CNT,p_skinny_ctrl); - -} - -void generate_tag (unsigned char** c, unsigned char* s, - int n, unsigned long long* clen) { - g8A_for_Tag_Generation(s, *c); - *c = *c + n; - *c = *c - *clen; -} - -unsigned long long msg_encryption_eqov16 (const unsigned char** M, unsigned char** c, - const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - unsigned long long mlen, - skinny_ctrl* p_skinny_ctrl) { - rho_eqov16(*M, *c, s); - *c = *c + 16; - *M = *M + 16; - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); - return mlen - 16; -} - -unsigned long long msg_encryption_ud16 (const unsigned char** M, unsigned char** c, - const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - unsigned long long mlen, - skinny_ctrl* p_skinny_ctrl) { - rho_ud16(*M, *c, s, mlen, 16); - *c = *c + mlen; - *M = *M + mlen; - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); - return 0; -} - -unsigned long long msg_decryption (unsigned char** M, const unsigned char** c, - const unsigned char* N, - unsigned char* CNT, - unsigned char*s, const unsigned char* k, - unsigned char D, - unsigned long long clen, - skinny_ctrl* p_skinny_ctrl) { - int len8; - - if (clen >= 16) { - len8 = 16; - clen = clen - 16; - } - else { - len8 = clen; - clen = 0; - } - irho(*M, *c, s, len8, 16); - *c = *c + len8; - *M = *M + len8; - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); - return clen; -} - -unsigned long long ad_encryption_eqov32 (const unsigned char** A, unsigned char* s, - const unsigned char* k, unsigned long long adlen, - unsigned char* CNT, - unsigned char D, - skinny_ctrl* p_skinny_ctrl) { - - unsigned char T [16]; - - rho_ad_eqov16(*A, s); - *A = *A + 16; - lfsr_gf56(CNT); - - //pad(*A, T, 16, 16); - *((unsigned int *)&T[0]) = *((unsigned int *)&(*A)[0]); - *((unsigned int *)&T[4]) = *((unsigned int *)&(*A)[4]); - *((unsigned int *)&T[8]) = *((unsigned int *)&(*A)[8]); - *((unsigned int *)&T[12]) = *((unsigned int *)&(*A)[12]); - *A = *A + 16; - CNT[7] = D; - block_cipher(s,k,T,CNT,p_skinny_ctrl); - lfsr_gf56(CNT); - - return adlen - 32; -} - -unsigned long long ad_encryption_ov16 (const unsigned char** A, unsigned char* s, - const unsigned char* k, unsigned long long adlen, - unsigned char* CNT, - unsigned char D, - skinny_ctrl* p_skinny_ctrl) { - - unsigned char T [16]; - - adlen = adlen - 16; - rho_ad_eqov16(*A, s); - *A = *A + 16; - lfsr_gf56(CNT); - - pad(*A, T, 16, adlen); - *A = *A + adlen; - CNT[7] = D; - block_cipher(s,k,T,CNT,p_skinny_ctrl); - lfsr_gf56(CNT); - - return 0; -} - -unsigned long long ad_encryption_eq16 (const unsigned char** A, unsigned char* s, - unsigned char* CNT) { - - rho_ad_eqov16(*A, s); - *A = *A + 16; - lfsr_gf56(CNT); - - return 0; -} - -unsigned long long ad_encryption_ud16 (const unsigned char** A, unsigned char* s, - unsigned long long adlen, - unsigned char* CNT) { - - rho_ad_ud16(*A, s, adlen); - *A = *A + adlen; - lfsr_gf56(CNT); - - return 0; -} - -int crypto_aead_encrypt ( - unsigned char* c, unsigned long long* clen, - const unsigned char* m, unsigned long long mlen, - const unsigned char* ad, unsigned long long adlen, - const unsigned char* nsec, - const unsigned char* npub, - const unsigned char* k - ) -{ - unsigned char s[16]; - // size 7 -> 8 for word access - unsigned char CNT[8]; - const unsigned char* A; - const unsigned char* M; - const unsigned char* N; - - skinny_ctrl l_skinny_ctrl; - - (void) nsec; - A = ad; - M = m; - N = npub; - - l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; - - *((unsigned int *)&s[0]) = 0x00000000; - *((unsigned int *)&s[4]) = 0x00000000; - *((unsigned int *)&s[8]) = 0x00000000; - *((unsigned int *)&s[12]) = 0x00000000; - reset_lfsr_gf56(CNT); - - if (adlen == 0) { // AD is an empty string - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); - } - else while (adlen > 0) { - if (adlen < 16) { // The last block of AD is odd and incomplete - adlen = ad_encryption_ud16(&A,s,adlen,CNT); - nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); - } - else if (adlen == 16) { // The last block of AD is odd and complete - adlen = ad_encryption_eq16(&A,s,CNT); - nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); - } - else if (adlen < (32)) { // The last block of AD is even and incomplete - adlen = ad_encryption_ov16(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); - nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); - } - else if (adlen == (32)) { // The last block of AD is even and complete - adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); - nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); - } - else { // A normal full pair of blocks of AD - adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); - } - } - - // because, nonce_encryption is called at the last block of AD encryption - l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc1_1; - - reset_lfsr_gf56(CNT); - - *clen = mlen + 16; - - if (mlen == 0) { // M is an empty string - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,0x15,&l_skinny_ctrl); - } - else while (mlen > 0) { - if (mlen < 16) { // The last block of M is incomplete - mlen = msg_encryption_ud16(&M,&c,N,CNT,s,k,0x15,mlen,&l_skinny_ctrl); - } - else if (mlen == 16) { // The last block of M is complete - mlen = msg_encryption_eqov16(&M,&c,N,CNT,s,k,0x14,mlen,&l_skinny_ctrl); - } - else { // A normal full message block - mlen = msg_encryption_eqov16(&M,&c,N,CNT,s,k,0x04,mlen,&l_skinny_ctrl); - } - } - - // Tag generation - generate_tag(&c,s,16,clen); - - return 0; -} - -int crypto_aead_decrypt( -unsigned char *m,unsigned long long *mlen, -unsigned char *nsec, -const unsigned char *c,unsigned long long clen, -const unsigned char *ad,unsigned long long adlen, -const unsigned char *npub, -const unsigned char *k -) -{ - - unsigned char s[16]; - unsigned char T[16]; - // size 7 -> 8 for word access - unsigned char CNT[8]; - const unsigned char* A; - unsigned char* M; - const unsigned char* N; - unsigned int i; - - skinny_ctrl l_skinny_ctrl; - - (void) nsec; - A = ad; - M = m; - N = npub; - - l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; - - for (i = 0; i < 16; i++) { - s[i] = 0; - } - reset_lfsr_gf56(CNT); - - if (adlen == 0) { // AD is an empty string - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); - } - else while (adlen > 0) { - if (adlen < 16) { // The last block of AD is odd and incomplete - adlen = ad_encryption_ud16(&A,s,adlen,CNT); - nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); - } - else if (adlen == 16) { // The last block of AD is odd and complete - adlen = ad_encryption_eq16(&A,s,CNT); - nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); - } - else if (adlen < (32)) { // The last block of AD is even and incomplete - adlen = ad_encryption_ov16(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); - nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); - } - else if (adlen == (32)) { // The last block of AD is even and complete - adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); - nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); - } - else { // A normal full pair of blocks of AD - adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); - } - } - - reset_lfsr_gf56(CNT); - - clen = clen - 16; - *mlen = clen; - - if (clen == 0) { // C is an empty string - lfsr_gf56(CNT); - nonce_encryption(N,CNT,s,k,0x15,&l_skinny_ctrl); - } - else while (clen > 0) { - if (clen < 16) { // The last block of C is incomplete - clen = msg_decryption(&M,&c,N,CNT,s,k,0x15,clen,&l_skinny_ctrl); - } - else if (clen == 16) { // The last block of C is complete - clen = msg_decryption(&M,&c,N,CNT,s,k,0x14,clen,&l_skinny_ctrl); - } - else { // A normal full message block - clen = msg_decryption(&M,&c,N,CNT,s,k,0x04,clen,&l_skinny_ctrl); - } - } - - // Tag generation - g8A_for_Tag_Generation(s, T); - for (i = 0; i < 16; i++) { - if (T[i] != (*(c+i))) { - return -1; - } - } - - return 0; -} - - diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/genkat_aead.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/genkat_aead.c deleted file mode 100644 index 21f840f..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/genkat_aead.c +++ /dev/null @@ -1,161 +0,0 @@ -// -// NIST-developed software is provided by NIST as a public service. -// You may use, copy and distribute copies of the software in any medium, -// provided that you keep intact this entire notice. You may improve, -// modify and create derivative works of the software or any portion of -// the software, and you may copy and distribute such modifications or -// works. Modified works should carry a notice stating that you changed -// the software and should note the date and nature of any such change. -// Please explicitly acknowledge the National Institute of Standards and -// Technology as the source of the software. -// -// NIST-developed software is expressly provided "AS IS." NIST MAKES NO -// WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION -// OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST -// NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE -// UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST -// DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE -// OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, -// RELIABILITY, OR USEFULNESS OF THE SOFTWARE. -// -// You are solely responsible for determining the appropriateness of using and -// distributing the software and you assume all risks associated with its use, -// including but not limited to the risks and costs of program errors, compliance -// with applicable laws, damage to or loss of data, programs or equipment, and -// the unavailability or interruption of operation. This software is not intended -// to be used in any situation where a failure could cause risk of injury or -// damage to property. The software developed by NIST employees is not subject to -// copyright protection within the United States. -// - -// disable deprecation for sprintf and fopen -#ifdef _MSC_VER -#define _CRT_SECURE_NO_WARNINGS -#endif - -#include -#include - -#include "crypto_aead.h" -#include "api.h" - -#define KAT_SUCCESS 0 -#define KAT_FILE_OPEN_ERROR -1 -#define KAT_DATA_ERROR -3 -#define KAT_CRYPTO_FAILURE -4 - -#define MAX_FILE_NAME 256 -#define MAX_MESSAGE_LENGTH 32 -#define MAX_ASSOCIATED_DATA_LENGTH 32 - -void init_buffer(unsigned char *buffer, unsigned long long numbytes); - -void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length); - -int generate_test_vectors(); - -int main() -{ - int ret = generate_test_vectors(); - - if (ret != KAT_SUCCESS) { - fprintf(stderr, "test vector generation failed with code %d\n", ret); - } - - return ret; -} - -int generate_test_vectors() -{ - FILE *fp; - char fileName[MAX_FILE_NAME]; - unsigned char key[CRYPTO_KEYBYTES]; - unsigned char nonce[CRYPTO_NPUBBYTES]; - unsigned char msg[MAX_MESSAGE_LENGTH]; - unsigned char msg2[MAX_MESSAGE_LENGTH]; - unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH]; - unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES]; - unsigned long long clen, mlen2; - int count = 1; - int func_ret, ret_val = KAT_SUCCESS; - - init_buffer(key, sizeof(key)); - init_buffer(nonce, sizeof(nonce)); - init_buffer(msg, sizeof(msg)); - init_buffer(ad, sizeof(ad)); - - sprintf(fileName, "LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8)); - - if ((fp = fopen(fileName, "w")) == NULL) { - fprintf(stderr, "Couldn't open <%s> for write\n", fileName); - return KAT_FILE_OPEN_ERROR; - } - - for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) { - for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) { - - printf("%0d\n", (int)clen); - - fprintf(fp, "Count = %d\n", count++); - printf("Count = %d\n", count - 1); - - fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES); - - fprint_bstr(fp, "Nonce = ", nonce, CRYPTO_NPUBBYTES); - - fprint_bstr(fp, "PT = ", msg, mlen); - - fprint_bstr(fp, "AD = ", ad, adlen); - - if ((func_ret = crypto_aead_encrypt(ct, &clen, msg, mlen, ad, adlen, NULL, nonce, key)) != 0) { - fprintf(fp, "crypto_aead_encrypt returned <%d>\n", func_ret); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - - fprint_bstr(fp, "CT = ", ct, clen); - - fprintf(fp, "\n"); - - if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) { - fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - - if (mlen != mlen2) { - fprintf(fp, "crypto_aead_decrypt returned bad 'mlen': Got <%llu>, expected <%llu>\n", mlen2, mlen); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - - if (memcmp(msg, msg2, mlen)) { - fprintf(fp, "crypto_aead_decrypt did not recover the plaintext\n"); - ret_val = KAT_CRYPTO_FAILURE; - break; - } - } - } - - fclose(fp); - - return ret_val; -} - - -void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length) -{ - fprintf(fp, "%s", label); - - for (unsigned long long i = 0; i < length; i++) - fprintf(fp, "%02X", data[i]); - - fprintf(fp, "\n"); -} - -void init_buffer(unsigned char *buffer, unsigned long long numbytes) -{ - for (unsigned long long i = 0; i < numbytes; i++) - buffer[i] = (unsigned char)i; -} diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny.h b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny.h deleted file mode 100644 index 6392b0f..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny.h +++ /dev/null @@ -1,8 +0,0 @@ -typedef struct ___skinny_ctrl { - unsigned char roundKeys[960]; // number of round : 56 - void (*func_skinny_128_384_enc)(unsigned char*, struct ___skinny_ctrl*, unsigned char* CNT, unsigned char* T, const unsigned char* K); -} skinny_ctrl; - -extern void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); -extern void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); -extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule2.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule2.c deleted file mode 100644 index 58006f2..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule2.c +++ /dev/null @@ -1,3027 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2020, NEC Corporation. - * - * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. - * - *****************************************************************************/ - -/* - * SKINNY-128-384 - * - * load * AC(c0 c1) ^ TK3 - * calc AC(c0 c1) ^ TK2 -> store - * ART(TK2) - * - * number of rounds : 56 - */ - -__attribute__((aligned(4))) -void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) -{ - // r0 : points to roundKeys(& masterKey) - // r1-r4 : key state - // r5-r6 : temp use - // r7 : constant(0xfefefefe) - // r8 : constant(0x01010101) - // r9 : temp use - // r10 : temp use - asm volatile( - "stmdb sp!, {r4-r10} \n\t" - "ldr.w r1, [r0,#16] \n\t" // load master key - "ldr.w r2, [r0,#20] \n\t" // load master key - "ldr.w r3, [r0,#24] \n\t" // load master key - "ldr.w r4, [r0,#28] \n\t" // load master key - "mov.w r7, #0xfefefefe \n\t" - "mov.w r8, #0x01010101 \n\t" - - // round 1 - - "ldr.w r9, [r0,#512] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#516] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#64] \n\t" - "str.w r10, [r0,#68] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 2 - - "ldr.w r9, [r0,#520] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#524] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#72] \n\t" - "str.w r10, [r0,#76] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 3 - - "ldr.w r9, [r0,#528] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#532] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#80] \n\t" - "str.w r10, [r0,#84] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 4 - - "ldr.w r9, [r0,#536] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#540] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#88] \n\t" - "str.w r10, [r0,#92] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 5 - - "ldr.w r9, [r0,#544] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#548] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#96] \n\t" - "str.w r10, [r0,#100] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 6 - - "ldr.w r9, [r0,#552] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#556] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#104] \n\t" - "str.w r10, [r0,#108] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 7 - - "ldr.w r9, [r0,#560] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#564] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#112] \n\t" - "str.w r10, [r0,#116] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 8 - - "ldr.w r9, [r0,#568] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#572] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#120] \n\t" - "str.w r10, [r0,#124] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 9 - - "ldr.w r9, [r0,#576] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#580] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#128] \n\t" - "str.w r10, [r0,#132] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 10 - - "ldr.w r9, [r0,#584] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#588] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#136] \n\t" - "str.w r10, [r0,#140] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 11 - - "ldr.w r9, [r0,#592] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#596] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#144] \n\t" - "str.w r10, [r0,#148] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 12 - - "ldr.w r9, [r0,#600] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#604] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#152] \n\t" - "str.w r10, [r0,#156] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 13 - - "ldr.w r9, [r0,#608] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#612] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#160] \n\t" - "str.w r10, [r0,#164] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 14 - - "ldr.w r9, [r0,#616] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#620] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#168] \n\t" - "str.w r10, [r0,#172] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 15 - - "ldr.w r9, [r0,#624] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#628] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#176] \n\t" - "str.w r10, [r0,#180] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 16 - - "ldr.w r9, [r0,#632] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#636] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#184] \n\t" - "str.w r10, [r0,#188] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 17 - - "ldr.w r9, [r0,#640] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#644] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#192] \n\t" - "str.w r10, [r0,#196] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 18 - - "ldr.w r9, [r0,#648] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#652] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#200] \n\t" - "str.w r10, [r0,#204] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 19 - - "ldr.w r9, [r0,#656] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#660] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#208] \n\t" - "str.w r10, [r0,#212] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 20 - - "ldr.w r9, [r0,#664] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#668] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#216] \n\t" - "str.w r10, [r0,#220] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 21 - - "ldr.w r9, [r0,#672] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#676] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#224] \n\t" - "str.w r10, [r0,#228] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 22 - - "ldr.w r9, [r0,#680] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#684] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#232] \n\t" - "str.w r10, [r0,#236] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 23 - - "ldr.w r9, [r0,#688] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#692] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#240] \n\t" - "str.w r10, [r0,#244] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 24 - - "ldr.w r9, [r0,#696] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#700] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#248] \n\t" - "str.w r10, [r0,#252] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 25 - - "ldr.w r9, [r0,#704] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#708] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#256] \n\t" - "str.w r10, [r0,#260] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 26 - - "ldr.w r9, [r0,#712] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#716] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#264] \n\t" - "str.w r10, [r0,#268] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 27 - - "ldr.w r9, [r0,#720] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#724] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#272] \n\t" - "str.w r10, [r0,#276] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 28 - - "ldr.w r9, [r0,#728] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#732] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#280] \n\t" - "str.w r10, [r0,#284] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 29 - - "ldr.w r9, [r0,#736] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#740] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#288] \n\t" - "str.w r10, [r0,#292] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 30 - - "ldr.w r9, [r0,#744] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#748] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#296] \n\t" - "str.w r10, [r0,#300] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 31 - - "ldr.w r9, [r0,#752] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#756] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#304] \n\t" - "str.w r10, [r0,#308] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 32 - - "ldr.w r9, [r0,#760] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#764] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#312] \n\t" - "str.w r10, [r0,#316] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 33 - - "ldr.w r9, [r0,#768] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#772] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#320] \n\t" - "str.w r10, [r0,#324] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 34 - - "ldr.w r9, [r0,#776] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#780] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#328] \n\t" - "str.w r10, [r0,#332] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 35 - - "ldr.w r9, [r0,#784] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#788] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#336] \n\t" - "str.w r10, [r0,#340] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 36 - - "ldr.w r9, [r0,#792] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#796] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#344] \n\t" - "str.w r10, [r0,#348] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 37 - - "ldr.w r9, [r0,#800] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#804] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#352] \n\t" - "str.w r10, [r0,#356] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 38 - - "ldr.w r9, [r0,#808] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#812] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#360] \n\t" - "str.w r10, [r0,#364] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 39 - - "ldr.w r9, [r0,#816] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#820] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#368] \n\t" - "str.w r10, [r0,#372] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 40 - - "ldr.w r9, [r0,#824] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#828] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#376] \n\t" - "str.w r10, [r0,#380] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 41 - - "ldr.w r9, [r0,#832] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#836] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#384] \n\t" - "str.w r10, [r0,#388] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 42 - - "ldr.w r9, [r0,#840] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#844] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#392] \n\t" - "str.w r10, [r0,#396] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 43 - - "ldr.w r9, [r0,#848] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#852] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#400] \n\t" - "str.w r10, [r0,#404] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 44 - - "ldr.w r9, [r0,#856] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#860] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#408] \n\t" - "str.w r10, [r0,#412] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 45 - - "ldr.w r9, [r0,#864] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#868] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#416] \n\t" - "str.w r10, [r0,#420] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 46 - - "ldr.w r9, [r0,#872] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#876] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#424] \n\t" - "str.w r10, [r0,#428] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 47 - - "ldr.w r9, [r0,#880] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#884] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#432] \n\t" - "str.w r10, [r0,#436] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 48 - - "ldr.w r9, [r0,#888] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#892] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#440] \n\t" - "str.w r10, [r0,#444] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 49 - - "ldr.w r9, [r0,#896] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#900] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#448] \n\t" - "str.w r10, [r0,#452] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 50 - - "ldr.w r9, [r0,#904] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#908] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#456] \n\t" - "str.w r10, [r0,#460] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 51 - - "ldr.w r9, [r0,#912] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#916] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#464] \n\t" - "str.w r10, [r0,#468] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 52 - - "ldr.w r9, [r0,#920] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#924] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#472] \n\t" - "str.w r10, [r0,#476] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 53 - - "ldr.w r9, [r0,#928] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#932] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#480] \n\t" - "str.w r10, [r0,#484] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 54 - - "ldr.w r9, [r0,#936] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#940] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#488] \n\t" - "str.w r10, [r0,#492] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 55 - - "ldr.w r9, [r0,#944] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#948] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#496] \n\t" - "str.w r10, [r0,#500] \n\t" - - // permutation - // r1 (k3 k2 k1 k0) k13 k8 k15 k9 - // r2 (k7 k6 k5 k4) k11 k12 k14 k10 - // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r4 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) - "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) - "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) - "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) - "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) - "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) - "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) - "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) - "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) - "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) - "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) - "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) - "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) - "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) - "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) - "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) -#endif - // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) - "and.w r5, r7, r1, lsl #1 \n\t" - "and.w r6, r8, r1, lsr #7 \n\t" - "and.w r1, r8, r1, lsr #5 \n\t" - "eor.w r1, r6 \n\t" - "eor.w r1, r5 \n\t" - - "and.w r5, r7, r2, lsl #1 \n\t" - "and.w r6, r8, r2, lsr #7 \n\t" - "and.w r2, r8, r2, lsr #5 \n\t" - "eor.w r2, r6 \n\t" - "eor.w r2, r5 \n\t" - - // round 56 - - "ldr.w r9, [r0,#952] \n\t" // load TK3 ^ AC(c0 c1) - "ldr.w r10, [r0,#956] \n\t" // load TK3 ^ AC(c0 c1) - - "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) - - // round key store((TK2 ^ TK3 ^ AC(c0 c1)) - "str.w r9, [r0,#504] \n\t" - "str.w r10, [r0,#508] \n\t" - - // permutation - - // not need to calculate (not used) - - "ldmia.w sp!, {r4-r10} \n\t" - : - : [roundKeys] "r" (roundKeys) - : "cc"); -} diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c deleted file mode 100644 index 81c4406..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c +++ /dev/null @@ -1,2898 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2020, NEC Corporation. - * - * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. - * - *****************************************************************************/ - -/* - * SKINNY-128-384 - * - * AC(c0 c1) ^ TK3 -> store - * ART(TK3) - * - * number of rounds : 56 - */ - -__attribute__((aligned(4))) -void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) -{ - // r0 : points to roundKeys(& masterKey) - // r1 : points to RC - // r2-r5 : key state - // r6-r7 : temp use - // r8 : constant(0x7f7f7f7f) - // r9 : constant(0x80808080) - asm volatile( - "stmdb sp!, {r4-r9} \n\t" - "ldr.w r2, [r0,#32] \n\t" // load master key - "ldr.w r3, [r0,#36] \n\t" // load master key - "ldr.w r4, [r0,#40] \n\t" // load master key - "ldr.w r5, [r0,#44] \n\t" // load master key - "mov.w r8, #0x7f7f7f7f \n\t" - "mov.w r9, #0x80808080 \n\t" - - // round 1 - - // AC(c0 c1) - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#512] \n\t" - "str.w r3, [r0,#516] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 2 - - // AC(c0 c1) - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#520] \n\t" - "str.w r3, [r0,#524] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 3 - - // AC(c0 c1) - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#528] \n\t" - "str.w r3, [r0,#532] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 4 - - // AC(c0 c1) - "eor.w r6, r2, #0xf \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#536] \n\t" - "str.w r3, [r0,#540] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 5 - - // AC(c0 c1) - "eor.w r6, r2, #0xf \n\t" // k0^rc - "eor.w r7, r3, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#544] \n\t" - "str.w r7, [r0,#548] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 6 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#552] \n\t" - "str.w r7, [r0,#556] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 7 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xd \n\t" // k0^rc - - - // round key store - "str.w r6, [r0,#560] \n\t" - "str.w r7, [r0,#564] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 8 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#568] \n\t" - "str.w r7, [r0,#572] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 9 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#576] \n\t" - "str.w r7, [r0,#580] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 10 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xf \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#584] \n\t" - "str.w r7, [r0,#588] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 11 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#592] \n\t" - "str.w r7, [r0,#596] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 12 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#600] \n\t" - "str.w r7, [r0,#604] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 13 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#608] \n\t" - "str.w r7, [r0,#612] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 14 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#616] \n\t" - "str.w r7, [r0,#620] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 15 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#624] \n\t" - "str.w r7, [r0,#628] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 16 - - // AC(c0 c1) - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#632] \n\t" - "str.w r3, [r0,#636] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 17 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xd \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#640] \n\t" - "str.w r7, [r0,#644] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 18 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0xa \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#648] \n\t" - "str.w r7, [r0,#652] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 19 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x5 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#656] \n\t" - "str.w r7, [r0,#660] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 20 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#664] \n\t" - "str.w r7, [r0,#668] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 21 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#672] \n\t" - "str.w r7, [r0,#676] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 22 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#680] \n\t" - "str.w r7, [r0,#684] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 23 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x8 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#688] \n\t" - "str.w r7, [r0,#692] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 24 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x0 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#696] \n\t" - "str.w r7, [r0,#700] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 25 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#704] \n\t" - "str.w r7, [r0,#708] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 26 - - // AC(c0 c1) - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#712] \n\t" - "str.w r3, [r0,#716] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 27 - - // AC(c0 c1) - "eor.w r6, r2, #0x5 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#720] \n\t" - "str.w r3, [r0,#724] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 28 - - // AC(c0 c1) - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#728] \n\t" - "str.w r3, [r0,#732] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 29 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x7 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#736] \n\t" - "str.w r7, [r0,#740] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 30 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xe \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#744] \n\t" - "str.w r7, [r0,#748] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 31 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#752] \n\t" - "str.w r7, [r0,#756] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 32 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x8 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#760] \n\t" - "str.w r7, [r0,#764] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 33 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#768] \n\t" - "str.w r7, [r0,#772] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 34 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#776] \n\t" - "str.w r7, [r0,#780] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 35 - - // AC(c0 c1) - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#784] \n\t" - "str.w r3, [r0,#788] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 36 - - // AC(c0 c1) - "eor.w r6, r2, #0xd \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#792] \n\t" - "str.w r3, [r0,#796] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 37 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xb \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#800] \n\t" - "str.w r7, [r0,#804] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 38 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#808] \n\t" - "str.w r7, [r0,#812] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 39 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0xd \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#816] \n\t" - "str.w r7, [r0,#820] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 40 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0xa \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#824] \n\t" - "str.w r7, [r0,#828] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 41 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x4 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#832] \n\t" - "str.w r7, [r0,#836] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 42 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#840] \n\t" - "str.w r7, [r0,#844] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 43 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#848] \n\t" - "str.w r7, [r0,#852] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 44 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x4 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#856] \n\t" - "str.w r7, [r0,#860] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 45 - - // AC(c0 c1) - "eor.w r6, r2, #0x8 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#864] \n\t" - "str.w r3, [r0,#868] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 46 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x1 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#872] \n\t" - "str.w r7, [r0,#876] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 47 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#880] \n\t" - "str.w r7, [r0,#884] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 48 - - // AC(c0 c1) - "eor.w r6, r2, #0x4 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#888] \n\t" - "str.w r3, [r0,#892] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 49 - - // AC(c0 c1) - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#896] \n\t" - "str.w r3, [r0,#900] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 50 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x3 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#904] \n\t" - "str.w r7, [r0,#908] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 51 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x6 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#912] \n\t" - "str.w r7, [r0,#916] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 52 - - // AC(c0 c1) - "eor.w r6, r2, #0xc \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#920] \n\t" - "str.w r3, [r0,#924] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 53 - - // AC(c0 c1) - "eor.w r7, r3, #0x1 \n\t" // k0^rc - "eor.w r6, r2, #0x9 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#928] \n\t" - "str.w r7, [r0,#932] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 54 - - // AC(c0 c1) - "eor.w r7, r3, #0x3 \n\t" // k0^rc - "eor.w r6, r2, #0x2 \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#936] \n\t" - "str.w r7, [r0,#940] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 55 - - // AC(c0 c1) - "eor.w r7, r3, #0x2 \n\t" // k0^rc - "eor.w r6, r2, #0x5 \n\t" // k0^rc - // round key store - "str.w r6, [r0,#944] \n\t" - "str.w r7, [r0,#948] \n\t" - - // permutation - // r2 (k3 k2 k1 k0) k13 k8 k15 k9 - // r3 (k7 k6 k5 k4) k11 k12 k14 k10 - // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 - // r5 (k15 k14 k13 k12) k7 k6 k5 k4 - "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) - "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) - "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) - "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) -#ifdef STM32F4 // for Cortex-M4 - "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) - "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) - "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) - "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) - "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) - "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) -#else // for Cortex-M3 - "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) - "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) - "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) - "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) - "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) - "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) - "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) - "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) - "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) -#endif - // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) - "and.w r6, r8, r2, lsr #1 \n\t" - "and.w r7, r9, r2, lsl #7 \n\t" - "and.w r2, r9, r2, lsl #1 \n\t" - "eor.w r2, r7 \n\t" - "eor.w r2, r6 \n\t" - - "and.w r6, r8, r3, lsr #1 \n\t" - "and.w r7, r9, r3, lsl #7 \n\t" - "and.w r3, r9, r3, lsl #1 \n\t" - "eor.w r3, r7 \n\t" - "eor.w r3, r6 \n\t" - - // round 56 - - // AC(c0 c1) - "eor.w r6, r2, #0xa \n\t" // k0^rc - - // round key store - "str.w r6, [r0,#952] \n\t" - "str.w r3, [r0,#956] \n\t" - - // permutation - - // not need to calculate (not used) - - "ldmia.w sp!, {r4-r9} \n\t" - : - : [roundKeys] "r" (roundKeys), [pRC] "r" (pRC) - : "cc"); -} diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_main.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_main.c deleted file mode 100644 index 217b8a6..0000000 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_main.c +++ /dev/null @@ -1,4687 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2020, NEC Corporation. - * - * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. - * - *****************************************************************************/ - -/* - * SKINNY-128-384 - * - * ART(TK1) -> store - * load AC(c0 c1) ^ TK3 ^ TK2 - * load TK1 - * calc AC(c0 c1) ^ TK3 ^ TK2 ^ TK1 -> use at (AC->ART) - * SC->SR->(AC->ART)->MC - * - * number of rounds : 56 - */ - -#include "skinny.h" - -/* - * S-BOX - */ -unsigned char SBOX[512] -= { - // Original - 0x65, 0x4c, 0x6a, 0x42, 0x4b, 0x63, 0x43, 0x6b, 0x55, 0x75, 0x5a, 0x7a, 0x53, 0x73, 0x5b, 0x7b, - 0x35, 0x8c, 0x3a, 0x81, 0x89, 0x33, 0x80, 0x3b, 0x95, 0x25, 0x98, 0x2a, 0x90, 0x23, 0x99, 0x2b, - 0xe5, 0xcc, 0xe8, 0xc1, 0xc9, 0xe0, 0xc0, 0xe9, 0xd5, 0xf5, 0xd8, 0xf8, 0xd0, 0xf0, 0xd9, 0xf9, - 0xa5, 0x1c, 0xa8, 0x12, 0x1b, 0xa0, 0x13, 0xa9, 0x05, 0xb5, 0x0a, 0xb8, 0x03, 0xb0, 0x0b, 0xb9, - 0x32, 0x88, 0x3c, 0x85, 0x8d, 0x34, 0x84, 0x3d, 0x91, 0x22, 0x9c, 0x2c, 0x94, 0x24, 0x9d, 0x2d, - 0x62, 0x4a, 0x6c, 0x45, 0x4d, 0x64, 0x44, 0x6d, 0x52, 0x72, 0x5c, 0x7c, 0x54, 0x74, 0x5d, 0x7d, - 0xa1, 0x1a, 0xac, 0x15, 0x1d, 0xa4, 0x14, 0xad, 0x02, 0xb1, 0x0c, 0xbc, 0x04, 0xb4, 0x0d, 0xbd, - 0xe1, 0xc8, 0xec, 0xc5, 0xcd, 0xe4, 0xc4, 0xed, 0xd1, 0xf1, 0xdc, 0xfc, 0xd4, 0xf4, 0xdd, 0xfd, - 0x36, 0x8e, 0x38, 0x82, 0x8b, 0x30, 0x83, 0x39, 0x96, 0x26, 0x9a, 0x28, 0x93, 0x20, 0x9b, 0x29, - 0x66, 0x4e, 0x68, 0x41, 0x49, 0x60, 0x40, 0x69, 0x56, 0x76, 0x58, 0x78, 0x50, 0x70, 0x59, 0x79, - 0xa6, 0x1e, 0xaa, 0x11, 0x19, 0xa3, 0x10, 0xab, 0x06, 0xb6, 0x08, 0xba, 0x00, 0xb3, 0x09, 0xbb, - 0xe6, 0xce, 0xea, 0xc2, 0xcb, 0xe3, 0xc3, 0xeb, 0xd6, 0xf6, 0xda, 0xfa, 0xd3, 0xf3, 0xdb, 0xfb, - 0x31, 0x8a, 0x3e, 0x86, 0x8f, 0x37, 0x87, 0x3f, 0x92, 0x21, 0x9e, 0x2e, 0x97, 0x27, 0x9f, 0x2f, - 0x61, 0x48, 0x6e, 0x46, 0x4f, 0x67, 0x47, 0x6f, 0x51, 0x71, 0x5e, 0x7e, 0x57, 0x77, 0x5f, 0x7f, - 0xa2, 0x18, 0xae, 0x16, 0x1f, 0xa7, 0x17, 0xaf, 0x01, 0xb2, 0x0e, 0xbe, 0x07, 0xb7, 0x0f, 0xbf, - 0xe2, 0xca, 0xee, 0xc6, 0xcf, 0xe7, 0xc7, 0xef, 0xd2, 0xf2, 0xde, 0xfe, 0xd7, 0xf7, 0xdf, 0xff, - - // Original ^ c2(0x02) - 0x67, 0x4e, 0x68, 0x40, 0x49, 0x61, 0x41, 0x69, 0x57, 0x77, 0x58, 0x78, 0x51, 0x71, 0x59, 0x79, - 0x37, 0x8e, 0x38, 0x83, 0x8b, 0x31, 0x82, 0x39, 0x97, 0x27, 0x9a, 0x28, 0x92, 0x21, 0x9b, 0x29, - 0xe7, 0xce, 0xea, 0xc3, 0xcb, 0xe2, 0xc2, 0xeb, 0xd7, 0xf7, 0xda, 0xfa, 0xd2, 0xf2, 0xdb, 0xfb, - 0xa7, 0x1e, 0xaa, 0x10, 0x19, 0xa2, 0x11, 0xab, 0x07, 0xb7, 0x08, 0xba, 0x01, 0xb2, 0x09, 0xbb, - 0x30, 0x8a, 0x3e, 0x87, 0x8f, 0x36, 0x86, 0x3f, 0x93, 0x20, 0x9e, 0x2e, 0x96, 0x26, 0x9f, 0x2f, - 0x60, 0x48, 0x6e, 0x47, 0x4f, 0x66, 0x46, 0x6f, 0x50, 0x70, 0x5e, 0x7e, 0x56, 0x76, 0x5f, 0x7f, - 0xa3, 0x18, 0xae, 0x17, 0x1f, 0xa6, 0x16, 0xaf, 0x00, 0xb3, 0x0e, 0xbe, 0x06, 0xb6, 0x0f, 0xbf, - 0xe3, 0xca, 0xee, 0xc7, 0xcf, 0xe6, 0xc6, 0xef, 0xd3, 0xf3, 0xde, 0xfe, 0xd6, 0xf6, 0xdf, 0xff, - 0x34, 0x8c, 0x3a, 0x80, 0x89, 0x32, 0x81, 0x3b, 0x94, 0x24, 0x98, 0x2a, 0x91, 0x22, 0x99, 0x2b, - 0x64, 0x4c, 0x6a, 0x43, 0x4b, 0x62, 0x42, 0x6b, 0x54, 0x74, 0x5a, 0x7a, 0x52, 0x72, 0x5b, 0x7b, - 0xa4, 0x1c, 0xa8, 0x13, 0x1b, 0xa1, 0x12, 0xa9, 0x04, 0xb4, 0x0a, 0xb8, 0x02, 0xb1, 0x0b, 0xb9, - 0xe4, 0xcc, 0xe8, 0xc0, 0xc9, 0xe1, 0xc1, 0xe9, 0xd4, 0xf4, 0xd8, 0xf8, 0xd1, 0xf1, 0xd9, 0xf9, - 0x33, 0x88, 0x3c, 0x84, 0x8d, 0x35, 0x85, 0x3d, 0x90, 0x23, 0x9c, 0x2c, 0x95, 0x25, 0x9d, 0x2d, - 0x63, 0x4a, 0x6c, 0x44, 0x4d, 0x65, 0x45, 0x6d, 0x53, 0x73, 0x5c, 0x7c, 0x55, 0x75, 0x5d, 0x7d, - 0xa0, 0x1a, 0xac, 0x14, 0x1d, 0xa5, 0x15, 0xad, 0x03, 0xb0, 0x0c, 0xbc, 0x05, 0xb5, 0x0d, 0xbd, - 0xe0, 0xc8, 0xec, 0xc4, 0xcd, 0xe5, 0xc5, 0xed, 0xd0, 0xf0, 0xdc, 0xfc, 0xd5, 0xf5, 0xdd, 0xfd, -}; - -/* - * Round Constants - */ -unsigned char RC[56] -= { - 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, - 0x34, 0x29, 0x12, 0x24, 0x08, 0x11, 0x22, 0x04, - 0x09, 0x13, 0x26, 0x0c, 0x19, 0x32, 0x25, 0x0a,}; - -extern void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) __attribute__((noinline)); -extern void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) __attribute__((noinline)); -extern void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) __attribute__((noinline)); - -void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) -{ - *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); - *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); - *((unsigned int *)&pskinny_ctrl->roundKeys[32]) = *((unsigned int *)&K[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[36]) = *((unsigned int *)&K[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[40]) = *((unsigned int *)&K[8]); - *((unsigned int *)&pskinny_ctrl->roundKeys[44]) = *((unsigned int *)&K[12]); - - RunEncryptionKeyScheduleTK3(pskinny_ctrl->roundKeys, RC); - RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); - Encrypt(input, pskinny_ctrl->roundKeys, SBOX); - - pskinny_ctrl->func_skinny_128_384_enc = skinny_128_384_enc12_12; -} - -void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) -{ - (void)K; - - *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); - *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); - *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); - - RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); - Encrypt(input, pskinny_ctrl->roundKeys, SBOX); -} - -extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) -{ - (void)T; - (void)K; - - *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); - *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); - - Encrypt(input, pskinny_ctrl->roundKeys, SBOX); -} - -__attribute__((aligned(4))) -void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) -{ - // r0 : ponits to plaintext - // r1 : points to roundKeys(& masterKey) - // r2 : points to SBOX - // r3-r6 : cipher state - // r7-r12: temp use - // r14 : temp use - asm volatile( - "stmdb sp!, {r4-r12,r14} \n\t" - "stmdb.w sp!, {r0} \n\t" // push store pointer - -// ART(TK1) - - "ldm.w r1, {r3-r4} \n\t" // load master key - - // round 1-2 - -// // round key store(do not need) -// "str.w r3, [r1,#0] \n\t" -// "str.w r4, [r1,#4] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 3-4 - - // round key store - "str.w r5, [r1,#8] \n\t" - "str.w r6, [r1,#12] \n\t" - - // premutation - - // r3 (--- --- --- ---) k5 k0 k7 k1 - // r4 (--- --- --- ---) k3 k4 k6 k2 - // r5 ( k3 k2 k1 k0) -----> --- --- --- --- - // r6 ( k7 k6 k5 k4) --- --- --- --- -#ifdef STM32F4 // for Cortex-M4 - "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) - "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) - "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) - "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) - "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) - "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) - "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) - "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) - "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) - "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) - "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) - "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) -#endif - - // round 5-6 - - // round key store - "str.w r3, [r1,#16] \n\t" - "str.w r4, [r1,#20] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 7-8 - - // round key store - "str.w r5, [r1,#24] \n\t" - "str.w r6, [r1,#28] \n\t" - - // premutation - - // r3 (--- --- --- ---) k5 k0 k7 k1 - // r4 (--- --- --- ---) k3 k4 k6 k2 - // r5 ( k3 k2 k1 k0) -----> --- --- --- --- - // r6 ( k7 k6 k5 k4) --- --- --- --- -#ifdef STM32F4 // for Cortex-M4 - "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) - "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) - "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) - "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) - "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) - "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) - "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) - "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) - "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) - "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) - "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) - "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) -#endif - - // round 9-10 - - // round key store - "str.w r3, [r1,#32] \n\t" - "str.w r4, [r1,#36] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 11-12 - - // round key store - "str.w r5, [r1,#40] \n\t" - "str.w r6, [r1,#44] \n\t" - - // premutation - - // r3 (--- --- --- ---) k5 k0 k7 k1 - // r4 (--- --- --- ---) k3 k4 k6 k2 - // r5 ( k3 k2 k1 k0) -----> --- --- --- --- - // r6 ( k7 k6 k5 k4) --- --- --- --- -#ifdef STM32F4 // for Cortex-M4 - "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) - "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) - "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) - "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) - "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) - "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) - "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) - "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) - "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) - "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) - "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) - "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) - "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) - "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) -#endif - - // round 13-14 - - // round key store - "str.w r3, [r1,#48] \n\t" - "str.w r4, [r1,#52] \n\t" - - // premutation - - // r3 ( k3 k2 k1 k0) --- --- --- --- - // r4 ( k7 k6 k5 k4) --- --- --- --- - // r5 (--- --- --- ---) -----> k5 k0 k7 k1 - // r6 (--- --- --- ---) k3 k4 k6 k2 -#ifdef STM32F4 // for Cortex-M4 - "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) - "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) - "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) - "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) - "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) - "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) -#else // for Cortex-M3 - "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) - "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) - "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) - "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) - "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) - "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) - "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) - "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) - "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) -#endif - // round 15-16 - - // round key store - "str.w r5, [r1,#56] \n\t" - "str.w r6, [r1,#60] \n\t" - - // premutation - - // not need to calculate (not used) - -// SC->(AC->ART)->SR->MC - - "add.w r14, r2, #256 \n\t" // point to SBOX ^ c2(0x02) - - "ldm.w r0, {r3-r6} \n\t" // load plaintext - // r0 now free to overwrite - - // round 1 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#64] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#68] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 2 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#72] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#76] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 3 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#80] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#84] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 4 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#88] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#92] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 5 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#96] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#100] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 6 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#104] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#108] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 7 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#112] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#116] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 8 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#120] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#124] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 9 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#32] \n\t" // load TK1 - "ldr.w r10, [r1,#36] \n\t" // load TK1 - "ldr.w r11, [r1,#128] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#132] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 10 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#136] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#140] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 11 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#40] \n\t" // load TK1 - "ldr.w r10, [r1,#44] \n\t" // load TK1 - "ldr.w r11, [r1,#144] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#148] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 12 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#152] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#156] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 13 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#48] \n\t" // load TK1 - "ldr.w r10, [r1,#52] \n\t" // load TK1 - "ldr.w r11, [r1,#160] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#164] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 14 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#168] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#172] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 15 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#56] \n\t" // load TK1 - "ldr.w r10, [r1,#60] \n\t" // load TK1 - "ldr.w r11, [r1,#176] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#180] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 16 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#184] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#188] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 17 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#192] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#196] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 18 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#200] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#204] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 19 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#208] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#212] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 20 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#216] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#220] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 21 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#224] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#228] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 22 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#232] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#236] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 23 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#240] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#244] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 24 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#248] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#252] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 25 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#32] \n\t" // load TK1 - "ldr.w r10, [r1,#36] \n\t" // load TK1 - "ldr.w r11, [r1,#256] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#260] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 26 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#264] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#268] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 27 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#40] \n\t" // load TK1 - "ldr.w r10, [r1,#44] \n\t" // load TK1 - "ldr.w r11, [r1,#272] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#276] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 28 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#280] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#284] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 29 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#48] \n\t" // load TK1 - "ldr.w r10, [r1,#52] \n\t" // load TK1 - "ldr.w r11, [r1,#288] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#292] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 30 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#296] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#300] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 31 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#56] \n\t" // load TK1 - "ldr.w r10, [r1,#60] \n\t" // load TK1 - "ldr.w r11, [r1,#304] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#308] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 32 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#312] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#316] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 33 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#320] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#324] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 34 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#328] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#332] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 35 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#336] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#340] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 36 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#344] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#348] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 37 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#352] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#356] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 38 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#360] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#364] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 39 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#368] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#372] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 40 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#376] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#380] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - - // round 41 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#32] \n\t" // load TK1 - "ldr.w r10, [r1,#36] \n\t" // load TK1 - "ldr.w r11, [r1,#384] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#388] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 42 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#392] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#396] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 43 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#40] \n\t" // load TK1 - "ldr.w r10, [r1,#44] \n\t" // load TK1 - "ldr.w r11, [r1,#400] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#404] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 44 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#408] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#412] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 45 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#48] \n\t" // load TK1 - "ldr.w r10, [r1,#52] \n\t" // load TK1 - "ldr.w r11, [r1,#416] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#420] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 46 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#424] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#428] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 47 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#56] \n\t" // load TK1 - "ldr.w r10, [r1,#60] \n\t" // load TK1 - "ldr.w r11, [r1,#432] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#436] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 48 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#440] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#444] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 49 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#0] \n\t" // load TK1 - "ldr.w r10, [r1,#4] \n\t" // load TK1 - "ldr.w r11, [r1,#448] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#452] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 50 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#456] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#460] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 51 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#8] \n\t" // load TK1 - "ldr.w r10, [r1,#12] \n\t" // load TK1 - "ldr.w r11, [r1,#464] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#468] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 52 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#472] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#476] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 53 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#16] \n\t" // load TK1 - "ldr.w r10, [r1,#20] \n\t" // load TK1 - "ldr.w r11, [r1,#480] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#484] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 54 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#488] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#492] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - // round 55 - - // SubCell+ShiftRow+AC(c2) - // r3 (s3 s2 s1 s0) - // r4 (s7 s6 s5 s4) - // r5 (s11 s10 s9 s8) - // r6 (s15 s14 s13 s12) - - // 1st-2nd line - // r3(s3 s2 s1 s0) - "uxtb.w r9, r3, ror #24 \n\t" // s3 - "uxtb.w r8, r3, ror #16 \n\t" // s2 - "uxtb.w r7, r3, ror #8 \n\t" // s1 - "uxtb.w r3, r3 \n\t" // s0 - // r4(s6 s5 s4 s7) - "uxtb.w r12, r4, ror #16 \n\t" // s6 - "uxtb.w r11, r4, ror #8 \n\t" // s5 - "uxtb.w r10, r4 \n\t" // s4 - "uxtb.w r4, r4, ror #24 \n\t" // s7 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "eor.w r3, r3, r7, lsl #8 \n\t" - "eor.w r3, r3, r8, lsl #16 \n\t" - "eor.w r3, r3, r9, lsl #24 \n\t" - "eor.w r4, r4, r10, lsl #8 \n\t" - "eor.w r4, r4, r11, lsl #16 \n\t" - "eor.w r4, r4, r12, lsl #24 \n\t" - - // 3rd-4th line - // r5(s9 s8 s11 s10) - "uxtb.w r9, r5, ror #8 \n\t" // s9 - "uxtb.w r8, r5 \n\t" // s8 - "uxtb.w r7, r5, ror #24 \n\t" // s11 - "uxtb.w r5, r5, ror #16 \n\t" // s10 - // r6(s12 s15 s14 s13) - "uxtb.w r12, r6 \n\t" // s12 - "uxtb.w r11, r6, ror #24 \n\t" // s15 - "uxtb.w r10, r6, ror #16 \n\t" // s14 - "uxtb.w r6, r6, ror #8 \n\t" // s13 - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "eor.w r5, r5, r7, lsl #8 \n\t" - "eor.w r5, r5, r8, lsl #16 \n\t" - "eor.w r5, r5, r9, lsl #24 \n\t" - "eor.w r6, r6, r10, lsl #8 \n\t" - "eor.w r6, r6, r11, lsl #16 \n\t" - "eor.w r6, r6, r12, lsl #24 \n\t" - - // AddRoundKey and AddRoundConst(from roundKeys) - "ldr.w r9, [r1,#24] \n\t" // load TK1 - "ldr.w r10, [r1,#28] \n\t" // load TK1 - "ldr.w r11, [r1,#496] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "ldr.w r12, [r1,#500] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) - - "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) - "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) - // r8( s9 s8 s11 s10) - // r6(s12 s14 s14 s13) - - // MixColumn - "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 - "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 - "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 - // r8 ----------------> r8 - - // round 56 - - // SubCell+ShiftRow+AC(c2) - // r7 (s3 s2 s1 s0) - // r8 (s7 s6 s5 s4) - // r9 (s11 s10 s9 s8) - // r10(s15 s14 s13 s12) - - // 1st-2nd line - // r7(s3 s2 s1 s0) - "uxtb.w r5, r7, ror #24 \n\t" // s3 - "uxtb.w r4, r7, ror #16 \n\t" // s2 - "uxtb.w r3, r7, ror #8 \n\t" // s1 - "uxtb.w r7, r7 \n\t" // s0 - // r8(s6 s5 s4 s7) - "uxtb.w r12, r8, ror #16 \n\t" // s6 - "uxtb.w r11, r8, ror #8 \n\t" // s5 - "uxtb.w r6, r8 \n\t" // s4 - "uxtb.w r8, r8, ror #24 \n\t" // s7 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r4, [r2,r4] \n\t" - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r7, [r2,r7] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r8, [r2,r8] \n\t" - "ldr.w r0, [r1,#504] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r7, r7, r3, lsl #8 \n\t" - "eor.w r7, r7, r4, lsl #16 \n\t" - "eor.w r7, r7, r5, lsl #24 \n\t" - "eor.w r8, r8, r6, lsl #8 \n\t" - "eor.w r8, r8, r11, lsl #16 \n\t" - "eor.w r8, r8, r12, lsl #24 \n\t" - "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) - - // 3rd-4th line - // r9(s9 s8 s11 s10) - "uxtb.w r5, r9, ror #8 \n\t" // s9 - "uxtb.w r7, r9 \n\t" // s8 - "uxtb.w r3, r9, ror #24 \n\t" // s11 - "uxtb.w r9, r9, ror #16 \n\t" // s10 - // r10(s12 s15 s14 s13) - "uxtb.w r12, r10 \n\t" // s12 - "uxtb.w r11, r10, ror #24 \n\t" // s15 - "uxtb.w r6, r10, ror #16 \n\t" // s14 - "uxtb.w r10, r10, ror #8 \n\t" // s13 - "ldrb.w r5, [r2,r5] \n\t" - "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) - "ldrb.w r3, [r2,r3] \n\t" - "ldrb.w r9, [r2,r9] \n\t" - "ldrb.w r12, [r2,r12] \n\t" - "ldrb.w r11, [r2,r11] \n\t" - "ldrb.w r6, [r2,r6] \n\t" - "ldrb.w r10, [r2,r10] \n\t" - "ldr.w r0, [r1,#508] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) - "eor.w r9, r9, r3, lsl #8 \n\t" - "eor.w r9, r9, r7, lsl #16 \n\t" - "eor.w r9, r9, r5, lsl #24 \n\t" - "eor.w r10, r10, r6, lsl #8 \n\t" - "eor.w r10, r10, r11, lsl #16 \n\t" - "eor.w r10, r10, r12, lsl #24 \n\t" - "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) - - // AddRoundKey and AddRoundConst(from roundKeys) - - // r9( s9 s8 s11 s10) - // r10(s12 s14 s14 s13) - - // MixColumn - "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 - "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 - "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 - // r4 ----------------> r4 - - "ldmia.w sp!, {r0} \n\t" // pop store pointer - // r0 reload - - "str.w r3, [r0,#0] \n\t" // store ciphertext - "str.w r4, [r0,#4] \n\t" // store ciphertext - "str.w r5, [r0,#8] \n\t" // store ciphertext - "str.w r6, [r0,#12] \n\t" // store ciphertext - - "ldmia.w sp!, {r4-r12,r14} \n\t" - : - : [block] "r" (block), [roundKeys] "r" (roundKeys), [pSBOX] "" (pSBOX) - : "cc"); -} - diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/api.h b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/crypto_aead.h b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/crypto_aead.h new file mode 100644 index 0000000..cfc09d6 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/crypto_aead.h @@ -0,0 +1,11 @@ +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); + +int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, + 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); diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c new file mode 100644 index 0000000..e953677 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/encrypt.c @@ -0,0 +1,540 @@ +/* + * Date: 29 November 2018 + * Contact: Thomas Peyrin - thomas.peyrin@gmail.com + * Mustafa Khairallah - mustafam001@e.ntu.edu.sg + */ + +#include "crypto_aead.h" +#include "api.h" +#include "skinny.h" +#include +#include + +void pad (const unsigned char* m, unsigned char* mp, int l, int len8) { + int i; + + for (i = 0; i < l; i++) { + if (i < len8) { + mp[i] = m[i]; + } + else if (i == l - 1) { + mp[i] = (len8 & 0x0f); + } + else { + mp[i] = 0x00; + } + } + +} + +void g8A (unsigned char* s, unsigned char* c) { + unsigned int tmps[4]; + unsigned int tmpc[4]; + + tmps[0] = *((unsigned int *)&s[0]); + tmps[1] = *((unsigned int *)&s[4]); + tmps[2] = *((unsigned int *)&s[8]); + tmps[3] = *((unsigned int *)&s[12]); + + // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); + // + // (s[i] >> 1) -> ((s[i]>>1)&0x7f) + // (s[i] & 0x80) -> (s[i])&0x80) not changed + // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) + + // use word access because of speeding up + tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); + tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); + tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); + tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); + + *((unsigned int *)&c[0]) = tmpc[0]; + *((unsigned int *)&c[4]) = tmpc[1]; + *((unsigned int *)&c[8]) = tmpc[2]; + *((unsigned int *)&c[12]) = tmpc[3]; +} + +void g8A_for_Tag_Generation (unsigned char* s, unsigned char* c) { + unsigned int tmps[4]; + unsigned int tmpc[4]; + + tmps[0] = *((unsigned int *)&s[0]); + tmps[1] = *((unsigned int *)&s[4]); + tmps[2] = *((unsigned int *)&s[8]); + tmps[3] = *((unsigned int *)&s[12]); + + // c[i] = (s[i] >> 1) ^ (s[i] & 0x80) ^ ((s[i] & 0x01) << 7); + // + // (s[i] >> 1) -> ((s[i]>>1)&0x7f) + // (s[i] & 0x80) -> (s[i])&0x80) not changed + // ((s[i] & 0x01) << 7) -> ((s[i]<<7)&0x80) + + // use word access because of speeding up + tmpc[0] = ((tmps[0]>>1) & 0x7f7f7f7f) ^ (tmps[0] & 0x80808080) ^ ((tmps[0]<<7) & 0x80808080); + tmpc[1] = ((tmps[1]>>1) & 0x7f7f7f7f) ^ (tmps[1] & 0x80808080) ^ ((tmps[1]<<7) & 0x80808080); + tmpc[2] = ((tmps[2]>>1) & 0x7f7f7f7f) ^ (tmps[2] & 0x80808080) ^ ((tmps[2]<<7) & 0x80808080); + tmpc[3] = ((tmps[3]>>1) & 0x7f7f7f7f) ^ (tmps[3] & 0x80808080) ^ ((tmps[3]<<7) & 0x80808080); + + // use byte access because of memory alignment. + // c is not always in word(4 byte) alignment. + c[0] = tmpc[0] &0xFF; + c[1] = (tmpc[0]>>8) &0xFF; + c[2] = (tmpc[0]>>16)&0xFF; + c[3] = (tmpc[0]>>24)&0xFF; + c[4] = tmpc[1] &0xFF; + c[5] = (tmpc[1]>>8) &0xFF; + c[6] = (tmpc[1]>>16)&0xFF; + c[7] = (tmpc[1]>>24)&0xFF; + c[8] = tmpc[2] &0xFF; + c[9] = (tmpc[2]>>8) &0xFF; + c[10] = (tmpc[2]>>16)&0xFF; + c[11] = (tmpc[2]>>24)&0xFF; + c[12] = tmpc[3] &0xFF; + c[13] = (tmpc[3]>>8) &0xFF; + c[14] = (tmpc[3]>>16)&0xFF; + c[15] = (tmpc[3]>>24)&0xFF; +} + +void rho_ad_eqov16 (const unsigned char* m, + unsigned char* s) { + *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); +} + +void rho_ad_ud16 (const unsigned char* m, + unsigned char* s, + int len8) { + unsigned char mp [16]; + + pad(m,mp,16,len8); + *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); +} + +void rho_eqov16 (const unsigned char* m, + unsigned char* c, + unsigned char* s) { + g8A(s,c); + + *((unsigned int *)&s[0]) ^= *((unsigned int *)&m[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&m[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&m[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&m[12]); + + *((unsigned int *)&c[0]) ^= *((unsigned int *)&m[0]); + *((unsigned int *)&c[4]) ^= *((unsigned int *)&m[4]); + *((unsigned int *)&c[8]) ^= *((unsigned int *)&m[8]); + *((unsigned int *)&c[12]) ^= *((unsigned int *)&m[12]); +} + +void rho_ud16 (const unsigned char* m, + unsigned char* c, + unsigned char* s, + int len8, + int ver) { + int i; + unsigned char mp [16]; + + pad(m,mp,ver,len8); + + g8A(s,c); + *((unsigned int *)&s[0]) ^= *((unsigned int *)&mp[0]); + *((unsigned int *)&s[4]) ^= *((unsigned int *)&mp[4]); + *((unsigned int *)&s[8]) ^= *((unsigned int *)&mp[8]); + *((unsigned int *)&s[12]) ^= *((unsigned int *)&mp[12]); + for (i = 0; i < ver; i++) { + if (i < len8) { + c[i] = c[i] ^ mp[i]; + } + else { + c[i] = 0; + } + } +} + +void irho (unsigned char* m, + const unsigned char* c, + unsigned char* s, + int len8, + int ver) { + int i; + unsigned char cp [16]; + + pad(c,cp,ver,len8); + + g8A(s,m); + for (i = 0; i < ver; i++) { + if (i < len8) { + s[i] = s[i] ^ cp[i] ^ m[i]; + } + else { + s[i] = s[i] ^ cp[i]; + } + if (i < len8) { + m[i] = m[i] ^ cp[i]; + } + else { + m[i] = 0; + } + } +} + +void reset_lfsr_gf56 (unsigned char* CNT) { + *((unsigned int *)&CNT[0]) = 0x00000001; + *((unsigned int *)&CNT[4]) = 0x00000000; +} + +void lfsr_gf56 (unsigned char* CNT) { + unsigned int tmpCNT[2]; + unsigned int fb0; + + tmpCNT[0] = *((unsigned int *)&CNT[0]); // CNT3 CNT2 CNT1 CNT0 + tmpCNT[1] = *((unsigned int *)&CNT[4]); // CNT7 CNT6 CNT5 CNT4 + + fb0 = 0; + if ((tmpCNT[1] >> 23)&0x01) { + fb0 = 0x95; + } + + tmpCNT[1] = tmpCNT[1] << 1 | tmpCNT[0] >> 31; + tmpCNT[0] = tmpCNT[0] << 1 ^ fb0; + + *((unsigned int *)&CNT[0]) = tmpCNT[0]; + *((unsigned int *)&CNT[4]) = tmpCNT[1]; +} + +void block_cipher(unsigned char* s, + const unsigned char* k, unsigned char* T, + unsigned char* CNT, + skinny_ctrl* p_skinny_ctrl) { + p_skinny_ctrl->func_skinny_128_384_enc (s,p_skinny_ctrl,CNT,T,k); +} + +void nonce_encryption (const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + skinny_ctrl* p_skinny_ctrl) { + unsigned char T [16]; + + *((unsigned int *)&T[0]) = *((unsigned int *)&N[0]); + *((unsigned int *)&T[4]) = *((unsigned int *)&N[4]); + *((unsigned int *)&T[8]) = *((unsigned int *)&N[8]); + *((unsigned int *)&T[12]) = *((unsigned int *)&N[12]); + CNT[7] = D; + block_cipher(s,k,T,CNT,p_skinny_ctrl); + +} + +void generate_tag (unsigned char** c, unsigned char* s, + int n, unsigned long long* clen) { + g8A_for_Tag_Generation(s, *c); + *c = *c + n; + *c = *c - *clen; +} + +unsigned long long msg_encryption_eqov16 (const unsigned char** M, unsigned char** c, + const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + unsigned long long mlen, + skinny_ctrl* p_skinny_ctrl) { + rho_eqov16(*M, *c, s); + *c = *c + 16; + *M = *M + 16; + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); + return mlen - 16; +} + +unsigned long long msg_encryption_ud16 (const unsigned char** M, unsigned char** c, + const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + unsigned long long mlen, + skinny_ctrl* p_skinny_ctrl) { + rho_ud16(*M, *c, s, mlen, 16); + *c = *c + mlen; + *M = *M + mlen; + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); + return 0; +} + +unsigned long long msg_decryption (unsigned char** M, const unsigned char** c, + const unsigned char* N, + unsigned char* CNT, + unsigned char*s, const unsigned char* k, + unsigned char D, + unsigned long long clen, + skinny_ctrl* p_skinny_ctrl) { + int len8; + + if (clen >= 16) { + len8 = 16; + clen = clen - 16; + } + else { + len8 = clen; + clen = 0; + } + irho(*M, *c, s, len8, 16); + *c = *c + len8; + *M = *M + len8; + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,D,p_skinny_ctrl); + return clen; +} + +unsigned long long ad_encryption_eqov32 (const unsigned char** A, unsigned char* s, + const unsigned char* k, unsigned long long adlen, + unsigned char* CNT, + unsigned char D, + skinny_ctrl* p_skinny_ctrl) { + + unsigned char T [16]; + + rho_ad_eqov16(*A, s); + *A = *A + 16; + lfsr_gf56(CNT); + + //pad(*A, T, 16, 16); + *((unsigned int *)&T[0]) = *((unsigned int *)&(*A)[0]); + *((unsigned int *)&T[4]) = *((unsigned int *)&(*A)[4]); + *((unsigned int *)&T[8]) = *((unsigned int *)&(*A)[8]); + *((unsigned int *)&T[12]) = *((unsigned int *)&(*A)[12]); + *A = *A + 16; + CNT[7] = D; + block_cipher(s,k,T,CNT,p_skinny_ctrl); + lfsr_gf56(CNT); + + return adlen - 32; +} + +unsigned long long ad_encryption_ov16 (const unsigned char** A, unsigned char* s, + const unsigned char* k, unsigned long long adlen, + unsigned char* CNT, + unsigned char D, + skinny_ctrl* p_skinny_ctrl) { + + unsigned char T [16]; + + adlen = adlen - 16; + rho_ad_eqov16(*A, s); + *A = *A + 16; + lfsr_gf56(CNT); + + pad(*A, T, 16, adlen); + *A = *A + adlen; + CNT[7] = D; + block_cipher(s,k,T,CNT,p_skinny_ctrl); + lfsr_gf56(CNT); + + return 0; +} + +unsigned long long ad_encryption_eq16 (const unsigned char** A, unsigned char* s, + unsigned char* CNT) { + + rho_ad_eqov16(*A, s); + *A = *A + 16; + lfsr_gf56(CNT); + + return 0; +} + +unsigned long long ad_encryption_ud16 (const unsigned char** A, unsigned char* s, + unsigned long long adlen, + unsigned char* CNT) { + + rho_ad_ud16(*A, s, adlen); + *A = *A + adlen; + lfsr_gf56(CNT); + + return 0; +} + +int crypto_aead_encrypt ( + unsigned char* c, unsigned long long* clen, + const unsigned char* m, unsigned long long mlen, + const unsigned char* ad, unsigned long long adlen, + const unsigned char* nsec, + const unsigned char* npub, + const unsigned char* k + ) +{ + unsigned char s[16]; + // size 7 -> 8 for word access + unsigned char CNT[8]; + const unsigned char* A; + const unsigned char* M; + const unsigned char* N; + + skinny_ctrl l_skinny_ctrl; + + (void) nsec; + A = ad; + M = m; + N = npub; + + l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; + + *((unsigned int *)&s[0]) = 0x00000000; + *((unsigned int *)&s[4]) = 0x00000000; + *((unsigned int *)&s[8]) = 0x00000000; + *((unsigned int *)&s[12]) = 0x00000000; + reset_lfsr_gf56(CNT); + + if (adlen == 0) { // AD is an empty string + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); + } + else while (adlen > 0) { + if (adlen < 16) { // The last block of AD is odd and incomplete + adlen = ad_encryption_ud16(&A,s,adlen,CNT); + nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); + } + else if (adlen == 16) { // The last block of AD is odd and complete + adlen = ad_encryption_eq16(&A,s,CNT); + nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); + } + else if (adlen < (32)) { // The last block of AD is even and incomplete + adlen = ad_encryption_ov16(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); + nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); + } + else if (adlen == (32)) { // The last block of AD is even and complete + adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); + nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); + } + else { // A normal full pair of blocks of AD + adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); + } + } + + // because, nonce_encryption is called at the last block of AD encryption + l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc1_1; + + reset_lfsr_gf56(CNT); + + *clen = mlen + 16; + + if (mlen == 0) { // M is an empty string + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,0x15,&l_skinny_ctrl); + } + else while (mlen > 0) { + if (mlen < 16) { // The last block of M is incomplete + mlen = msg_encryption_ud16(&M,&c,N,CNT,s,k,0x15,mlen,&l_skinny_ctrl); + } + else if (mlen == 16) { // The last block of M is complete + mlen = msg_encryption_eqov16(&M,&c,N,CNT,s,k,0x14,mlen,&l_skinny_ctrl); + } + else { // A normal full message block + mlen = msg_encryption_eqov16(&M,&c,N,CNT,s,k,0x04,mlen,&l_skinny_ctrl); + } + } + + // Tag generation + generate_tag(&c,s,16,clen); + + return 0; +} + +int crypto_aead_decrypt( +unsigned char *m,unsigned long long *mlen, +unsigned char *nsec, +const unsigned char *c,unsigned long long clen, +const unsigned char *ad,unsigned long long adlen, +const unsigned char *npub, +const unsigned char *k +) +{ + + unsigned char s[16]; + unsigned char T[16]; + // size 7 -> 8 for word access + unsigned char CNT[8]; + const unsigned char* A; + unsigned char* M; + const unsigned char* N; + unsigned int i; + + skinny_ctrl l_skinny_ctrl; + + (void) nsec; + A = ad; + M = m; + N = npub; + + l_skinny_ctrl.func_skinny_128_384_enc = skinny_128_384_enc123_12; + + for (i = 0; i < 16; i++) { + s[i] = 0; + } + reset_lfsr_gf56(CNT); + + if (adlen == 0) { // AD is an empty string + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); + } + else while (adlen > 0) { + if (adlen < 16) { // The last block of AD is odd and incomplete + adlen = ad_encryption_ud16(&A,s,adlen,CNT); + nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); + } + else if (adlen == 16) { // The last block of AD is odd and complete + adlen = ad_encryption_eq16(&A,s,CNT); + nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); + } + else if (adlen < (32)) { // The last block of AD is even and incomplete + adlen = ad_encryption_ov16(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); + nonce_encryption(N,CNT,s,k,0x1a,&l_skinny_ctrl); + } + else if (adlen == (32)) { // The last block of AD is even and complete + adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); + nonce_encryption(N,CNT,s,k,0x18,&l_skinny_ctrl); + } + else { // A normal full pair of blocks of AD + adlen = ad_encryption_eqov32(&A,s,k,adlen,CNT,0x08,&l_skinny_ctrl); + } + } + + reset_lfsr_gf56(CNT); + + clen = clen - 16; + *mlen = clen; + + if (clen == 0) { // C is an empty string + lfsr_gf56(CNT); + nonce_encryption(N,CNT,s,k,0x15,&l_skinny_ctrl); + } + else while (clen > 0) { + if (clen < 16) { // The last block of C is incomplete + clen = msg_decryption(&M,&c,N,CNT,s,k,0x15,clen,&l_skinny_ctrl); + } + else if (clen == 16) { // The last block of C is complete + clen = msg_decryption(&M,&c,N,CNT,s,k,0x14,clen,&l_skinny_ctrl); + } + else { // A normal full message block + clen = msg_decryption(&M,&c,N,CNT,s,k,0x04,clen,&l_skinny_ctrl); + } + } + + // Tag generation + g8A_for_Tag_Generation(s, T); + for (i = 0; i < 16; i++) { + if (T[i] != (*(c+i))) { + return -1; + } + } + + return 0; +} + + diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/genkat_aead.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/genkat_aead.c new file mode 100644 index 0000000..21f840f --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/genkat_aead.c @@ -0,0 +1,161 @@ +// +// NIST-developed software is provided by NIST as a public service. +// You may use, copy and distribute copies of the software in any medium, +// provided that you keep intact this entire notice. You may improve, +// modify and create derivative works of the software or any portion of +// the software, and you may copy and distribute such modifications or +// works. Modified works should carry a notice stating that you changed +// the software and should note the date and nature of any such change. +// Please explicitly acknowledge the National Institute of Standards and +// Technology as the source of the software. +// +// NIST-developed software is expressly provided "AS IS." NIST MAKES NO +// WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION +// OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST +// NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE +// UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST +// DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE +// OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, +// RELIABILITY, OR USEFULNESS OF THE SOFTWARE. +// +// You are solely responsible for determining the appropriateness of using and +// distributing the software and you assume all risks associated with its use, +// including but not limited to the risks and costs of program errors, compliance +// with applicable laws, damage to or loss of data, programs or equipment, and +// the unavailability or interruption of operation. This software is not intended +// to be used in any situation where a failure could cause risk of injury or +// damage to property. The software developed by NIST employees is not subject to +// copyright protection within the United States. +// + +// disable deprecation for sprintf and fopen +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS +#endif + +#include +#include + +#include "crypto_aead.h" +#include "api.h" + +#define KAT_SUCCESS 0 +#define KAT_FILE_OPEN_ERROR -1 +#define KAT_DATA_ERROR -3 +#define KAT_CRYPTO_FAILURE -4 + +#define MAX_FILE_NAME 256 +#define MAX_MESSAGE_LENGTH 32 +#define MAX_ASSOCIATED_DATA_LENGTH 32 + +void init_buffer(unsigned char *buffer, unsigned long long numbytes); + +void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length); + +int generate_test_vectors(); + +int main() +{ + int ret = generate_test_vectors(); + + if (ret != KAT_SUCCESS) { + fprintf(stderr, "test vector generation failed with code %d\n", ret); + } + + return ret; +} + +int generate_test_vectors() +{ + FILE *fp; + char fileName[MAX_FILE_NAME]; + unsigned char key[CRYPTO_KEYBYTES]; + unsigned char nonce[CRYPTO_NPUBBYTES]; + unsigned char msg[MAX_MESSAGE_LENGTH]; + unsigned char msg2[MAX_MESSAGE_LENGTH]; + unsigned char ad[MAX_ASSOCIATED_DATA_LENGTH]; + unsigned char ct[MAX_MESSAGE_LENGTH + CRYPTO_ABYTES]; + unsigned long long clen, mlen2; + int count = 1; + int func_ret, ret_val = KAT_SUCCESS; + + init_buffer(key, sizeof(key)); + init_buffer(nonce, sizeof(nonce)); + init_buffer(msg, sizeof(msg)); + init_buffer(ad, sizeof(ad)); + + sprintf(fileName, "LWC_AEAD_KAT_%d_%d.txt", (CRYPTO_KEYBYTES * 8), (CRYPTO_NPUBBYTES * 8)); + + if ((fp = fopen(fileName, "w")) == NULL) { + fprintf(stderr, "Couldn't open <%s> for write\n", fileName); + return KAT_FILE_OPEN_ERROR; + } + + for (unsigned long long mlen = 0; (mlen <= MAX_MESSAGE_LENGTH) && (ret_val == KAT_SUCCESS); mlen++) { + for (unsigned long long adlen = 0; adlen <= MAX_ASSOCIATED_DATA_LENGTH; adlen++) { + + printf("%0d\n", (int)clen); + + fprintf(fp, "Count = %d\n", count++); + printf("Count = %d\n", count - 1); + + fprint_bstr(fp, "Key = ", key, CRYPTO_KEYBYTES); + + fprint_bstr(fp, "Nonce = ", nonce, CRYPTO_NPUBBYTES); + + fprint_bstr(fp, "PT = ", msg, mlen); + + fprint_bstr(fp, "AD = ", ad, adlen); + + if ((func_ret = crypto_aead_encrypt(ct, &clen, msg, mlen, ad, adlen, NULL, nonce, key)) != 0) { + fprintf(fp, "crypto_aead_encrypt returned <%d>\n", func_ret); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + + fprint_bstr(fp, "CT = ", ct, clen); + + fprintf(fp, "\n"); + + if ((func_ret = crypto_aead_decrypt(msg2, &mlen2, NULL, ct, clen, ad, adlen, nonce, key)) != 0) { + fprintf(fp, "crypto_aead_decrypt returned <%d>\n", func_ret); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + + if (mlen != mlen2) { + fprintf(fp, "crypto_aead_decrypt returned bad 'mlen': Got <%llu>, expected <%llu>\n", mlen2, mlen); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + + if (memcmp(msg, msg2, mlen)) { + fprintf(fp, "crypto_aead_decrypt did not recover the plaintext\n"); + ret_val = KAT_CRYPTO_FAILURE; + break; + } + } + } + + fclose(fp); + + return ret_val; +} + + +void fprint_bstr(FILE *fp, const char *label, const unsigned char *data, unsigned long long length) +{ + fprintf(fp, "%s", label); + + for (unsigned long long i = 0; i < length; i++) + fprintf(fp, "%02X", data[i]); + + fprintf(fp, "\n"); +} + +void init_buffer(unsigned char *buffer, unsigned long long numbytes) +{ + for (unsigned long long i = 0; i < numbytes; i++) + buffer[i] = (unsigned char)i; +} diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny.h b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny.h new file mode 100644 index 0000000..6392b0f --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny.h @@ -0,0 +1,8 @@ +typedef struct ___skinny_ctrl { + unsigned char roundKeys[960]; // number of round : 56 + void (*func_skinny_128_384_enc)(unsigned char*, struct ___skinny_ctrl*, unsigned char* CNT, unsigned char* T, const unsigned char* K); +} skinny_ctrl; + +extern void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); +extern void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); +extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K); diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule2.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule2.c new file mode 100644 index 0000000..58006f2 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule2.c @@ -0,0 +1,3027 @@ +/****************************************************************************** + * Copyright (c) 2020, NEC Corporation. + * + * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. + * + *****************************************************************************/ + +/* + * SKINNY-128-384 + * + * load * AC(c0 c1) ^ TK3 + * calc AC(c0 c1) ^ TK2 -> store + * ART(TK2) + * + * number of rounds : 56 + */ + +__attribute__((aligned(4))) +void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) +{ + // r0 : points to roundKeys(& masterKey) + // r1-r4 : key state + // r5-r6 : temp use + // r7 : constant(0xfefefefe) + // r8 : constant(0x01010101) + // r9 : temp use + // r10 : temp use + asm volatile( + "stmdb sp!, {r4-r10} \n\t" + "ldr.w r1, [r0,#16] \n\t" // load master key + "ldr.w r2, [r0,#20] \n\t" // load master key + "ldr.w r3, [r0,#24] \n\t" // load master key + "ldr.w r4, [r0,#28] \n\t" // load master key + "mov.w r7, #0xfefefefe \n\t" + "mov.w r8, #0x01010101 \n\t" + + // round 1 + + "ldr.w r9, [r0,#512] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#516] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#64] \n\t" + "str.w r10, [r0,#68] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 2 + + "ldr.w r9, [r0,#520] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#524] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#72] \n\t" + "str.w r10, [r0,#76] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 3 + + "ldr.w r9, [r0,#528] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#532] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#80] \n\t" + "str.w r10, [r0,#84] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 4 + + "ldr.w r9, [r0,#536] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#540] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#88] \n\t" + "str.w r10, [r0,#92] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 5 + + "ldr.w r9, [r0,#544] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#548] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#96] \n\t" + "str.w r10, [r0,#100] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 6 + + "ldr.w r9, [r0,#552] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#556] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#104] \n\t" + "str.w r10, [r0,#108] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 7 + + "ldr.w r9, [r0,#560] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#564] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#112] \n\t" + "str.w r10, [r0,#116] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 8 + + "ldr.w r9, [r0,#568] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#572] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#120] \n\t" + "str.w r10, [r0,#124] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 9 + + "ldr.w r9, [r0,#576] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#580] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#128] \n\t" + "str.w r10, [r0,#132] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 10 + + "ldr.w r9, [r0,#584] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#588] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#136] \n\t" + "str.w r10, [r0,#140] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 11 + + "ldr.w r9, [r0,#592] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#596] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#144] \n\t" + "str.w r10, [r0,#148] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 12 + + "ldr.w r9, [r0,#600] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#604] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#152] \n\t" + "str.w r10, [r0,#156] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 13 + + "ldr.w r9, [r0,#608] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#612] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#160] \n\t" + "str.w r10, [r0,#164] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 14 + + "ldr.w r9, [r0,#616] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#620] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#168] \n\t" + "str.w r10, [r0,#172] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 15 + + "ldr.w r9, [r0,#624] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#628] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#176] \n\t" + "str.w r10, [r0,#180] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 16 + + "ldr.w r9, [r0,#632] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#636] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#184] \n\t" + "str.w r10, [r0,#188] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 17 + + "ldr.w r9, [r0,#640] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#644] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#192] \n\t" + "str.w r10, [r0,#196] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 18 + + "ldr.w r9, [r0,#648] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#652] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#200] \n\t" + "str.w r10, [r0,#204] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 19 + + "ldr.w r9, [r0,#656] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#660] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#208] \n\t" + "str.w r10, [r0,#212] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 20 + + "ldr.w r9, [r0,#664] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#668] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#216] \n\t" + "str.w r10, [r0,#220] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 21 + + "ldr.w r9, [r0,#672] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#676] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#224] \n\t" + "str.w r10, [r0,#228] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 22 + + "ldr.w r9, [r0,#680] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#684] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#232] \n\t" + "str.w r10, [r0,#236] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 23 + + "ldr.w r9, [r0,#688] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#692] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#240] \n\t" + "str.w r10, [r0,#244] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 24 + + "ldr.w r9, [r0,#696] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#700] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#248] \n\t" + "str.w r10, [r0,#252] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 25 + + "ldr.w r9, [r0,#704] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#708] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#256] \n\t" + "str.w r10, [r0,#260] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 26 + + "ldr.w r9, [r0,#712] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#716] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#264] \n\t" + "str.w r10, [r0,#268] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 27 + + "ldr.w r9, [r0,#720] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#724] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#272] \n\t" + "str.w r10, [r0,#276] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 28 + + "ldr.w r9, [r0,#728] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#732] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#280] \n\t" + "str.w r10, [r0,#284] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 29 + + "ldr.w r9, [r0,#736] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#740] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#288] \n\t" + "str.w r10, [r0,#292] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 30 + + "ldr.w r9, [r0,#744] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#748] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#296] \n\t" + "str.w r10, [r0,#300] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 31 + + "ldr.w r9, [r0,#752] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#756] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#304] \n\t" + "str.w r10, [r0,#308] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 32 + + "ldr.w r9, [r0,#760] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#764] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#312] \n\t" + "str.w r10, [r0,#316] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 33 + + "ldr.w r9, [r0,#768] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#772] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#320] \n\t" + "str.w r10, [r0,#324] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 34 + + "ldr.w r9, [r0,#776] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#780] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#328] \n\t" + "str.w r10, [r0,#332] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 35 + + "ldr.w r9, [r0,#784] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#788] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#336] \n\t" + "str.w r10, [r0,#340] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 36 + + "ldr.w r9, [r0,#792] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#796] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#344] \n\t" + "str.w r10, [r0,#348] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 37 + + "ldr.w r9, [r0,#800] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#804] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#352] \n\t" + "str.w r10, [r0,#356] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 38 + + "ldr.w r9, [r0,#808] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#812] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#360] \n\t" + "str.w r10, [r0,#364] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 39 + + "ldr.w r9, [r0,#816] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#820] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#368] \n\t" + "str.w r10, [r0,#372] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 40 + + "ldr.w r9, [r0,#824] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#828] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#376] \n\t" + "str.w r10, [r0,#380] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 41 + + "ldr.w r9, [r0,#832] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#836] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#384] \n\t" + "str.w r10, [r0,#388] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 42 + + "ldr.w r9, [r0,#840] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#844] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#392] \n\t" + "str.w r10, [r0,#396] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 43 + + "ldr.w r9, [r0,#848] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#852] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#400] \n\t" + "str.w r10, [r0,#404] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 44 + + "ldr.w r9, [r0,#856] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#860] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#408] \n\t" + "str.w r10, [r0,#412] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 45 + + "ldr.w r9, [r0,#864] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#868] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#416] \n\t" + "str.w r10, [r0,#420] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 46 + + "ldr.w r9, [r0,#872] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#876] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#424] \n\t" + "str.w r10, [r0,#428] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 47 + + "ldr.w r9, [r0,#880] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#884] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#432] \n\t" + "str.w r10, [r0,#436] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 48 + + "ldr.w r9, [r0,#888] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#892] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#440] \n\t" + "str.w r10, [r0,#444] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 49 + + "ldr.w r9, [r0,#896] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#900] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#448] \n\t" + "str.w r10, [r0,#452] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 50 + + "ldr.w r9, [r0,#904] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#908] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#456] \n\t" + "str.w r10, [r0,#460] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 51 + + "ldr.w r9, [r0,#912] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#916] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#464] \n\t" + "str.w r10, [r0,#468] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 52 + + "ldr.w r9, [r0,#920] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#924] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#472] \n\t" + "str.w r10, [r0,#476] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 53 + + "ldr.w r9, [r0,#928] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#932] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#480] \n\t" + "str.w r10, [r0,#484] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 54 + + "ldr.w r9, [r0,#936] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#940] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#488] \n\t" + "str.w r10, [r0,#492] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 55 + + "ldr.w r9, [r0,#944] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#948] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#496] \n\t" + "str.w r10, [r0,#500] \n\t" + + // permutation + // r1 (k3 k2 k1 k0) k13 k8 k15 k9 + // r2 (k7 k6 k5 k4) k11 k12 k14 k10 + // r3 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r4 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r5, r3 \n\t" // r5(k11 k10 k9 k8 ) + "mov r6, r4 \n\t" // r6(k15 k14 k13 k12) + "mov r3, r1 \n\t" // r3(k3 k2 k1 k0) + "mov r4, r2 \n\t" // r4(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r1,r6, #16 \n\t" // r1(k13 k12 k15 k14) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 k14) + "pkhtb.w r2,r5, r5, asr #16 \n\t" // r2(k11 k10 k11 k10) + "ror.w r5, #8 \n\t" // r5( k8 k11 k10 k8) + "bfi.w r1,r5, #0,#8 \n\t" // r1(k13 k8 k15 k9) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k11 k10) + "ror.w r6,#16 \n\t" // r6(k13 k12 k15 k14) + "bfi.w r2,r6, #8,#8 \n\t" // r2(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r1, r6 \n\t" // r1(k12 k13 k14 k15) + "lsl.w r1, r1, #8 \n\t" // r1(k13 k14 k15 --) + "bfi.w r1,r5, #16,#8 \n\t" // r1(k13 k8 k15 --) + "lsr.w r5, r5, #8 \n\t" // r5( -- k11 k10 k9) + "bfi.w r1,r5, #0, #8 \n\t" // r1(k13 k8 k15 k9) + "rev16.w r2, r5 \n\t" // r2(k11 -- k9 k10) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k11 k12 k9 k10) + "lsr.w r6, r6, #16 \n\t" // r6(-- -- k15 k14) + "bfi.w r2,r6, #8, #8 \n\t" // r2(k11 k12 k14 k10) +#endif + // LFSR(for TK2) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x6 x5 x4 x3 x2 x1 x0 x7^x6) + "and.w r5, r7, r1, lsl #1 \n\t" + "and.w r6, r8, r1, lsr #7 \n\t" + "and.w r1, r8, r1, lsr #5 \n\t" + "eor.w r1, r6 \n\t" + "eor.w r1, r5 \n\t" + + "and.w r5, r7, r2, lsl #1 \n\t" + "and.w r6, r8, r2, lsr #7 \n\t" + "and.w r2, r8, r2, lsr #5 \n\t" + "eor.w r2, r6 \n\t" + "eor.w r2, r5 \n\t" + + // round 56 + + "ldr.w r9, [r0,#952] \n\t" // load TK3 ^ AC(c0 c1) + "ldr.w r10, [r0,#956] \n\t" // load TK3 ^ AC(c0 c1) + + "eor.w r9, r1 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r10, r2 \n\t" // TK2 ^ TK3 ^ AC(c0 c1) + + // round key store((TK2 ^ TK3 ^ AC(c0 c1)) + "str.w r9, [r0,#504] \n\t" + "str.w r10, [r0,#508] \n\t" + + // permutation + + // not need to calculate (not used) + + "ldmia.w sp!, {r4-r10} \n\t" + : + : [roundKeys] "r" (roundKeys) + : "cc"); +} diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c new file mode 100644 index 0000000..81c4406 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_key_schedule3.c @@ -0,0 +1,2898 @@ +/****************************************************************************** + * Copyright (c) 2020, NEC Corporation. + * + * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. + * + *****************************************************************************/ + +/* + * SKINNY-128-384 + * + * AC(c0 c1) ^ TK3 -> store + * ART(TK3) + * + * number of rounds : 56 + */ + +__attribute__((aligned(4))) +void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) +{ + // r0 : points to roundKeys(& masterKey) + // r1 : points to RC + // r2-r5 : key state + // r6-r7 : temp use + // r8 : constant(0x7f7f7f7f) + // r9 : constant(0x80808080) + asm volatile( + "stmdb sp!, {r4-r9} \n\t" + "ldr.w r2, [r0,#32] \n\t" // load master key + "ldr.w r3, [r0,#36] \n\t" // load master key + "ldr.w r4, [r0,#40] \n\t" // load master key + "ldr.w r5, [r0,#44] \n\t" // load master key + "mov.w r8, #0x7f7f7f7f \n\t" + "mov.w r9, #0x80808080 \n\t" + + // round 1 + + // AC(c0 c1) + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#512] \n\t" + "str.w r3, [r0,#516] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 2 + + // AC(c0 c1) + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#520] \n\t" + "str.w r3, [r0,#524] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 3 + + // AC(c0 c1) + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#528] \n\t" + "str.w r3, [r0,#532] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 4 + + // AC(c0 c1) + "eor.w r6, r2, #0xf \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#536] \n\t" + "str.w r3, [r0,#540] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 5 + + // AC(c0 c1) + "eor.w r6, r2, #0xf \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#544] \n\t" + "str.w r7, [r0,#548] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 6 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#552] \n\t" + "str.w r7, [r0,#556] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 7 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc + + + // round key store + "str.w r6, [r0,#560] \n\t" + "str.w r7, [r0,#564] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 8 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#568] \n\t" + "str.w r7, [r0,#572] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 9 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#576] \n\t" + "str.w r7, [r0,#580] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 10 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#584] \n\t" + "str.w r7, [r0,#588] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 11 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#592] \n\t" + "str.w r7, [r0,#596] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 12 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#600] \n\t" + "str.w r7, [r0,#604] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 13 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#608] \n\t" + "str.w r7, [r0,#612] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 14 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#616] \n\t" + "str.w r7, [r0,#620] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 15 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#624] \n\t" + "str.w r7, [r0,#628] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 16 + + // AC(c0 c1) + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#632] \n\t" + "str.w r3, [r0,#636] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 17 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#640] \n\t" + "str.w r7, [r0,#644] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 18 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#648] \n\t" + "str.w r7, [r0,#652] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 19 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#656] \n\t" + "str.w r7, [r0,#660] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 20 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#664] \n\t" + "str.w r7, [r0,#668] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 21 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#672] \n\t" + "str.w r7, [r0,#676] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 22 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#680] \n\t" + "str.w r7, [r0,#684] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 23 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#688] \n\t" + "str.w r7, [r0,#692] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 24 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x0 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#696] \n\t" + "str.w r7, [r0,#700] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 25 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#704] \n\t" + "str.w r7, [r0,#708] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 26 + + // AC(c0 c1) + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#712] \n\t" + "str.w r3, [r0,#716] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 27 + + // AC(c0 c1) + "eor.w r6, r2, #0x5 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#720] \n\t" + "str.w r3, [r0,#724] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 28 + + // AC(c0 c1) + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#728] \n\t" + "str.w r3, [r0,#732] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 29 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#736] \n\t" + "str.w r7, [r0,#740] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 30 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#744] \n\t" + "str.w r7, [r0,#748] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 31 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#752] \n\t" + "str.w r7, [r0,#756] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 32 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#760] \n\t" + "str.w r7, [r0,#764] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 33 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#768] \n\t" + "str.w r7, [r0,#772] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 34 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#776] \n\t" + "str.w r7, [r0,#780] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 35 + + // AC(c0 c1) + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#784] \n\t" + "str.w r3, [r0,#788] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 36 + + // AC(c0 c1) + "eor.w r6, r2, #0xd \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#792] \n\t" + "str.w r3, [r0,#796] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 37 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#800] \n\t" + "str.w r7, [r0,#804] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 38 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#808] \n\t" + "str.w r7, [r0,#812] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 39 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#816] \n\t" + "str.w r7, [r0,#820] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 40 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#824] \n\t" + "str.w r7, [r0,#828] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 41 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#832] \n\t" + "str.w r7, [r0,#836] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 42 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#840] \n\t" + "str.w r7, [r0,#844] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 43 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#848] \n\t" + "str.w r7, [r0,#852] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 44 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#856] \n\t" + "str.w r7, [r0,#860] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 45 + + // AC(c0 c1) + "eor.w r6, r2, #0x8 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#864] \n\t" + "str.w r3, [r0,#868] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 46 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#872] \n\t" + "str.w r7, [r0,#876] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 47 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#880] \n\t" + "str.w r7, [r0,#884] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 48 + + // AC(c0 c1) + "eor.w r6, r2, #0x4 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#888] \n\t" + "str.w r3, [r0,#892] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 49 + + // AC(c0 c1) + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#896] \n\t" + "str.w r3, [r0,#900] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 50 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#904] \n\t" + "str.w r7, [r0,#908] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 51 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#912] \n\t" + "str.w r7, [r0,#916] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 52 + + // AC(c0 c1) + "eor.w r6, r2, #0xc \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#920] \n\t" + "str.w r3, [r0,#924] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 53 + + // AC(c0 c1) + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#928] \n\t" + "str.w r7, [r0,#932] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 54 + + // AC(c0 c1) + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#936] \n\t" + "str.w r7, [r0,#940] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 55 + + // AC(c0 c1) + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc + // round key store + "str.w r6, [r0,#944] \n\t" + "str.w r7, [r0,#948] \n\t" + + // permutation + // r2 (k3 k2 k1 k0) k13 k8 k15 k9 + // r3 (k7 k6 k5 k4) k11 k12 k14 k10 + // r4 (k11 k10 k9 k8) ------> k3 k2 k1 k0 + // r5 (k15 k14 k13 k12) k7 k6 k5 k4 + "mov r6, r4 \n\t" // r6(k11 k10 k9 k8 ) + "mov r7, r5 \n\t" // r7(k15 k14 k13 k12) + "mov r4, r2 \n\t" // r4(k3 k2 k1 k0) + "mov r5, r3 \n\t" // r5(k7 k6 k5 k4) +#ifdef STM32F4 // for Cortex-M4 + "ror.w r2,r7, #16 \n\t" // r2(k13 k12 k15 k14) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 k14) + "pkhtb.w r3,r6, r6, asr #16 \n\t" // r3(k11 k10 k11 k10) + "ror.w r6, #8 \n\t" // r6( k8 k11 k10 k8) + "bfi.w r2,r6, #0,#8 \n\t" // r2(k13 k8 k15 k9) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k11 k10) + "ror.w r7,#16 \n\t" // r7(k13 k12 k15 k14) + "bfi.w r3,r7, #8,#8 \n\t" // r3(k11 k12 k14 k10) +#else // for Cortex-M3 + "rev.w r2, r7 \n\t" // r2(k12 k13 k14 k15) + "lsl.w r2, r2, #8 \n\t" // r2(k13 k14 k15 --) + "bfi.w r2,r6, #16,#8 \n\t" // r2(k13 k8 k15 --) + "lsr.w r6, r6, #8 \n\t" // r6( -- k11 k10 k9) + "bfi.w r2,r6, #0, #8 \n\t" // r2(k13 k8 k15 k9) + "rev16.w r3, r6 \n\t" // r3(k11 -- k9 k10) + "bfi.w r3,r7, #16,#8 \n\t" // r3(k11 k12 k9 k10) + "lsr.w r7, r7, #16 \n\t" // r7 (-- -- k15 k14) + "bfi.w r3,r7, #8, #8 \n\t" // r3(k11 k12 k14 k10) +#endif + // LFSR(for TK3) (x7 x6 x5 x4 x3 x2 x1 x0) -> (x0^x6 x7 x6 x5 x4 x2 x2 x1) + "and.w r6, r8, r2, lsr #1 \n\t" + "and.w r7, r9, r2, lsl #7 \n\t" + "and.w r2, r9, r2, lsl #1 \n\t" + "eor.w r2, r7 \n\t" + "eor.w r2, r6 \n\t" + + "and.w r6, r8, r3, lsr #1 \n\t" + "and.w r7, r9, r3, lsl #7 \n\t" + "and.w r3, r9, r3, lsl #1 \n\t" + "eor.w r3, r7 \n\t" + "eor.w r3, r6 \n\t" + + // round 56 + + // AC(c0 c1) + "eor.w r6, r2, #0xa \n\t" // k0^rc + + // round key store + "str.w r6, [r0,#952] \n\t" + "str.w r3, [r0,#956] \n\t" + + // permutation + + // not need to calculate (not used) + + "ldmia.w sp!, {r4-r9} \n\t" + : + : [roundKeys] "r" (roundKeys), [pRC] "r" (pRC) + : "cc"); +} diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_main.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_main.c new file mode 100644 index 0000000..217b8a6 --- /dev/null +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc_NEC/skinny_main.c @@ -0,0 +1,4687 @@ +/****************************************************************************** + * Copyright (c) 2020, NEC Corporation. + * + * THIS CODE IS FURNISHED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND. + * + *****************************************************************************/ + +/* + * SKINNY-128-384 + * + * ART(TK1) -> store + * load AC(c0 c1) ^ TK3 ^ TK2 + * load TK1 + * calc AC(c0 c1) ^ TK3 ^ TK2 ^ TK1 -> use at (AC->ART) + * SC->SR->(AC->ART)->MC + * + * number of rounds : 56 + */ + +#include "skinny.h" + +/* + * S-BOX + */ +unsigned char SBOX[512] += { + // Original + 0x65, 0x4c, 0x6a, 0x42, 0x4b, 0x63, 0x43, 0x6b, 0x55, 0x75, 0x5a, 0x7a, 0x53, 0x73, 0x5b, 0x7b, + 0x35, 0x8c, 0x3a, 0x81, 0x89, 0x33, 0x80, 0x3b, 0x95, 0x25, 0x98, 0x2a, 0x90, 0x23, 0x99, 0x2b, + 0xe5, 0xcc, 0xe8, 0xc1, 0xc9, 0xe0, 0xc0, 0xe9, 0xd5, 0xf5, 0xd8, 0xf8, 0xd0, 0xf0, 0xd9, 0xf9, + 0xa5, 0x1c, 0xa8, 0x12, 0x1b, 0xa0, 0x13, 0xa9, 0x05, 0xb5, 0x0a, 0xb8, 0x03, 0xb0, 0x0b, 0xb9, + 0x32, 0x88, 0x3c, 0x85, 0x8d, 0x34, 0x84, 0x3d, 0x91, 0x22, 0x9c, 0x2c, 0x94, 0x24, 0x9d, 0x2d, + 0x62, 0x4a, 0x6c, 0x45, 0x4d, 0x64, 0x44, 0x6d, 0x52, 0x72, 0x5c, 0x7c, 0x54, 0x74, 0x5d, 0x7d, + 0xa1, 0x1a, 0xac, 0x15, 0x1d, 0xa4, 0x14, 0xad, 0x02, 0xb1, 0x0c, 0xbc, 0x04, 0xb4, 0x0d, 0xbd, + 0xe1, 0xc8, 0xec, 0xc5, 0xcd, 0xe4, 0xc4, 0xed, 0xd1, 0xf1, 0xdc, 0xfc, 0xd4, 0xf4, 0xdd, 0xfd, + 0x36, 0x8e, 0x38, 0x82, 0x8b, 0x30, 0x83, 0x39, 0x96, 0x26, 0x9a, 0x28, 0x93, 0x20, 0x9b, 0x29, + 0x66, 0x4e, 0x68, 0x41, 0x49, 0x60, 0x40, 0x69, 0x56, 0x76, 0x58, 0x78, 0x50, 0x70, 0x59, 0x79, + 0xa6, 0x1e, 0xaa, 0x11, 0x19, 0xa3, 0x10, 0xab, 0x06, 0xb6, 0x08, 0xba, 0x00, 0xb3, 0x09, 0xbb, + 0xe6, 0xce, 0xea, 0xc2, 0xcb, 0xe3, 0xc3, 0xeb, 0xd6, 0xf6, 0xda, 0xfa, 0xd3, 0xf3, 0xdb, 0xfb, + 0x31, 0x8a, 0x3e, 0x86, 0x8f, 0x37, 0x87, 0x3f, 0x92, 0x21, 0x9e, 0x2e, 0x97, 0x27, 0x9f, 0x2f, + 0x61, 0x48, 0x6e, 0x46, 0x4f, 0x67, 0x47, 0x6f, 0x51, 0x71, 0x5e, 0x7e, 0x57, 0x77, 0x5f, 0x7f, + 0xa2, 0x18, 0xae, 0x16, 0x1f, 0xa7, 0x17, 0xaf, 0x01, 0xb2, 0x0e, 0xbe, 0x07, 0xb7, 0x0f, 0xbf, + 0xe2, 0xca, 0xee, 0xc6, 0xcf, 0xe7, 0xc7, 0xef, 0xd2, 0xf2, 0xde, 0xfe, 0xd7, 0xf7, 0xdf, 0xff, + + // Original ^ c2(0x02) + 0x67, 0x4e, 0x68, 0x40, 0x49, 0x61, 0x41, 0x69, 0x57, 0x77, 0x58, 0x78, 0x51, 0x71, 0x59, 0x79, + 0x37, 0x8e, 0x38, 0x83, 0x8b, 0x31, 0x82, 0x39, 0x97, 0x27, 0x9a, 0x28, 0x92, 0x21, 0x9b, 0x29, + 0xe7, 0xce, 0xea, 0xc3, 0xcb, 0xe2, 0xc2, 0xeb, 0xd7, 0xf7, 0xda, 0xfa, 0xd2, 0xf2, 0xdb, 0xfb, + 0xa7, 0x1e, 0xaa, 0x10, 0x19, 0xa2, 0x11, 0xab, 0x07, 0xb7, 0x08, 0xba, 0x01, 0xb2, 0x09, 0xbb, + 0x30, 0x8a, 0x3e, 0x87, 0x8f, 0x36, 0x86, 0x3f, 0x93, 0x20, 0x9e, 0x2e, 0x96, 0x26, 0x9f, 0x2f, + 0x60, 0x48, 0x6e, 0x47, 0x4f, 0x66, 0x46, 0x6f, 0x50, 0x70, 0x5e, 0x7e, 0x56, 0x76, 0x5f, 0x7f, + 0xa3, 0x18, 0xae, 0x17, 0x1f, 0xa6, 0x16, 0xaf, 0x00, 0xb3, 0x0e, 0xbe, 0x06, 0xb6, 0x0f, 0xbf, + 0xe3, 0xca, 0xee, 0xc7, 0xcf, 0xe6, 0xc6, 0xef, 0xd3, 0xf3, 0xde, 0xfe, 0xd6, 0xf6, 0xdf, 0xff, + 0x34, 0x8c, 0x3a, 0x80, 0x89, 0x32, 0x81, 0x3b, 0x94, 0x24, 0x98, 0x2a, 0x91, 0x22, 0x99, 0x2b, + 0x64, 0x4c, 0x6a, 0x43, 0x4b, 0x62, 0x42, 0x6b, 0x54, 0x74, 0x5a, 0x7a, 0x52, 0x72, 0x5b, 0x7b, + 0xa4, 0x1c, 0xa8, 0x13, 0x1b, 0xa1, 0x12, 0xa9, 0x04, 0xb4, 0x0a, 0xb8, 0x02, 0xb1, 0x0b, 0xb9, + 0xe4, 0xcc, 0xe8, 0xc0, 0xc9, 0xe1, 0xc1, 0xe9, 0xd4, 0xf4, 0xd8, 0xf8, 0xd1, 0xf1, 0xd9, 0xf9, + 0x33, 0x88, 0x3c, 0x84, 0x8d, 0x35, 0x85, 0x3d, 0x90, 0x23, 0x9c, 0x2c, 0x95, 0x25, 0x9d, 0x2d, + 0x63, 0x4a, 0x6c, 0x44, 0x4d, 0x65, 0x45, 0x6d, 0x53, 0x73, 0x5c, 0x7c, 0x55, 0x75, 0x5d, 0x7d, + 0xa0, 0x1a, 0xac, 0x14, 0x1d, 0xa5, 0x15, 0xad, 0x03, 0xb0, 0x0c, 0xbc, 0x05, 0xb5, 0x0d, 0xbd, + 0xe0, 0xc8, 0xec, 0xc4, 0xcd, 0xe5, 0xc5, 0xed, 0xd0, 0xf0, 0xdc, 0xfc, 0xd5, 0xf5, 0xdd, 0xfd, +}; + +/* + * Round Constants + */ +unsigned char RC[56] += { + 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, + 0x34, 0x29, 0x12, 0x24, 0x08, 0x11, 0x22, 0x04, + 0x09, 0x13, 0x26, 0x0c, 0x19, 0x32, 0x25, 0x0a,}; + +extern void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) __attribute__((noinline)); +extern void RunEncryptionKeyScheduleTK2(unsigned char *roundKeys) __attribute__((noinline)); +extern void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) __attribute__((noinline)); + +void skinny_128_384_enc123_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) +{ + *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); + *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); + *((unsigned int *)&pskinny_ctrl->roundKeys[32]) = *((unsigned int *)&K[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[36]) = *((unsigned int *)&K[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[40]) = *((unsigned int *)&K[8]); + *((unsigned int *)&pskinny_ctrl->roundKeys[44]) = *((unsigned int *)&K[12]); + + RunEncryptionKeyScheduleTK3(pskinny_ctrl->roundKeys, RC); + RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); + Encrypt(input, pskinny_ctrl->roundKeys, SBOX); + + pskinny_ctrl->func_skinny_128_384_enc = skinny_128_384_enc12_12; +} + +void skinny_128_384_enc12_12 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) +{ + (void)K; + + *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[16]) = *((unsigned int *)&T[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[20]) = *((unsigned int *)&T[4]); + *((unsigned int *)&pskinny_ctrl->roundKeys[24]) = *((unsigned int *)&T[8]); + *((unsigned int *)&pskinny_ctrl->roundKeys[28]) = *((unsigned int *)&T[12]); + + RunEncryptionKeyScheduleTK2(pskinny_ctrl->roundKeys); + Encrypt(input, pskinny_ctrl->roundKeys, SBOX); +} + +extern void skinny_128_384_enc1_1 (unsigned char* input, skinny_ctrl* pskinny_ctrl, unsigned char* CNT, unsigned char* T, const unsigned char* K) +{ + (void)T; + (void)K; + + *((unsigned int *)&pskinny_ctrl->roundKeys[0] ) = *((unsigned int *)&CNT[0]); + *((unsigned int *)&pskinny_ctrl->roundKeys[4] ) = *((unsigned int *)&CNT[4]); + + Encrypt(input, pskinny_ctrl->roundKeys, SBOX); +} + +__attribute__((aligned(4))) +void Encrypt(unsigned char *block, unsigned char *roundKeys, unsigned char *pSBOX) +{ + // r0 : ponits to plaintext + // r1 : points to roundKeys(& masterKey) + // r2 : points to SBOX + // r3-r6 : cipher state + // r7-r12: temp use + // r14 : temp use + asm volatile( + "stmdb sp!, {r4-r12,r14} \n\t" + "stmdb.w sp!, {r0} \n\t" // push store pointer + +// ART(TK1) + + "ldm.w r1, {r3-r4} \n\t" // load master key + + // round 1-2 + +// // round key store(do not need) +// "str.w r3, [r1,#0] \n\t" +// "str.w r4, [r1,#4] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 3-4 + + // round key store + "str.w r5, [r1,#8] \n\t" + "str.w r6, [r1,#12] \n\t" + + // premutation + + // r3 (--- --- --- ---) k5 k0 k7 k1 + // r4 (--- --- --- ---) k3 k4 k6 k2 + // r5 ( k3 k2 k1 k0) -----> --- --- --- --- + // r6 ( k7 k6 k5 k4) --- --- --- --- +#ifdef STM32F4 // for Cortex-M4 + "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) + "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) + "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) + "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) + "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) + "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) + "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) + "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) + "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) + "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) + "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) + "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) +#endif + + // round 5-6 + + // round key store + "str.w r3, [r1,#16] \n\t" + "str.w r4, [r1,#20] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 7-8 + + // round key store + "str.w r5, [r1,#24] \n\t" + "str.w r6, [r1,#28] \n\t" + + // premutation + + // r3 (--- --- --- ---) k5 k0 k7 k1 + // r4 (--- --- --- ---) k3 k4 k6 k2 + // r5 ( k3 k2 k1 k0) -----> --- --- --- --- + // r6 ( k7 k6 k5 k4) --- --- --- --- +#ifdef STM32F4 // for Cortex-M4 + "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) + "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) + "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) + "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) + "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) + "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) + "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) + "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) + "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) + "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) + "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) + "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) +#endif + + // round 9-10 + + // round key store + "str.w r3, [r1,#32] \n\t" + "str.w r4, [r1,#36] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 11-12 + + // round key store + "str.w r5, [r1,#40] \n\t" + "str.w r6, [r1,#44] \n\t" + + // premutation + + // r3 (--- --- --- ---) k5 k0 k7 k1 + // r4 (--- --- --- ---) k3 k4 k6 k2 + // r5 ( k3 k2 k1 k0) -----> --- --- --- --- + // r6 ( k7 k6 k5 k4) --- --- --- --- +#ifdef STM32F4 // for Cortex-M4 + "ror.w r3,r6, #16 \n\t" // r3( k5 k4 k7 k6) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 k6) + "pkhtb.w r4,r5, r5, asr #16 \n\t" // r4( k3 k2 k3 k2) + "ror.w r5, #8 \n\t" // r5( k0 k3 k2 k1) + "bfi.w r3,r5, #0,#8 \n\t" // r3( k5 k4 k2 k6) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k3 k2) + "ror.w r6,#16 \n\t" // r6( k5 k4 k7 k6) + "bfi.w r4,r6, #8,#8 \n\t" // r4( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r3, r6 \n\t" // r3( k4 k5 k6 k7) + "lsl.w r3, r3, #8 \n\t" // r3( k5 k6 k7 ---) + "bfi.w r3,r5, #16,#8 \n\t" // r3( k5 k0 k7 ---) + "lsr.w r5, r5, #8 \n\t" // r5(--- k3 k2 k1) + "bfi.w r3,r5, #0, #8 \n\t" // r3( k5 k0 k7 k1) + "rev16.w r4, r5 \n\t" // r4( k3 --- k1 k2) + "bfi.w r4,r6, #16,#8 \n\t" // r4( k3 k4 k1 k2) + "lsr.w r6, r6, #16 \n\t" // r6(-- --- k7 k6) + "bfi.w r4,r6, #8, #8 \n\t" // r4( k3 k4 k6 k2) +#endif + + // round 13-14 + + // round key store + "str.w r3, [r1,#48] \n\t" + "str.w r4, [r1,#52] \n\t" + + // premutation + + // r3 ( k3 k2 k1 k0) --- --- --- --- + // r4 ( k7 k6 k5 k4) --- --- --- --- + // r5 (--- --- --- ---) -----> k5 k0 k7 k1 + // r6 (--- --- --- ---) k3 k4 k6 k2 +#ifdef STM32F4 // for Cortex-M4 + "ror.w r5,r4, #16 \n\t" // r5( k5 k4 k7 k6) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 k6) + "pkhtb.w r6,r3, r3, asr #16 \n\t" // r6( k3 k2 k3 k2) + "ror.w r3, #8 \n\t" // r3( k0 k3 k2 k1) + "bfi.w r5,r3, #0,#8 \n\t" // r5( k5 k4 k2 k6) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k3 k2) + "ror.w r4,#16 \n\t" // r4( k5 k4 k7 k6) + "bfi.w r6,r4, #8,#8 \n\t" // r6( k3 k4 k6 k2) +#else // for Cortex-M3 + "rev.w r5, r4 \n\t" // r5( k4 k5 k6 k7) + "lsl.w r5, r5, #8 \n\t" // r5( k5 k6 k7 ---) + "bfi.w r5,r3, #16,#8 \n\t" // r5( k5 k0 k7 ---) + "lsr.w r3, r3, #8 \n\t" // r3(--- k3 k2 k1) + "bfi.w r5,r3, #0, #8 \n\t" // r5( k5 k0 k7 k1) + "rev16.w r6, r3 \n\t" // r6( k3 --- k1 k2) + "bfi.w r6,r4, #16,#8 \n\t" // r6( k3 k4 k1 k2) + "lsr.w r4, r4, #16 \n\t" // r4(-- --- k7 k6) + "bfi.w r6,r4, #8, #8 \n\t" // r6( k3 k4 k6 k2) +#endif + // round 15-16 + + // round key store + "str.w r5, [r1,#56] \n\t" + "str.w r6, [r1,#60] \n\t" + + // premutation + + // not need to calculate (not used) + +// SC->(AC->ART)->SR->MC + + "add.w r14, r2, #256 \n\t" // point to SBOX ^ c2(0x02) + + "ldm.w r0, {r3-r6} \n\t" // load plaintext + // r0 now free to overwrite + + // round 1 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#64] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#68] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 2 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#72] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#76] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 3 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#80] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#84] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 4 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#88] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#92] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 5 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#96] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#100] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 6 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#104] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#108] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 7 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#112] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#116] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 8 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#120] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#124] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 9 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#32] \n\t" // load TK1 + "ldr.w r10, [r1,#36] \n\t" // load TK1 + "ldr.w r11, [r1,#128] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#132] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 10 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#136] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#140] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 11 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#40] \n\t" // load TK1 + "ldr.w r10, [r1,#44] \n\t" // load TK1 + "ldr.w r11, [r1,#144] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#148] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 12 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#152] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#156] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 13 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#48] \n\t" // load TK1 + "ldr.w r10, [r1,#52] \n\t" // load TK1 + "ldr.w r11, [r1,#160] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#164] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 14 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#168] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#172] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 15 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#56] \n\t" // load TK1 + "ldr.w r10, [r1,#60] \n\t" // load TK1 + "ldr.w r11, [r1,#176] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#180] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 16 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#184] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#188] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 17 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#192] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#196] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 18 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#200] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#204] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 19 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#208] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#212] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 20 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#216] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#220] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 21 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#224] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#228] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 22 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#232] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#236] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 23 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#240] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#244] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 24 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#248] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#252] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 25 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#32] \n\t" // load TK1 + "ldr.w r10, [r1,#36] \n\t" // load TK1 + "ldr.w r11, [r1,#256] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#260] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 26 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#264] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#268] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 27 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#40] \n\t" // load TK1 + "ldr.w r10, [r1,#44] \n\t" // load TK1 + "ldr.w r11, [r1,#272] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#276] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 28 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#280] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#284] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 29 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#48] \n\t" // load TK1 + "ldr.w r10, [r1,#52] \n\t" // load TK1 + "ldr.w r11, [r1,#288] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#292] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 30 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#296] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#300] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 31 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#56] \n\t" // load TK1 + "ldr.w r10, [r1,#60] \n\t" // load TK1 + "ldr.w r11, [r1,#304] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#308] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 32 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#312] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#316] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 33 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#320] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#324] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 34 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#328] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#332] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 35 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#336] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#340] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 36 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#344] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#348] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 37 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#352] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#356] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 38 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#360] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#364] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 39 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#368] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#372] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 40 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#376] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#380] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + + // round 41 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#32] \n\t" // load TK1 + "ldr.w r10, [r1,#36] \n\t" // load TK1 + "ldr.w r11, [r1,#384] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#388] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 42 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#392] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#396] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 43 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#40] \n\t" // load TK1 + "ldr.w r10, [r1,#44] \n\t" // load TK1 + "ldr.w r11, [r1,#400] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#404] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 44 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#408] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#412] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 45 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#48] \n\t" // load TK1 + "ldr.w r10, [r1,#52] \n\t" // load TK1 + "ldr.w r11, [r1,#416] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#420] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 46 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#424] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#428] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 47 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#56] \n\t" // load TK1 + "ldr.w r10, [r1,#60] \n\t" // load TK1 + "ldr.w r11, [r1,#432] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#436] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 48 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#440] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#444] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 49 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#0] \n\t" // load TK1 + "ldr.w r10, [r1,#4] \n\t" // load TK1 + "ldr.w r11, [r1,#448] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#452] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 50 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#456] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#460] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 51 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#8] \n\t" // load TK1 + "ldr.w r10, [r1,#12] \n\t" // load TK1 + "ldr.w r11, [r1,#464] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#468] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 52 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#472] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#476] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 53 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#16] \n\t" // load TK1 + "ldr.w r10, [r1,#20] \n\t" // load TK1 + "ldr.w r11, [r1,#480] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#484] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 54 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#488] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#492] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + // round 55 + + // SubCell+ShiftRow+AC(c2) + // r3 (s3 s2 s1 s0) + // r4 (s7 s6 s5 s4) + // r5 (s11 s10 s9 s8) + // r6 (s15 s14 s13 s12) + + // 1st-2nd line + // r3(s3 s2 s1 s0) + "uxtb.w r9, r3, ror #24 \n\t" // s3 + "uxtb.w r8, r3, ror #16 \n\t" // s2 + "uxtb.w r7, r3, ror #8 \n\t" // s1 + "uxtb.w r3, r3 \n\t" // s0 + // r4(s6 s5 s4 s7) + "uxtb.w r12, r4, ror #16 \n\t" // s6 + "uxtb.w r11, r4, ror #8 \n\t" // s5 + "uxtb.w r10, r4 \n\t" // s4 + "uxtb.w r4, r4, ror #24 \n\t" // s7 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "eor.w r3, r3, r7, lsl #8 \n\t" + "eor.w r3, r3, r8, lsl #16 \n\t" + "eor.w r3, r3, r9, lsl #24 \n\t" + "eor.w r4, r4, r10, lsl #8 \n\t" + "eor.w r4, r4, r11, lsl #16 \n\t" + "eor.w r4, r4, r12, lsl #24 \n\t" + + // 3rd-4th line + // r5(s9 s8 s11 s10) + "uxtb.w r9, r5, ror #8 \n\t" // s9 + "uxtb.w r8, r5 \n\t" // s8 + "uxtb.w r7, r5, ror #24 \n\t" // s11 + "uxtb.w r5, r5, ror #16 \n\t" // s10 + // r6(s12 s15 s14 s13) + "uxtb.w r12, r6 \n\t" // s12 + "uxtb.w r11, r6, ror #24 \n\t" // s15 + "uxtb.w r10, r6, ror #16 \n\t" // s14 + "uxtb.w r6, r6, ror #8 \n\t" // s13 + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r8, [r14,r8] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "eor.w r5, r5, r7, lsl #8 \n\t" + "eor.w r5, r5, r8, lsl #16 \n\t" + "eor.w r5, r5, r9, lsl #24 \n\t" + "eor.w r6, r6, r10, lsl #8 \n\t" + "eor.w r6, r6, r11, lsl #16 \n\t" + "eor.w r6, r6, r12, lsl #24 \n\t" + + // AddRoundKey and AddRoundConst(from roundKeys) + "ldr.w r9, [r1,#24] \n\t" // load TK1 + "ldr.w r10, [r1,#28] \n\t" // load TK1 + "ldr.w r11, [r1,#496] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "ldr.w r12, [r1,#500] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r11, r9 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r12, r10 \n\t" // TK1 ^ TK2 ^ TK3 ^ AC(c0 c1) + + "eor.w r8, r3, r11 \n\t" // r3 eor r11 -----------------> r8( s3 s2 s1 s0) + "eor.w r7, r4, r12, ror 24 \n\t" // r4 eor (r12 ror 24) --------> r7( s6 s5 s4 s7) + // r8( s9 s8 s11 s10) + // r6(s12 s14 s14 s13) + + // MixColumn + "eor.w r10, r8, r5 \n\t" // r8 eor r5 ---------> r10 + "eor.w r9, r7, r5 \n\t" // r7 eor r5 ---------> r9 + "eor.w r7, r6, r10 \n\t" // r6 eor r10 --------> r7 + // r8 ----------------> r8 + + // round 56 + + // SubCell+ShiftRow+AC(c2) + // r7 (s3 s2 s1 s0) + // r8 (s7 s6 s5 s4) + // r9 (s11 s10 s9 s8) + // r10(s15 s14 s13 s12) + + // 1st-2nd line + // r7(s3 s2 s1 s0) + "uxtb.w r5, r7, ror #24 \n\t" // s3 + "uxtb.w r4, r7, ror #16 \n\t" // s2 + "uxtb.w r3, r7, ror #8 \n\t" // s1 + "uxtb.w r7, r7 \n\t" // s0 + // r8(s6 s5 s4 s7) + "uxtb.w r12, r8, ror #16 \n\t" // s6 + "uxtb.w r11, r8, ror #8 \n\t" // s5 + "uxtb.w r6, r8 \n\t" // s4 + "uxtb.w r8, r8, ror #24 \n\t" // s7 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r4, [r2,r4] \n\t" + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r7, [r2,r7] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r8, [r2,r8] \n\t" + "ldr.w r0, [r1,#504] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r7, r7, r3, lsl #8 \n\t" + "eor.w r7, r7, r4, lsl #16 \n\t" + "eor.w r7, r7, r5, lsl #24 \n\t" + "eor.w r8, r8, r6, lsl #8 \n\t" + "eor.w r8, r8, r11, lsl #16 \n\t" + "eor.w r8, r8, r12, lsl #24 \n\t" + "eor.w r4, r7, r0 \n\t" // r7 eor r0 -----------------> r4( s3 s2 s1 s0) + + // 3rd-4th line + // r9(s9 s8 s11 s10) + "uxtb.w r5, r9, ror #8 \n\t" // s9 + "uxtb.w r7, r9 \n\t" // s8 + "uxtb.w r3, r9, ror #24 \n\t" // s11 + "uxtb.w r9, r9, ror #16 \n\t" // s10 + // r10(s12 s15 s14 s13) + "uxtb.w r12, r10 \n\t" // s12 + "uxtb.w r11, r10, ror #24 \n\t" // s15 + "uxtb.w r6, r10, ror #16 \n\t" // s14 + "uxtb.w r10, r10, ror #8 \n\t" // s13 + "ldrb.w r5, [r2,r5] \n\t" + "ldrb.w r7, [r14,r7] \n\t" // load from SBOX ^ c2(0x02) + "ldrb.w r3, [r2,r3] \n\t" + "ldrb.w r9, [r2,r9] \n\t" + "ldrb.w r12, [r2,r12] \n\t" + "ldrb.w r11, [r2,r11] \n\t" + "ldrb.w r6, [r2,r6] \n\t" + "ldrb.w r10, [r2,r10] \n\t" + "ldr.w r0, [r1,#508] \n\t" // load TK2 ^ TK3 ^ AC(c0 c1) + "eor.w r9, r9, r3, lsl #8 \n\t" + "eor.w r9, r9, r7, lsl #16 \n\t" + "eor.w r9, r9, r5, lsl #24 \n\t" + "eor.w r10, r10, r6, lsl #8 \n\t" + "eor.w r10, r10, r11, lsl #16 \n\t" + "eor.w r10, r10, r12, lsl #24 \n\t" + "eor.w r3, r8, r0, ror 24 \n\t" // r8 eor (r0 ror 24) --------> r3( s6 s5 s4 s7) + + // AddRoundKey and AddRoundConst(from roundKeys) + + // r9( s9 s8 s11 s10) + // r10(s12 s14 s14 s13) + + // MixColumn + "eor.w r6, r4, r9 \n\t" // r4 eor r9 --------> r6 + "eor.w r5, r3, r9 \n\t" // r3 eor r9 --------> r5 + "eor.w r3, r10, r6 \n\t" // r10 eor r6 --------> r3 + // r4 ----------------> r4 + + "ldmia.w sp!, {r0} \n\t" // pop store pointer + // r0 reload + + "str.w r3, [r0,#0] \n\t" // store ciphertext + "str.w r4, [r0,#4] \n\t" // store ciphertext + "str.w r5, [r0,#8] \n\t" // store ciphertext + "str.w r6, [r0,#12] \n\t" // store ciphertext + + "ldmia.w sp!, {r4-r12,r14} \n\t" + : + : [block] "r" (block), [roundKeys] "r" (roundKeys), [pSBOX] "" (pSBOX) + : "cc"); +} + diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/LWC_AEAD_KAT_128_128.txt b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/LWC_AEAD_KAT_128_128.txt deleted file mode 100644 index 5fa5db6..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/LWC_AEAD_KAT_128_128.txt +++ /dev/null @@ -1,7623 +0,0 @@ -Count = 1 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = -CT = E352FC5FB5767FF5F2FF5495A8C8218F - -Count = 2 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00 -CT = 63B6A50B4454EE32B3F177545D3A7C02 - -Count = 3 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001 -CT = B43884D3BEDF17E676DA12608E582579 - -Count = 4 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102 -CT = 97E0C5EFB8700DC8DD09962C13AE7728 - -Count = 5 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203 -CT = 7D9CC11F45E213AD15CB347795EFCF90 - -Count = 6 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001020304 -CT = E3BAEE04A820B4FD6B83F964F82BFA0C - -Count = 7 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405 -CT = 314EE05FED3F602B463C7CEAB87A3397 - -Count = 8 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203040506 -CT = 113F54E053619D5CDAA0A4C6B8975517 - -Count = 9 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 0001020304050607 -CT = 1A0167242F9FD4BEDB4C35B724D72EF7 - -Count = 10 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708 -CT = A3D0DFE59034892439C7E8283A46930B - -Count = 11 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 00010203040506070809 -CT = 9F9FECF4AF18004CE65A58491011A47B - -Count = 12 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A -CT = AC3AC5EBBC6B527E7B8D7606F78855FA - -Count = 13 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B -CT = 0806B1B83A4F572CEDF082C701845672 - -Count = 14 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C -CT = 7F7416FC91D101A70695F86A9A11AD92 - -Count = 15 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D -CT = EA2AFEEA5839643270FA2DF5AB2D279C - -Count = 16 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E -CT = 66D9DD131F71F4E055E4F225F689FA23 - -Count = 17 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F -CT = AC347EAB569CE203301EECC167429023 - -Count = 18 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 0863E98295015DEE519269B45BDC0439 - -Count = 19 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 262E7D4B2F1AAEC4470B50F07C197964 - -Count = 20 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = ADEEC6D17668879A0768C0D257CD7B75 - -Count = 21 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 745B96471F00E0893CB872AAC4C2A312 - -Count = 22 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = CBA2BBDD4AE518F8443AB08C8EFF7000 - -Count = 23 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = DD94D78FFC82B3131B57B085570CE819 - -Count = 24 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 63A5F205432F97E57E4F8A1D6E960620 - -Count = 25 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 14AC341D41D4BC9F67B2FC4972533C4C - -Count = 26 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 3B43198E32AD9749B7C393A114D1A07D - -Count = 27 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 3ED270F9A6485546F3AB9214A98363A1 - -Count = 28 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = B21F1DD80113930E1624135BC71BFA10 - -Count = 29 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = A80EB58C2E5DC05989E92EE41250CAC7 - -Count = 30 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 30EE65EDAC193AFD2DEFCA0BD3F47BDC - -Count = 31 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 8EF7EBA974302BF1E3455144A8440C2D - -Count = 32 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = D4860DC90AA69B0F7A1657E68907B6F3 - -Count = 33 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = BAF9A7EC2A3FE825E199136101316FA0 - -Count = 34 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = -CT = E5854125E62C76F605F9C9FCF34D599072 - -Count = 35 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00 -CT = E505A57CB2DD5467C2B8C7DF32B8ABCDFF - -Count = 36 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001 -CT = E5D22B5D6A27DF9E167DECBA066BC99484 - -Count = 37 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102 -CT = E5F1F31C5621708438D63F3E4AF63FC6D5 - -Count = 38 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203 -CT = E51B8F18A6DCE29A5D1EFD9C11707E7E6D - -Count = 39 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001020304 -CT = E585A937BD31203D0D60B551021DBA4BF1 - -Count = 40 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405 -CT = E5575D39E6743FE9DB4D0AD48C5DEB826A - -Count = 41 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203040506 -CT = E5772C8D59CA6114ACD1960CA05D06E4EA - -Count = 42 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 0001020304050607 -CT = E57C12BE9DB69F5D4ED07A9DD1C1469F0A - -Count = 43 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708 -CT = E5C5C3065C093400D432F1404EDFD722F6 - -Count = 44 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 00010203040506070809 -CT = E5F98C354D361889BCED6CF02FF5801586 - -Count = 45 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A -CT = E5CA291C52256BDB8E70BBDE601219E407 - -Count = 46 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B -CT = E56E156801A34FDEDCE6C62AA1E415E78F - -Count = 47 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C -CT = E51967CF4508D188570DA3500C7F801C6F - -Count = 48 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D -CT = E58C392753C139EDC27BCC85934EBC9661 - -Count = 49 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E -CT = E500CA04AA86717D105ED25A4313184BDE - -Count = 50 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F -CT = E5CA27A712CF9C6BF33B2844A782D321DE - -Count = 51 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E56E70303B0C01D41E5AA4C1D2BE4DB5C4 - -Count = 52 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E5403DA4F2B61A27344C3DF8969988C899 - -Count = 53 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E5CBFD1F68EF680E6A0C5E68B4B25CCA88 - -Count = 54 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E512484FFE86006979378EDACC215312EF - -Count = 55 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E5ADB16264D3E591084F0C18EA6B6EC1FD - -Count = 56 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E5BB870E3665823AE3106118E3B29D59E4 - -Count = 57 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E505B62BBCDA2F1E157579227B8B07B7DD - -Count = 58 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E572BFEDA4D8D4356F6C84542F97C28DB1 - -Count = 59 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E55D50C037ABAD1EB9BCF53BC7F1401180 - -Count = 60 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E558C1A9403F48DCB6F89D3A724C12D25C - -Count = 61 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E5D40CC46198131AFE1D12BB3D228A4BED - -Count = 62 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E5CE1D6C35B75D49A982DF8682F7C17B3A - -Count = 63 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E556FDBC543519B30D26D9626D3665CA21 - -Count = 64 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E5E8E43210ED30A201E873F9224DD5BDD0 - -Count = 65 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E5B295D47093A612FF7120FF806C96070E - -Count = 66 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E5DCEA7E55B33F61D5EAAFBB07E4A0DE5D - -Count = 67 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = -CT = E529A8C59E92614F212E2E6D0E8ABFC6B87C - -Count = 68 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00 -CT = E5292821C7C6906DB0E96F632D4B4A34E5F1 - -Count = 69 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001 -CT = E529FFAFE61E6AE6493DAA48487F9956BC8A - -Count = 70 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102 -CT = E529DC77A7226C495313019BCC3304A0EEDB - -Count = 71 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203 -CT = E529360BA3D291DB4D76C9596E6882E15663 - -Count = 72 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001020304 -CT = E529A82D8CC97C19EA26B711A37BEF2563FF - -Count = 73 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405 -CT = E5297AD9829239063EF09AAE26F5AF74AA64 - -Count = 74 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203040506 -CT = E5295AA8362D8758C3870632FED9AF99CCE4 - -Count = 75 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 0001020304050607 -CT = E529519605E9FBA68A6507DE6FA833D9B704 - -Count = 76 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708 -CT = E529E847BD28440DD7FFE555B2372D480AF8 - -Count = 77 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 00010203040506070809 -CT = E529D4088E397B215E973AC80256071F3D88 - -Count = 78 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A -CT = E529E7ADA72668520CA5A71F2C19E086CC09 - -Count = 79 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B -CT = E5294391D375EE7609F73162D8D8168ACF81 - -Count = 80 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C -CT = E52934E3743145E85F7CDA07A2758D1F3461 - -Count = 81 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D -CT = E529A1BD9C278C003AE9AC6877EABC23BE6F - -Count = 82 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E -CT = E5292D4EBFDECB48AA3B8976A83AE18763D0 - -Count = 83 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529E7A31C6682A5BCD8EC8CB6DE704C09D0 - -Count = 84 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E52943F48B4F413803358D0033AB4CD29DCA - -Count = 85 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E5296DB91F86FB23F01F9B990AEF6B17E097 - -Count = 86 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529E679A41CA251D941DBFA9ACD40C3E286 - -Count = 87 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E5293FCCF48ACB39BE52E02A28B5D3CC3AE1 - -Count = 88 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E5298035D9109EDC462398A8EA9399F1E9F3 - -Count = 89 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E5299603B54228BBEDC8C7C5EA9A400271EA - -Count = 90 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529283290C89716C93EA2DDD00279989FD3 - -Count = 91 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E5295F3B56D095EDE244BB20A656655DA5BF - -Count = 92 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E52970D47B43E694C9926B51C9BE03DF398E - -Count = 93 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E5297545123472710B9D2F39C80BBE8DFA52 - -Count = 94 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529F9887F15D52ACDD5CAB64944D01563E3 - -Count = 95 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529E399D741FA649E82557B74FB055E5334 - -Count = 96 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E5297B79072078206426F17D9014C4FAE22F - -Count = 97 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529C5608964A009752A3FD70B5BBF4A95DE - -Count = 98 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E5299F116F04DE9FC5D4A6840DF99E092F00 - -Count = 99 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529F16EC521FE06B6FE3D0B497E163FF653 - -Count = 100 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = -CT = E529B08D94449EB3BC9D56CE473A51A4267A28 - -Count = 101 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00 -CT = E529B00D701DCA429E0C918F49199051D427A5 - -Count = 102 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001 -CT = E529B0DAFE3C12B815F5454A627CA482B67EDE - -Count = 103 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102 -CT = E529B0F9267D2EBEBAEF6BE1B1F8E81F402C8F - -Count = 104 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203 -CT = E529B0135A79DE4328F10E29735AB399019437 - -Count = 105 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001020304 -CT = E529B08D7C56C5AEEA565E573B97A0F4C5A1AB - -Count = 106 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405 -CT = E529B05F88589EEBF582887A84122EB4946830 - -Count = 107 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203040506 -CT = E529B07FF9EC2155AB7FFFE618CA02B4790EB0 - -Count = 108 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 0001020304050607 -CT = E529B074C7DFE52955361DE7F45B7328397550 - -Count = 109 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708 -CT = E529B0CD16672496FE6B87057F86EC36A8C8AC - -Count = 110 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 00010203040506070809 -CT = E529B0F1595435A9D2E2EFDAE2368D1CFFFFDC - -Count = 111 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A -CT = E529B0C2FC7D2ABAA1B0DD473518C2FB660E5D - -Count = 112 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B -CT = E529B066C009793C85B58FD148EC030D6A0DD5 - -Count = 113 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C -CT = E529B011B2AE3D971BE3043A2D96AE96FFF635 - -Count = 114 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D -CT = E529B084EC462B5EF386914C424331A7C37C3B - -Count = 115 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E -CT = E529B0081F65D219BB1643695C9CE1FA67A184 - -Count = 116 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B0C2F2C66A505600A00CA682056BACCB84 - -Count = 117 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B066A5514393CBBF4D6D2A077057325F9E - -Count = 118 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B048E8C58A29D04C677BB33E3470F722C3 - -Count = 119 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B0C3287E1070A265393BD0AE165B2320D2 - -Count = 120 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B01A9D2E8619CA022A00001C6EC82CF8B5 - -Count = 121 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B0A564031C4C2FFA5B7882DE4882112BA7 - -Count = 122 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B0B3526F4EFA4851B027EFDE415BE2B3BE - -Count = 123 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B00D634AC445E5754642F7E4D962785D87 - -Count = 124 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07A6A8CDC471E5E3C5B0A928D7EBD67EB - -Count = 125 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B05585A14F346775EA8B7BFD65183FFBDA - -Count = 126 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B05014C838A082B7E5CF13FCD0A56D3806 - -Count = 127 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B0DCD9A51907D971AD2A9C7D9FCBF5A1B7 - -Count = 128 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B0C6C80D4D289722FAB55140201EBE9160 - -Count = 129 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B05E28DD2CAAD3D85E1157A4CFDF1A207B - -Count = 130 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B0E031536872FAC952DFFD3F80A4AA578A - -Count = 131 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B0BA40B5080C6C79AC46AE392285E9ED54 - -Count = 132 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B0D43F1F2D2CF50A86DD217DA50DDF3407 - -Count = 133 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = -CT = E529B07657411D891702C818EFE971A5557ED4A2 - -Count = 134 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00 -CT = E529B076D7A544DDE62059DFAEE75264A08C892F - -Count = 135 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001 -CT = E529B076002B65051CABA00B6BCC375073EED054 - -Count = 136 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102 -CT = E529B07623F324391A04BA25C01FB31CEE188205 - -Count = 137 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203 -CT = E529B076C98F20C9E796A44008DD114768593ABD - -Count = 138 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001020304 -CT = E529B07657A90FD20A5403107695DC54059D0F21 - -Count = 139 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405 -CT = E529B076855D01894F4BD7C65B2A59DA45CCC6BA - -Count = 140 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203040506 -CT = E529B076A52CB536F1152AB1C7B681F64521A03A - -Count = 141 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 0001020304050607 -CT = E529B076AE1286F28DEB6353C65A1087D961DBDA - -Count = 142 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708 -CT = E529B07617C33E3332403EC924D1CD18C7F06626 - -Count = 143 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 00010203040506070809 -CT = E529B0762B8C0D220D6CB7A1FB4C7D79EDA75156 - -Count = 144 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A -CT = E529B0761829243D1E1FE593669B53360A3EA0D7 - -Count = 145 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B -CT = E529B076BC15506E983BE0C1F0E6A7F7FC32A35F - -Count = 146 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C -CT = E529B076CB67F72A33A5B64A1B83DD5A67A758BF - -Count = 147 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D -CT = E529B0765E391F3CFA4DD3DF6DEC08C5569BD2B1 - -Count = 148 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E -CT = E529B076D2CA3CC5BD05430D48F2D7150B3F0F0E - -Count = 149 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07618279F7DF4E855EE2D08C9F19AF4650E - -Count = 150 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B076BC7008543775EA034C844C84A66AF114 - -Count = 151 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B076923D9C9D8D6E19295A1D75C081AF8C49 - -Count = 152 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07619FD2707D41C30771A7EE5E2AA7B8E58 - -Count = 153 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B076C0487791BD74576421AE579A3974563F - -Count = 154 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B0767FB15A0BE891AF15592C95BC7349852D - -Count = 155 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B076698736595EF604FE064195B5AABA1D34 - -Count = 156 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B076D7B613D3E15B20086359AF2D9320F30D - -Count = 157 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B076A0BFD5CBE3A00B727AA4D9798FE5C961 - -Count = 158 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B0768F50F85890D920A4AAD5B691E9675550 - -Count = 159 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B0768AC1912F043CE2ABEEBDB7245435968C - -Count = 160 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B076060CFC0EA36724E30B32366B3AAD0F3D - -Count = 161 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B0761C1D545A8C2977B494FF0BD4EFE63FEA - -Count = 162 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07684FD843B0E6D8D1030F9EF3B2E428EF1 - -Count = 163 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B0763AE40A7FD6449C1CFE53747455F2F900 - -Count = 164 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B0766095EC1FA8D22CE2670072D674B143DE - -Count = 165 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B0760EEA463A884B5FC8FC8F3651FC879A8D - -Count = 166 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = -CT = E529B07637871E339392367AA905EA2380E7F74674 - -Count = 167 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00 -CT = E529B0763707FA6AC76314EB6E44E4004112051BF9 - -Count = 168 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001 -CT = E529B07637D0744B1F999F12BA81CF6575C1674282 - -Count = 169 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102 -CT = E529B07637F3AC0A239F3008942A1CE1395C9110D3 - -Count = 170 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203 -CT = E529B0763719D00ED362A216F1E2DE4362DAD0A86B - -Count = 171 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001020304 -CT = E529B0763787F621C88F60B1A19C968E71B7149DF7 - -Count = 172 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405 -CT = E529B0763755022F93CA7F6577B1290BFFF745546C - -Count = 173 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203040506 -CT = E529B0763775739B2C742198002DB5D3D3F7A832EC - -Count = 174 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 0001020304050607 -CT = E529B076377E4DA8E808DFD1E22C5942A26BE8490C - -Count = 175 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708 -CT = E529B07637C79C1029B7748C78CED29F3D7579F4F0 - -Count = 176 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 00010203040506070809 -CT = E529B07637FBD3233888580510114F2F5C5F2EC380 - -Count = 177 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A -CT = E529B07637C8760A279B2B57228C980113B8B73201 - -Count = 178 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B -CT = E529B076376C4A7E741D0F52701AE5F5D24EBB3189 - -Count = 179 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C -CT = E529B076371B38D930B69104FBF1808F7FD52ECA69 - -Count = 180 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D -CT = E529B076378E6631267F79616E87EF5AE0E4124067 - -Count = 181 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637029512DF3831F1BCA2F18530B9B69DD8 - -Count = 182 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637C878B16771DCE75FC70B9BD4287DF7D8 - -Count = 183 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B076376C2F264EB24158B2A6871EA114E363C2 - -Count = 184 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B076374262B287085AAB98B01E27E533261E9F - -Count = 185 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637C9A2091D512882C6F07DB7C718F21C8E - -Count = 186 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B076371017598B3840E5D5CBAD05BF8BFDC4E9 - -Count = 187 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637AFEE74116DA51DA4B32FC799C1C017FB - -Count = 188 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637B9D81843DBC2B64FEC42C79018338FE2 - -Count = 189 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B0763707E93DC9646F92B9895AFD0821A961DB - -Count = 190 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B0763770E0FBD16694B9C390A78B5C3D6C5BB7 - -Count = 191 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B076375F0FD64215ED921540D6E4B45BEEC786 - -Count = 192 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B076375A9EBF358108501A04BEE501E6BC045A - -Count = 193 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637D653D21426539652E131644E88249DEB - -Count = 194 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637CC427A40091DC5057EFC59F15D6FAD3C - -Count = 195 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B0763754A2AA218B593FA1DAFABD1E9CCB1C27 - -Count = 196 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637EABB246553702EAD14502651E77B6BD6 - -Count = 197 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637B0CAC2052DE69E538D0320F3C638D108 - -Count = 198 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637DEB568200D7FED79168C64744E0E085B - -Count = 199 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = -CT = E529B07637F035257B77B8293A441A8F2323B92EB4F3 - -Count = 200 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00 -CT = E529B07637F0B5C12223490BAB835B8100E24CDCE97E - -Count = 201 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001 -CT = E529B07637F0624F03FBB38052579EAA65D69FBEB005 - -Count = 202 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102 -CT = E529B07637F0419742C7B52F48793579E19A0248E254 - -Count = 203 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203 -CT = E529B07637F0ABEB463748BD561CFDBB43C184095AEC - -Count = 204 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001020304 -CT = E529B07637F035CD692CA57FF14C83F38ED2E9CD6F70 - -Count = 205 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405 -CT = E529B07637F0E7396777E060259AAE4C0B5CA99CA6EB - -Count = 206 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203040506 -CT = E529B07637F0C748D3C85E3ED8ED32D0D370A971C06B - -Count = 207 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 0001020304050607 -CT = E529B07637F0CC76E00C22C0910F333C42013531BB8B - -Count = 208 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708 -CT = E529B07637F075A758CD9D6BCC95D1B79F9E2BA00677 - -Count = 209 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 00010203040506070809 -CT = E529B07637F049E86BDCA24745FD0E2A2FFF01F73107 - -Count = 210 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A -CT = E529B07637F07A4D42C3B13417CF93FD01B0E66EC086 - -Count = 211 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B -CT = E529B07637F0DE7136903710129D0580F5711062C30E - -Count = 212 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C -CT = E529B07637F0A90391D49C8E4416EEE58FDC8BF738EE - -Count = 213 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03C5D79C255662183988A5A43BACBB2E0 - -Count = 214 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F0B0AE5A3B122EB151BD948593E76F6F5F - -Count = 215 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F07A43F9835BC3A7B2D86E9B7776A4055F - -Count = 216 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F0DE146EAA985E185FB9E21E024A3A9145 - -Count = 217 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F0F059FA632245EB75AF7B27466DFFEC18 - -Count = 218 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F07B9941F97B37C22BEF18B764462BEE09 - -Count = 219 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F0A22C116F125FA538D4C8051CD524366E - -Count = 220 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F01DD53CF547BA5D49AC4AC73A9F19E57C - -Count = 221 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F00BE350A7F1DDF6A2F327C73346EA7D65 - -Count = 222 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F0B5D2752D4E70D254963FFDAB7F70935C - -Count = 223 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F0C2DBB3354C8BF92E8FC28BFF63B5A930 - -Count = 224 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F0ED349EA63FF2D2F85FB3E41705373501 - -Count = 225 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F0E8A5F7D1AB1710F71BDBE5A2B865F6DD - -Count = 226 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F064689AF00C4CD6BFFE5464EDD6FD6F6C - -Count = 227 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F07E7932A4230285E86199595203B65FBB - -Count = 228 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F0E699E2C5A1467F4CC59FBDBDC212EEA0 - -Count = 229 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F058806C81796F6E400B3526F2B9A29951 - -Count = 230 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F002F18AE107F9DEBE9266205098E1238F - -Count = 231 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F06C8E20C42760AD9409E964D710D7FADC - -Count = 232 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = -CT = E529B07637F03259C6069153227B6A19A5616202695A78 - -Count = 233 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00 -CT = E529B07637F032D9225FC5A200EAAD58AB42A3F79B07F5 - -Count = 234 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001 -CT = E529B07637F0320EAC7E1D588B13799D80279724F95E8E - -Count = 235 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102 -CT = E529B07637F0322D743F215E2409573653A3DBB90F0CDF - -Count = 236 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203 -CT = E529B07637F032C7083BD1A3B61732FE9101803F4EB467 - -Count = 237 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001020304 -CT = E529B07637F032592E14CA4E74B06280D9CC93528A81FB - -Count = 238 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405 -CT = E529B07637F0328BDA1A910B6B64B4AD66491D12DB4860 - -Count = 239 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203040506 -CT = E529B07637F032ABABAE2EB53599C331FA913112362EE0 - -Count = 240 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 0001020304050607 -CT = E529B07637F032A0959DEAC9CBD021301600408E765500 - -Count = 241 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708 -CT = E529B07637F0321944252B76608DBBD29DDDDF90E7E8FC - -Count = 242 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 00010203040506070809 -CT = E529B07637F032250B163A494C04D30D006DBEBAB0DF8C - -Count = 243 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A -CT = E529B07637F03216AE3F255A3F56E190D743F15D292E0D - -Count = 244 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B -CT = E529B07637F032B2924B76DC1B53B306AAB730AB252D85 - -Count = 245 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C -CT = E529B07637F032C5E0EC3277850538EDCFCD9D30B0D665 - -Count = 246 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03250BE0424BE6D60AD9BA01802018C5C6B - -Count = 247 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F032DC4D27DDF925F07FBEBEC7D25C2881D4 - -Count = 248 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03216A08465B0C8E69CDB44D936CDE3EBD4 - -Count = 249 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F032B2F7134C73555971BAC85C43F17D7FCE - -Count = 250 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F0329CBA8785C94EAA5BAC516507D6B80293 - -Count = 251 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F032177A3C1F903C8305EC32F525FD6C0082 - -Count = 252 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F032CECF6C89F954E416D7E2475D6E63D8E5 - -Count = 253 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03271364113ACB11C67AF60857B245E0BF7 - -Count = 254 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03267002D411AD6B78CF00D8572FDAD93EE - -Count = 255 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F032D93108CBA57B937A9515BFEAC4377DD7 - -Count = 256 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F032AE38CED3A780B8008CE8C9BED8F247BB - -Count = 257 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03281D7E340D4F993D65C99A656BE70DB8A - -Count = 258 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03284468A37401C51D918F1A7E303221856 - -Count = 259 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F032088BE716E7479791FD7E26AC6DBA81E7 - -Count = 260 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F032129A4F42C809C4C662B31B13B8F1B130 - -Count = 261 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F0328A7A9F234A4D3E62C6B5FFFC7955002B - -Count = 262 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F0323463116792642F6E081F64B302E577DA - -Count = 263 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F0326E12F707ECF29F90914C621123A6CD04 - -Count = 264 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F032006D5D22CC6BECBA0AC32696AB901457 - -Count = 265 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = -CT = E529B07637F03226B065804E4E9DE263EB0CA4DEA32E9CA3 - -Count = 266 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00 -CT = E529B07637F032263081D91ABFBF73A4AA02871F56DCC12E - -Count = 267 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001 -CT = E529B07637F03226E70FF8C245348A706F29E22B85BE9855 - -Count = 268 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102 -CT = E529B07637F03226C4D7B9FE439B905EC4FA66671848CA04 - -Count = 269 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203 -CT = E529B07637F032262EABBD0EBE098E3B0C38C43C9E0972BC - -Count = 270 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001020304 -CT = E529B07637F03226B08D921553CB296B7270092FF3CD4720 - -Count = 271 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405 -CT = E529B07637F0322662799C4E16D4FDBD5FCF8CA1B39C8EBB - -Count = 272 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203040506 -CT = E529B07637F03226420828F1A88A00CAC353548DB371E83B - -Count = 273 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 0001020304050607 -CT = E529B07637F0322649361B35D4744928C2BFC5FC2F3193DB - -Count = 274 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708 -CT = E529B07637F03226F0E7A3F46BDF14B22034186331A02E27 - -Count = 275 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 00010203040506070809 -CT = E529B07637F03226CCA890E554F39DDAFFA9A8021BF71957 - -Count = 276 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A -CT = E529B07637F03226FF0DB9FA4780CFE8627E864DFC6EE8D6 - -Count = 277 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B -CT = E529B07637F032265B31CDA9C1A4CABAF403728C0A62EB5E - -Count = 278 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C -CT = E529B07637F032262C436AED6A3A9C311F66082191F710BE - -Count = 279 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226B91D82FBA3D2F9A46909DDBEA0CB9AB0 - -Count = 280 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F0322635EEA102E49A69764C17026EFD6F470F - -Count = 281 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226FF0302BAAD777F9529ED1C8A6CA42D0F - -Count = 282 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F032265B5495936EEAC078486199FF503AB915 - -Count = 283 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F032267519015AD4F133525EF8A0BB77FFC448 - -Count = 284 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226FED9BAC08D831A0C1E9B30995C2BC659 - -Count = 285 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226276CEA56E4EB7D1F254B82E1CF241E3E - -Count = 286 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F032269895C7CCB10E856E5DC940C78519CD2C - -Count = 287 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F032268EA3AB9E07692E8502A440CE5CEA5535 - -Count = 288 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F0322630928E14B8C40A7367BC7A566570BB0C - -Count = 289 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226479B480CBA3F21097E410C0279B58160 - -Count = 290 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F032266874659FC9460ADFAE3063EA1F371D51 - -Count = 291 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F032266DE50CE85DA3C8D0EA58625FA265DE8D - -Count = 292 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226E12861C9FAF80E980FD7E310CCFD473C - -Count = 293 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226FB39C99DD5B65DCF901ADEAF19B677EB - -Count = 294 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F0322663D919FC57F2A76B341C3A40D812C6F0 - -Count = 295 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226DDC097B88FDBB667FAB6A10FA3A2B101 - -Count = 296 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F0322687B171D8F14D069963E5A7AD82E10BDF - -Count = 297 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 0001020304050607 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226E9CEDBFDD1D475B3F86AE32A0AD7D28C - -Count = 298 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = -CT = E529B07637F03226829B767A18947DE02E3BCE6DD9E7B7E4E6 - -Count = 299 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00 -CT = E529B07637F03226821B92234C655F71E97AC04E181245B96B - -Count = 300 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001 -CT = E529B07637F0322682CC1C02949FD4883DBFEB2B2CC127E010 - -Count = 301 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102 -CT = E529B07637F0322682EFC443A8997B92131438AF605CD1B241 - -Count = 302 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203 -CT = E529B07637F032268205B8475864E98C76DCFA0D3BDA900AF9 - -Count = 303 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001020304 -CT = E529B07637F03226829B9E6843892B2B26A2B2C028B7543F65 - -Count = 304 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405 -CT = E529B07637F0322682496A6618CC34FFF08F0D45A6F705F6FE - -Count = 305 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203040506 -CT = E529B07637F0322682691BD2A7726A028713919D8AF7E8907E - -Count = 306 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 0001020304050607 -CT = E529B07637F03226826225E1630E944B65127D0CFB6BA8EB9E - -Count = 307 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708 -CT = E529B07637F0322682DBF459A2B13F16FFF0F6D16475395662 - -Count = 308 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 00010203040506070809 -CT = E529B07637F0322682E7BB6AB38E139F972F6B61055F6E6112 - -Count = 309 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A -CT = E529B07637F0322682D41E43AC9D60CDA5B2BC4F4AB8F79093 - -Count = 310 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B -CT = E529B07637F0322682702237FF1B44C8F724C1BB8B4EFB931B - -Count = 311 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C -CT = E529B07637F0322682075090BBB0DA9E7CCFA4C126D56E68FB - -Count = 312 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D -CT = E529B07637F0322682920E78AD7932FBE9B9CB14B9E452E2F5 - -Count = 313 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226821EFD5B543E7A6B3B9CD5CB69B9F63F4A - -Count = 314 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F0322682D410F8EC77977DD8F92FD58D283D554A - -Count = 315 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F032268270476FC5B40AC23598A350F814A3C150 - -Count = 316 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226825E0AFB0C0E11311F8E3A69BC3366BC0D - -Count = 317 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F0322682D5CA409657631841CE59F99E18B2BE1C - -Count = 318 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820C7F10003E0B7F52F5894BE68BBD667B - -Count = 319 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F0322682B3863D9A6BEE87238D0B89C0C180B569 - -Count = 320 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F0322682A5B051C8DD892CC8D26689C918732D70 - -Count = 321 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226821B8174426224083EB77EB35121E9C349 - -Count = 322 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226826C88B25A60DF2344AE83C5053D2CF925 - -Count = 323 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F032268243679FC913A608927EF2AAED5BAE6514 - -Count = 324 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F032268246F6F6BE8743CA9D3A9AAB58E6FCA6C8 - -Count = 325 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F0322682CA3B9B9F20180CD5DF152A1788643F79 - -Count = 326 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F0322682D02A33CB0F565F8240D817A85D2F0FAE - -Count = 327 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F032268248CAE3AA8D12A526E4DEF3479C8BBEB5 - -Count = 328 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F0322682F6D36DEE553BB42A2A746808E73BC944 - -Count = 329 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F0322682ACA28B8E2BAD04D4B3276EAAC678739A - -Count = 330 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F0322682C2DD21AB0B3477FE28A82A2D4E4EAAC9 - -Count = 331 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = -CT = E529B07637F03226820A9844034D40F2B63E6C4A528468D70F84 - -Count = 332 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00 -CT = E529B07637F03226820A18A05A19B1D027F92D4471459D255209 - -Count = 333 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001 -CT = E529B07637F03226820ACF2E7BC14B5BDE2DE86F14714E470B72 - -Count = 334 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102 -CT = E529B07637F03226820AECF63AFD4DF4C40343BC903DD3B15923 - -Count = 335 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203 -CT = E529B07637F03226820A068A3E0DB066DA668B7E326655F0E19B - -Count = 336 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001020304 -CT = E529B07637F03226820A98AC11165DA47D36F536FF753834D407 - -Count = 337 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405 -CT = E529B07637F03226820A4A581F4D18BBA9E0D8897AFB78651D9C - -Count = 338 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203040506 -CT = E529B07637F03226820A6A29ABF2A6E554974415A2D778887B1C - -Count = 339 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 0001020304050607 -CT = E529B07637F03226820A61179836DA1B1D7545F933A6E4C800FC - -Count = 340 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708 -CT = E529B07637F03226820AD8C620F765B040EFA772EE39FA59BD00 - -Count = 341 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 00010203040506070809 -CT = E529B07637F03226820AE48913E65A9CC98778EF5E58D00E8A70 - -Count = 342 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A -CT = E529B07637F03226820AD72C3AF949EF9BB5E538701737977BF1 - -Count = 343 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B -CT = E529B07637F03226820A73104EAACFCB9EE7734584D6C19B7879 - -Count = 344 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C -CT = E529B07637F03226820A0462E9EE6455C86C9820FE7B5A0E8399 - -Count = 345 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226820A913C01F8ADBDADF9EE4F2BE46B320997 - -Count = 346 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226820A1DCF2201EAF53D2BCB51F4343696D428 - -Count = 347 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226820AD72281B9A3182BC8AEABEAD0A75DBE28 - -Count = 348 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F03226820A7375169060859425CF276FA59BC32A32 - -Count = 349 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226820A5D388259DA9E670FD9BE56E1BC06576F - -Count = 350 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226820AD6F839C383EC4E5199DDC6C397D2557E - -Count = 351 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820A0F4D6955EA842942A20D74BB04DD8D19 - -Count = 352 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03226820AB0B444CFBF61D133DA8FB69D4EE05E0B - -Count = 353 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03226820AA682289D09067AD885E2B6949713C612 - -Count = 354 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226820A18B30D17B6AB5E2EE0FA8C0CAE89282B - -Count = 355 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226820A6FBACB0FB4507554F907FA58B24C1247 - -Count = 356 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03226820A4055E69CC7295E82297695B0D4CE8E76 - -Count = 357 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03226820A45C48FEB53CC9C8D6D1E9405699C4DAA - -Count = 358 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226820AC909E2CAF4975AC58891154A0704D41B - -Count = 359 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226820AD3184A9EDBD90992175C28F5D24FE4CC - -Count = 360 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F03226820A4BF89AFF599DF336B35ACC1A13EB55D7 - -Count = 361 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226820AF5E114BB81B4E23A7DF05755685B2226 - -Count = 362 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F03226820AAF90F2DBFF2252C4E4A351F7491898F8 - -Count = 363 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 00010203040506070809 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226820AC1EF58FEDFBB21EE7F2C1570C12E41AB - -Count = 364 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = -CT = E529B07637F03226820A44CCDA6FF8659E59F2FE774607D12B5AFF - -Count = 365 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00 -CT = E529B07637F03226820A444C3E36AC94BCC835BF7965C624D90772 - -Count = 366 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001 -CT = E529B07637F03226820A449BB017746E3731E17A5200F2F7BB5E09 - -Count = 367 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102 -CT = E529B07637F03226820A44B868564868982BCFD18184BE6A4D0C58 - -Count = 368 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203 -CT = E529B07637F03226820A44521452B8950A35AA194326E5EC0CB4E0 - -Count = 369 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001020304 -CT = E529B07637F03226820A44CC327DA378C892FA670BEBF681C8817C - -Count = 370 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405 -CT = E529B07637F03226820A441EC673F83DD7462C4AB46E78C19948E7 - -Count = 371 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203040506 -CT = E529B07637F03226820A443EB7C7478389BB5BD628B654C1742E67 - -Count = 372 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 0001020304050607 -CT = E529B07637F03226820A443589F483FF77F2B9D7C427255D345587 - -Count = 373 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708 -CT = E529B07637F03226820A448C584C4240DCAF23354FFABA43A5E87B - -Count = 374 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 00010203040506070809 -CT = E529B07637F03226820A44B0177F537FF0264BEAD24ADB69F2DF0B - -Count = 375 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A -CT = E529B07637F03226820A4483B2564C6C837479770564948E6B2E8A - -Count = 376 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B -CT = E529B07637F03226820A44278E221FEAA7712BE178905578672D02 - -Count = 377 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C -CT = E529B07637F03226820A4450FC855B413927A00A1DEAF8E3F2D6E2 - -Count = 378 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226820A44C5A26D4D88D142357C723F67D2CE5CEC - -Count = 379 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226820A4449514EB4CF99D2E7596CE0B78F6A8153 - -Count = 380 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226820A4483BCED0C8674C4043C96FE531EA1EB53 - -Count = 381 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F03226820A4427EB7A2545E97BE95D1A7B26223F7F49 - -Count = 382 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226820A4409A6EEECFFF288C34B83426205FA0214 - -Count = 383 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226820A4482665576A680A19D0BE0D2402E2E0005 - -Count = 384 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820A445BD305E0CFE8C68E30306038BD21D862 - -Count = 385 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03226820A44E42A287A9A0D3EFF48B2A21EF71C0B70 - -Count = 386 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03226820A44F21C44282C6A951417DFA2172EEF9369 - -Count = 387 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226820A444C2D61A293C7B1E272C7988F17757D50 - -Count = 388 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226820A443B24A7BA913C9A986B3AEEDB0BB0473C - -Count = 389 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03226820A4414CB8A29E245B14EBB4B81336D32DB0D - -Count = 390 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03226820A44115AE35E76A07341FF238086D06018D1 - -Count = 391 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226820A449D978E7FD1FBB5091AAC01C9BEF88160 - -Count = 392 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226820A448786262BFEB5E65E85613C766BB3B1B7 - -Count = 393 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F03226820A441F66F64A7CF11CFA2167D899AA1700AC - -Count = 394 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226820A44A17F780EA4D80DF6EFCD43D6D1A7775D - -Count = 395 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F03226820A44FB0E9E6EDA4EBD08769E4574F0E4CD83 - -Count = 396 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226820A449571344BFAD7CE22ED1101F378D214D0 - -Count = 397 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = -CT = E529B07637F03226820A4472D7D2BE580C734AAEB15EFBA88CB12FE9 - -Count = 398 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00 -CT = E529B07637F03226820A44725736E70CFD51DB69F050D86979437264 - -Count = 399 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001 -CT = E529B07637F03226820A447280B8C6D407DA22BD357BBD5DAA212B1F - -Count = 400 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102 -CT = E529B07637F03226820A4472A36087E8017538939EA8391137D7794E - -Count = 401 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203 -CT = E529B07637F03226820A4472491C8318FCE726F6566A9B4AB196C1F6 - -Count = 402 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001020304 -CT = E529B07637F03226820A4472D73AAC03112581A628225659DC52F46A - -Count = 403 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405 -CT = E529B07637F03226820A447205CEA258543A5570059DD3D79C033DF1 - -Count = 404 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203040506 -CT = E529B07637F03226820A447225BF16E7EA64A80799010BFB9CEE5B71 - -Count = 405 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 0001020304050607 -CT = E529B07637F03226820A44722E812523969AE1E598ED9A8A00AE2091 - -Count = 406 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708 -CT = E529B07637F03226820A447297509DE22931BC7F7A6647151E3F9D6D - -Count = 407 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 00010203040506070809 -CT = E529B07637F03226820A4472AB1FAEF3161D3517A5FBF7743468AA1D - -Count = 408 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A -CT = E529B07637F03226820A447298BA87EC056E6725382CD93BD3F15B9C - -Count = 409 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B -CT = E529B07637F03226820A44723C86F3BF834A6277AE512DFA25FD5814 - -Count = 410 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C -CT = E529B07637F03226820A44724BF454FB28D434FC45345757BE68A3F4 - -Count = 411 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226820A4472DEAABCEDE13C5169335B82C88F5429FA - -Count = 412 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226820A447252599F14A674C1BB16455D18D2F0F445 - -Count = 413 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226820A447298B43CACEF99D75873BF43FC433B9E45 - -Count = 414 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F03226820A44723CE3AB852C0468B51233C6897FA50A5F - -Count = 415 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226820A447212AE3F4C961F9B9F04AAFFCD58607702 - -Count = 416 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226820A4472996E84D6CF6DB2C144C96FEF73B47513 - -Count = 417 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820A447240DBD440A605D5D27F19DD97E0BBAD74 - -Count = 418 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03226820A4472FF22F9DAF3E02DA3079B1FB1AA867E66 - -Count = 419 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03226820A4472E91495884587864858F61FB87375E67F - -Count = 420 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226820A44725725B002FA2AA2BE3DEE25204AEF0846 - -Count = 421 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226820A4472202C761AF8D189C424135374562A322A - -Count = 422 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03226820A44720FC35B898BA8A212F4623C9C30A8AE1B - -Count = 423 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03226820A44720A5232FE1F4D601DB00A3D298DFA6DC7 - -Count = 424 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226820A4472869F5FDFB816A6555585BC66E362F476 - -Count = 425 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226820A44729C8EF78B9758F502CA4881D93629C4A1 - -Count = 426 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F03226820A4472046E27EA151C0FA66E4E6536F78D75BA - -Count = 427 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226820A4472BA77A9AECD351EAAA0E4FE798C3D024B - -Count = 428 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F03226820A4472E0064FCEB3A3AE5439B7F8DBAD7EB895 - -Count = 429 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226820A44728E79E5EB933ADD7EA238BC5C254861C6 - -Count = 430 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = -CT = E529B07637F03226820A4472B329CC91F861773318FA1BB9B25DC9E56C - -Count = 431 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00 -CT = E529B07637F03226820A4472B3A928C8AC9055A2DFBB159A73A83BB8E1 - -Count = 432 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001 -CT = E529B07637F03226820A4472B37EA6E9746ADE5B0B7E3EFF477B59E19A - -Count = 433 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102 -CT = E529B07637F03226820A4472B35D7EA8486C714125D5ED7B0BE6AFB3CB - -Count = 434 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203 -CT = E529B07637F03226820A4472B3B702ACB891E35F401D2FD95060EE0B73 - -Count = 435 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001020304 -CT = E529B07637F03226820A4472B3292483A37C21F810636714430D2A3EEF - -Count = 436 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405 -CT = E529B07637F03226820A4472B3FBD08DF8393E2CC64ED891CD4D7BF774 - -Count = 437 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203040506 -CT = E529B07637F03226820A4472B3DBA139478760D1B1D24449E14D9691F4 - -Count = 438 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 0001020304050607 -CT = E529B07637F03226820A4472B3D09F0A83FB9E9853D3A8D890D1D6EA14 - -Count = 439 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708 -CT = E529B07637F03226820A4472B3694EB2424435C5C93123050FCF4757E8 - -Count = 440 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 00010203040506070809 -CT = E529B07637F03226820A4472B3550181537B194CA1EEBEB56EE5106098 - -Count = 441 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A -CT = E529B07637F03226820A4472B366A4A84C686A1E9373699B2102899119 - -Count = 442 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B -CT = E529B07637F03226820A4472B3C298DC1FEE4E1BC1E5146FE0F4859291 - -Count = 443 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C -CT = E529B07637F03226820A4472B3B5EA7B5B45D04D4A0E71154D6F106971 - -Count = 444 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226820A4472B320B4934D8C3828DF781EC0D25E2CE37F - -Count = 445 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226820A4472B3AC47B0B4CB70B80D5D001F0203883EC0 - -Count = 446 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226820A4472B366AA130C829DAEEE38FA01E6924354C0 - -Count = 447 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F03226820A4472B3C2FD84254100110359768493AEDDC0DA - -Count = 448 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226820A4472B3ECB010ECFB1BE2294FEFBDD78918BD87 - -Count = 449 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226820A4472B36770AB76A269CB770F8C2DF5A2CCBF96 - -Count = 450 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820A4472B3BEC5FBE0CB01AC64345C9F8D31C367F1 - -Count = 451 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03226820A4472B3013CD67A9EE454154CDE5DAB7BFEB4E3 - -Count = 452 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03226820A4472B3170ABA282883FFFE13B35DA2A20D2CFA - -Count = 453 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226820A4472B3A93B9FA2972EDB0876AB673A9B97C2C3 - -Count = 454 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226820A4472B3DE3259BA95D5F0726F56116E8752F8AF - -Count = 455 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03226820A4472B3F1DD7429E6ACDBA4BF277E86E1D0649E - -Count = 456 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03226820A4472B3F44C1D5E724919ABFB4F7F335C82A742 - -Count = 457 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226820A4472B37881707FD512DFE31EC0FE7C321A3EF3 - -Count = 458 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226820A4472B36290D82BFA5C8CB4810DC3C3E7510E24 - -Count = 459 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F03226820A4472B3FA70084A78187610250B272C26F5BF3F - -Count = 460 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226820A4472B34469860EA031671CEBA1BC635D45C8CE - -Count = 461 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F03226820A4472B31E18606EDEA7D7E272F2BAC17C067210 - -Count = 462 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226820A4472B37067CA4BFE3EA4C8E97DFE46F430AB43 - -Count = 463 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = -CT = E529B07637F03226820A4472B394601DC7D0668BE50803A5698B50E1F3A7 - -Count = 464 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00 -CT = E529B07637F03226820A4472B394E0F99E8497A974CF42AB4A4AA513AE2A - -Count = 465 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001 -CT = E529B07637F03226820A4472B3943777BF5C6D228D1B87802F7E7671F751 - -Count = 466 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102 -CT = E529B07637F03226820A4472B39414AFFE606B8D97352C53AB32EB87A500 - -Count = 467 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203 -CT = E529B07637F03226820A4472B394FED3FA90961F8950E49109696DC61DB8 - -Count = 468 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001020304 -CT = E529B07637F03226820A4472B39460F5D58B7BDD2E009AD9C47A00022824 - -Count = 469 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405 -CT = E529B07637F03226820A4472B394B201DBD03EC2FAD6B76641F44053E1BF - -Count = 470 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203040506 -CT = E529B07637F03226820A4472B39492706F6F809C07A12BFA99D840BE873F - -Count = 471 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 0001020304050607 -CT = E529B07637F03226820A4472B394994E5CABFC624E432A1608A9DCFEFCDF - -Count = 472 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708 -CT = E529B07637F03226820A4472B394209FE46A43C913D9C89DD536C26F4123 - -Count = 473 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 00010203040506070809 -CT = E529B07637F03226820A4472B3941CD0D77B7CE59AB117006557E8387653 - -Count = 474 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A -CT = E529B07637F03226820A4472B3942F75FE646F96C8838AD74B180FA187D2 - -Count = 475 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B -CT = E529B07637F03226820A4472B3948B498A37E9B2CDD11CAABFD9F9AD845A - -Count = 476 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C -CT = E529B07637F03226820A4472B394FC3B2D73422C9B5AF7CFC57462387FBA - -Count = 477 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226820A4472B3946965C5658BC4FECF81A010EB5304F5B4 - -Count = 478 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226820A4472B394E596E69CCC8C6E1DA4BECF3B0EA0280B - -Count = 479 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226820A4472B3942F7B4524856178FEC144D1DF9F6B420B - -Count = 480 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F03226820A4472B3948B2CD20D46FCC713A0C854AAA3F5D611 - -Count = 481 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226820A4472B394A56146C4FCE73439B6516DEE8430AB4C - -Count = 482 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226820A4472B3942EA1FD5EA5951D67F632FDCCAFE4A95D - -Count = 483 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820A4472B394F714ADC8CCFD7A74CDE24FB43CEB713A - -Count = 484 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03226820A4472B39448ED805299188205B5608D9276D6A228 - -Count = 485 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03226820A4472B3945EDBEC002F7F29EEEA0D8D9BAF253A31 - -Count = 486 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226820A4472B394E0EAC98A90D20D188F15B70396BFD408 - -Count = 487 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226820A4472B39497E30F929229266296E8C1578A7AEE64 - -Count = 488 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03226820A4472B394B80C2201E1500DB44699AEBFECF87255 - -Count = 489 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03226820A4472B394BD9D4B7675B5CFBB02F1AF0A51AAB189 - -Count = 490 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226820A4472B39431502657D2EE09F3E77E2E453F322838 - -Count = 491 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226820A4472B3942B418E03FDA05AA478B313FAEA7918EF - -Count = 492 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F03226820A4472B394B3A15E627FE4A000DCB5F7152BDDA9F4 - -Count = 493 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226820A4472B3940DB8D026A7CDB10C121F6C5A506DDE05 - -Count = 494 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F03226820A4472B39457C93646D95B01F28B4C6AF8712E64DB - -Count = 495 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226820A4472B39439B69C63F9C272D810C32E7FF918BD88 - -Count = 496 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = -CT = E529B07637F03226820A4472B394652B61DE1B8898DA0DF4AD642E9D44C4DC - -Count = 497 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00 -CT = E529B07637F03226820A4472B39465AB85874F79BA4BCAB5A347EF68B69951 - -Count = 498 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001 -CT = E529B07637F03226820A4472B394657C0BA6978331B21E708822DBBBD4C02A - -Count = 499 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102 -CT = E529B07637F03226820A4472B394655FD3E7AB859EA830DB5BA6972622927B - -Count = 500 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203 -CT = E529B07637F03226820A4472B39465B5AFE35B780CB655139904CCA0632AC3 - -Count = 501 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001020304 -CT = E529B07637F03226820A4472B394652B89CC4095CE11056DD1C9DFCDA71F5F - -Count = 502 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405 -CT = E529B07637F03226820A4472B39465F97DC21BD0D1C5D3406E4C518DF6D6C4 - -Count = 503 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203040506 -CT = E529B07637F03226820A4472B39465D90C76A46E8F38A4DCF2947D8D1BB044 - -Count = 504 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 0001020304050607 -CT = E529B07637F03226820A4472B39465D232456012717146DD1E050C115BCBA4 - -Count = 505 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708 -CT = E529B07637F03226820A4472B394656BE3FDA1ADDA2CDC3F95D8930FCA7658 - -Count = 506 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 00010203040506070809 -CT = E529B07637F03226820A4472B3946557ACCEB092F6A5B4E00868F2259D4128 - -Count = 507 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A -CT = E529B07637F03226820A4472B394656409E7AF8185F7867DDF46BDC204B0A9 - -Count = 508 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B -CT = E529B07637F03226820A4472B39465C03593FC07A1F2D4EBA2B27C3408B321 - -Count = 509 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C -CT = E529B07637F03226820A4472B39465B74734B8AC3FA45F00C7C8D1AF9D48C1 - -Count = 510 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D -CT = E529B07637F03226820A4472B394652219DCAE65D7C1CA76A81D4E9EA1C2CF - -Count = 511 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E -CT = E529B07637F03226820A4472B39465AEEAFF57229F511853B6C29EC3051F70 - -Count = 512 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F -CT = E529B07637F03226820A4472B3946564075CEF6B7247FB364CDC7A52CE7570 - -Count = 513 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10 -CT = E529B07637F03226820A4472B39465C050CBC6A8EFF81657C0590F6E50E16A - -Count = 514 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = E529B07637F03226820A4472B39465EE1D5F0F12F40B3C4159604B49959C37 - -Count = 515 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = E529B07637F03226820A4472B3946565DDE4954B862262013AF06962419E26 - -Count = 516 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = E529B07637F03226820A4472B39465BC68B40322EE45713AEA4211F14E4641 - -Count = 517 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = E529B07637F03226820A4472B3946503919999770BBD0042688037BB739553 - -Count = 518 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = E529B07637F03226820A4472B3946515A7F5CBC16C16EB1D05803E62800D4A - -Count = 519 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = E529B07637F03226820A4472B39465AB96D0417EC1321D781DBAA65B1AE373 - -Count = 520 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = E529B07637F03226820A4472B39465DC9F16597C3A196761E0CCF247DFD91F - -Count = 521 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = E529B07637F03226820A4472B39465F3703BCA0F4332B1B191A31A215D452E - -Count = 522 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = E529B07637F03226820A4472B39465F6E152BD9BA6F0BEF5F9A2AF9C0F86F2 - -Count = 523 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = E529B07637F03226820A4472B394657A2C3F9C3CFD36F6107623E0F2971F43 - -Count = 524 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = E529B07637F03226820A4472B39465603D97C813B365A18FBB1E5F27DC2F94 - -Count = 525 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = E529B07637F03226820A4472B39465F8DD47A991F79F052BBDFAB0E6789E8F - -Count = 526 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = E529B07637F03226820A4472B3946546C4C9ED49DE8E09E51761FF9DC8E97E - -Count = 527 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = E529B07637F03226820A4472B394651CB52F8D37483EF77C44675DBC8B53A0 - -Count = 528 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = E529B07637F03226820A4472B3946572CA85A817D14DDDE7CB23DA34BD8AF3 - -Count = 529 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBD751A91924DBD20180C9CAAFD795D5C4 - -Count = 530 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB57B5F04DD5F943C6C1C7E96E22678849 - -Count = 531 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB803BD1952F72BA1204EC8C5AF105D132 - -Count = 532 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBA3E390A929DDA03CAF3F08166CF38363 - -Count = 533 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB499F9459D44FBE5967FDAA4DEAB23BDB - -Count = 534 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBD7B9BB42398D190919B5675E87760E47 - -Count = 535 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB054DB5197C92CDDF340AE2D0C727C7DC - -Count = 536 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB253C01A6C2CC30A8A8963AFCC7CAA15C - -Count = 537 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB2E023262BE32794AA97AAB8D5B8ADABC - -Count = 538 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB97D38AA3019924D04BF17612451B6740 - -Count = 539 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBAB9CB9B23EB5ADB8946CC6736F4C5030 - -Count = 540 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB983990AD2DC6FF8A09BBE83C88D5A1B1 - -Count = 541 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3C05E4FEABE2FAD89FC61CFD7ED9A239 - -Count = 542 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB4B7743BA007CAC5374A36650E54C59D9 - -Count = 543 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBDE29ABACC994C9C602CCB3CFD470D3D7 - -Count = 544 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB52DA88558EDC591427D26C1F89D40E68 - -Count = 545 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB98372BEDC7314FF7422872FB181F6468 - -Count = 546 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3C60BCC404ACF01A23A4F78E2481F072 - -Count = 547 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB122D280DBEB70330353DCECA03448D2F - -Count = 548 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB99ED9397E7C52A6E755E5EE828908F3E - -Count = 549 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB4058C3018EAD4D7D4E8EEC90BB9F5759 - -Count = 550 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBFFA1EE9BDB48B50C360C2EB6F1A2844B - -Count = 551 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE99782C96D2F1EE769612EBF28511C52 - -Count = 552 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB57A6A743D2823A110C79142711CBF26B - -Count = 553 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB20AF615BD079116B158462730D0EC807 - -Count = 554 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB0F404CC8A3003ABDC5F50D9B6B8C5436 - -Count = 555 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB0AD125BF37E5F8B2819D0C2ED6DE97EA - -Count = 556 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB861C489E90BE3EFA64128D61B8460E5B - -Count = 557 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB9C0DE0CABFF06DADFBDFB0DE6D0D3E8C - -Count = 558 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB04ED30AB3DB497095FD95431ACA98F97 - -Count = 559 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBBAF4BEEFE59D86059173CF7ED719F866 - -Count = 560 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE085588F9B0B36FB0820C9DCF65A42B8 - -Count = 561 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB8EFAF2AABB9245D193AF8D5B7E6C9BEB - -Count = 562 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB388CEB23FB27FB333F0DE02623C31FAEF1 - -Count = 563 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB380C0F7AAFD6D9A2F84CEE05E236EDF37C - -Count = 564 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38DB815B772C525B2C89C560D6E58FAA07 - -Count = 565 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38F8591A4B2AFD41022216E49A7879F856 - -Count = 566 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3812251EBBD76F5F67EAD446C1FE3840EE - -Count = 567 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB388C0331A03AADF837949C8BD293FC7572 - -Count = 568 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385EF73FFB7FB22CE1B9230E5CD3ADBCE9 - -Count = 569 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB387E868B44C1ECD19625BFD670D340DA69 - -Count = 570 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3875B8B880BD129874245347014F00A189 - -Count = 571 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38CC69004102B9C5EEC6D89A9E51911C75 - -Count = 572 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38F02633503D954C8619452AFF7BC62B05 - -Count = 573 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C3831A4F2EE61EB4849204B09C5FDA84 - -Count = 574 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3867BF6E1CA8C21BE612EFF0716A53D90C - -Count = 575 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3810CDC958035C4D6DF98A8ADCF1C622EC - -Count = 576 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB388593214ECAB428F88FE55F43C0FAA8E2 - -Count = 577 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38096002B78DFCB82AAAFB80939D5E755D - -Count = 578 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C38DA10FC411AEC9CF019E770C951F5D - -Count = 579 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3867DA3626078C1124AE8D1B02300B8B47 - -Count = 580 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB384997A2EFBD97E20EB814224617CEF61A - -Count = 581 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C2571975E4E5CB50F877B2643C1AF40B - -Count = 582 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB381BE249E38D8DAC43C3A7001CAF152C6C - -Count = 583 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38A41B6479D8685432BB25C23AE528FF7E - -Count = 584 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38B22D082B6E0FFFD9E448C2333CDB6767 - -Count = 585 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB380C1C2DA1D1A2DB2F8150F8AB0541895E - -Count = 586 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB387B15EBB9D359F05598AD8EFF1984B332 - -Count = 587 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3854FAC62AA020DB8348DCE1177F062F03 - -Count = 588 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38516BAF5D34C5198C0CB4E0A2C254ECDF - -Count = 589 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38DDA6C27C939EDFC4E93B61EDACCC756E - -Count = 590 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C7B76A28BCD08C9376F65C52798745B9 - -Count = 591 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385F57BA493E947637D2F0B8BDB823F4A2 - -Count = 592 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38E14E340DE6BD673B1C5A23F2C3938353 - -Count = 593 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38BB3FD26D982BD7C585092550E2D0398D - -Count = 594 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38D5407848B8B2A4EF1E8661D76AE6E0DE - -Count = 595 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850389E436D347ACC7269FCA2F2A3F8E014 - -Count = 596 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850B87A1A39C5585DB528F28133560ABD99 - -Count = 597 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38506FF43BE13FD3A461EDD9E4078568E4E2 - -Count = 598 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38504C2C7ADD397CBE4F460A604B189EB6B3 - -Count = 599 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850A6507E2DC4EEA02A8EC8C2109EDF0E0B - -Count = 600 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385038765136292C077AF0800F03F31B3B97 - -Count = 601 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850EA825F6D6C33D3ACDD3F8A8DB34AF20C - -Count = 602 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850CAF3EBD2D26D2EDB41A352A1B3A7948C - -Count = 603 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850C1CDD816AE936739404FC3D02FE7EF6C - -Count = 604 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850781C60D711383AA3A2C41E4F31765290 - -Count = 605 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850445353C62E14B3CB7D59AE2E1B2165E0 - -Count = 606 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385077F67AD93D67E1F9E08E8061FCB89461 - -Count = 607 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850D3CA0E8ABB43E4AB76F374A00AB497E9 - -Count = 608 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850A4B8A9CE10DDB2209D960E0D91216C09 - -Count = 609 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385031E641D8D935D7B5EBF9DB92A01DE607 - -Count = 610 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850BD1562219E7D4767CEE70442FDB93BB8 - -Count = 611 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385077F8C199D7905184AB1D1AA66C7251B8 - -Count = 612 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850D3AF56B0140DEE69CA919FD350ECC5A2 - -Count = 613 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850FDE2C279AE161D43DC08A6977729B8FF - -Count = 614 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850762279E3F764341D9C6B36B55CFDBAEE - -Count = 615 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850AF9729759E0C530EA7BB84CDCFF26289 - -Count = 616 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850106E04EFCBE9AB7FDF3946EB85CFB19B - -Count = 617 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850065868BD7D8E0094805446E25C3C2982 - -Count = 618 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850B8694D37C2232462E54C7C7A65A6C7BB - -Count = 619 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850CF608B2FC0D80F18FCB10A2E7963FDD7 - -Count = 620 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E08FA6BCB3A124CE2CC065C61FE161E6 - -Count = 621 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E51ECFCB2744E6C168A86473A2B3A23A - -Count = 622 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385069D3A2EA801F20898D27E53CCC2B3B8B - -Count = 623 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385073C20ABEAF5173DE12EAD88319600B5C - -Count = 624 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850EB22DADF2D15897AB6EC3C6CD8C4BA47 - -Count = 625 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850553B549BF53C98767846A723A374CDB6 - -Count = 626 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38500F4AB2FB8BAA2888E115A18182377768 - -Count = 627 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850613518DEAB335BA27A9AE5060A01AE3B - -Count = 628 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9BBCE0D22D50CEF67CE526B87A3BF7469 - -Count = 629 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E93B2A5476242E7EA08F5C4846564D29E4 - -Count = 630 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9ECA475AEDEA587744A772D72852F709F - -Count = 631 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9CF7C3492D80A9D5AE1A4A93E18D922CE - -Count = 632 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9250030622598833F29660B659E989A76 - -Count = 633 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9BB261F79C85A246F572EC676F35CAFEA - -Count = 634 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E969D211228D45F0B97A9143F8B30D6671 - -Count = 635 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E949A3A59D331B0DCEE60D9BD4B3E000F1 - -Count = 636 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9429D96594FE5442CE7E10AA52FA07B11 - -Count = 637 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9FB4C2E98F04E19B6056AD73A3131C6ED - -Count = 638 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9C7031D89CF6290DEDAF7675B1B66F19D - -Count = 639 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F4A63496DC11C2EC47204914FCFF001C - -Count = 640 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9509A40C55A35C7BED15DBDD50AF30394 - -Count = 641 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E927E8E781F1AB91353A38C7789166F874 - -Count = 642 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9B2B60F973843F4A04C5712E7A05A727A - -Count = 643 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E93E452C6E7F0B64726949CD37FDFEAFC5 - -Count = 644 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F4A88FD636E672910CB3D3D36C35C5C5 - -Count = 645 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E950FF18FFF57BCD7C6D3F56A650AB51DF - -Count = 646 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E97EB28C364F603E567BA66FE2776E2C82 - -Count = 647 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F57237AC161217083BC5FFC05CBA2E93 - -Count = 648 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E92CC7673A7F7A701B00154DB8CFB5F6F4 - -Count = 649 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9933E4AA02A9F886A78978F9E858825E6 - -Count = 650 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9850826F29CF8238127FA8F975C7BBDFF - -Count = 651 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E93B3903782355077742E2B50F65E153C6 - -Count = 652 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94C30C56021AE2C0D5B1FC35B792469AA - -Count = 653 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E963DFE8F352D707DB8B6EACB31FA6F59B - -Count = 654 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9664E8184C632C5D4CF06AD06A2F43647 - -Count = 655 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9EA83ECA56169039C2A892C49CC6CAFF6 - -Count = 656 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F09244F14E2750CBB54411F619279F21 - -Count = 657 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E968729490CC63AA6F1142F519D8832E3A - -Count = 658 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9D66B1AD4144ABB63DFE86E56A33359CB - -Count = 659 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E98C1AFCB46ADC0B9D46BB68F48270E315 - -Count = 660 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9E26556914A4578B7DD342C730A463A46 - -Count = 661 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D90BF81182AD5D9CE57A3FD6393DC267D - -Count = 662 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D105BD84CDBF7480916ADDEA2662E7BF0 - -Count = 663 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DC7D5F994217CB1DDD386BB96B54C228B - -Count = 664 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DE40DB8A827D3ABF378553FDA28BA70DA - -Count = 665 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D0E71BC58DA41B596B0979D81AEFBC862 - -Count = 666 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D90579343378312C6CEDF5092C33FFDFE - -Count = 667 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D42A39D18729CC610E360D51C836E3465 - -Count = 668 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D62D229A7CCC23B677FFC0D30838352E5 - -Count = 669 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D69EC1A63B03C72857E109C411FC32905 - -Count = 670 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DD03DA2A20F972F1F9C9B41DE015294F9 - -Count = 671 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DEC7291B330BBA6774306F1BF2B05A389 - -Count = 672 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDFD7B8AC23C8F445DED1DFF0CC9C5208 - -Count = 673 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D7BEBCCFFA5ECF11748AC2B313A905180 - -Count = 674 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D0C996BBB0E72A79CA3C9519CA105AA60 - -Count = 675 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D99C783ADC79AC209D5A684039039206E - -Count = 676 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D1534A05480D252DBF0B85BD3CD9DFDD1 - -Count = 677 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDFD903ECC93F4438954245375C5697D1 - -Count = 678 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D7B8E94C50AA2FBD5F4CEC04260C803CB - -Count = 679 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D55C3000CB0B908FFE257F906470D7E96 - -Count = 680 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDE03BB96E9CB21A1A23469246CD97C87 - -Count = 681 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D07B6EB0080A346B299E4DB5CFFD6A4E0 - -Count = 682 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DB84FC69AD546BEC3E166197AB5EB77F2 - -Count = 683 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DAE79AAC863211528BE0B19736C18EFEB - -Count = 684 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D10488F42DC8C31DEDB1323EB558201D2 - -Count = 685 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D6741495ADE771AA4C2EE55BF49473BBE - -Count = 686 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D48AE64C9AD0E3172129F3A572FC5A78F - -Count = 687 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D4D3F0DBE39EBF37D56F73BE292976453 - -Count = 688 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DC1F2609F9EB03535B378BAADFC0FFDE2 - -Count = 689 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDBE3C8CBB1FE66622CB587122944CD35 - -Count = 690 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D430318AA33BA9CC688B363FDE8E07C2E - -Count = 691 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DFD1A96EEEB938DCA4619F8B293500BDF - -Count = 692 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DA76B708E95053D34DF4AFE10B213B101 - -Count = 693 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DC914DAABB59C4E1E44C5BA973A256852 - -Count = 694 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFE6F49937E9BDA147D393F17A330913B5 - -Count = 695 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF6610C063189F3080929DD2BBC6FB4E38 - -Count = 696 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFB19EE1BBE214C95457B6B78F15991743 - -Count = 697 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9246A087E4BBD37AFC6533C3886F4512 - -Count = 698 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF783AA4771929CD1F34A791980E2EFDAA - -Count = 699 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFE61C8B6CF4EB6A4F4AEF5C8B63EAC836 - -Count = 700 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF34E88537B1F4BE996750D90523BB01AD - -Count = 701 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF149931880FAA43EEFBCC01292356672D - -Count = 702 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF1FA7024C73540A0CFA209058BF161CCD - -Count = 703 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA676BA8DCCFF579618AB4DC7A187A131 - -Count = 704 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9A39899CF3D3DEFEC736FDA68BD09641 - -Count = 705 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA99CA083E0A08CCC5AE1D3E96C4967C0 - -Count = 706 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF0DA0D4D06684899ECC9C27289A456448 - -Count = 707 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF7AD27394CD1ADF1527F95D8501D09FA8 - -Count = 708 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFEF8C9B8204F2BA805196881A30EC15A6 - -Count = 709 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF637FB87B43BA2A52748857CA6D48C819 - -Count = 710 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA9921BC30A573CB11172492EFC83A219 - -Count = 711 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF0DC58CEAC9CA835C70FECC5BC01D3603 - -Count = 712 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF2388182373D170766667F51FE7D84B5E - -Count = 713 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA848A3B92AA359282604653DCC0C494F - -Count = 714 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF71FDF32F43CB3E3B1DD4D7455F039128 - -Count = 715 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFCE04DEB5162EC64A65561563153E423A - -Count = 716 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFD832B2E7A0496DA13A3B156ACCCDDA23 - -Count = 717 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF6603976D1FE449575F232FF2F557341A - -Count = 718 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF110A51751D1F622D46DE59A6E9920E76 - -Count = 719 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF3EE57CE66E6649FB96AF364E8F109247 - -Count = 720 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF3B741591FA838BF4D2C737FB3242519B - -Count = 721 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFB7B978B05DD84DBC3748B6B45CDAC82A - -Count = 722 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFADA8D0E472961EEBA8858B0B8991F8FD - -Count = 723 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF35480085F0D2E44F0C836FE4483549E6 - -Count = 724 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF8B518EC128FBF543C229F4AB33853E17 - -Count = 725 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFD12068A1566D45BD5B7AF20912C684C9 - -Count = 726 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFBF5FC28476F43697C0F5B68E9AF05D9A - -Count = 727 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98797312339E7DE97B3682DC9AE41D3F06 - -Count = 728 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98F9974B676F5F78BC778CFF5B11EF628B - -Count = 729 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF982E196ABF95D48168B2A79A6FC28D3BF0 - -Count = 730 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF980DC12B83937B9B4619741E235F7B69A1 - -Count = 731 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98E7BD2F736EE98523D1B6BC78D93AD119 - -Count = 732 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98799B0068832B2273AFFE716BB4FEE485 - -Count = 733 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98AB6F0E33C634F6A58241F4E5F4AF2D1E - -Count = 734 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF988B1EBA8C786A0BD21EDD2CC9F4424B9E - -Count = 735 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9880208948049442301F31BDB86802307E - -Count = 736 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9839F13189BB3F1FAAFDBA602776938D82 - -Count = 737 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9805BE0298841396C22227D0465CC4BAF2 - -Count = 738 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98361B2B879760C4F0BFF0FE09BB5D4B73 - -Count = 739 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9892275FD41144C1A2298D0AC84D5148FB - -Count = 740 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98E555F890BADA9729C2E87065D6C4B31B - -Count = 741 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98700B10867332F2BCB487A5FAE7F83915 - -Count = 742 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98FCF8337F347A626E91997A2ABA5CE4AA - -Count = 743 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98361590C77D97748DF46364CE2B978EAA - -Count = 744 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98924207EEBE0ACB6095EFE1BB17091AB0 - -Count = 745 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98BC0F93270411384A8376D8FF30CC67ED - -Count = 746 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9837CF28BD5D631114C31548DD1B1865FC - -Count = 747 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98EE7A782B340B7607F8C5FAA58817BD9B - -Count = 748 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98518355B161EE8E7680473883C22A6E89 - -Count = 749 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9847B539E3D789259DDF2A388A1BD9F690 - -Count = 750 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98F9841C696824016BBA320212224318A9 - -Count = 751 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF988E8DDA716ADF2A11A3CF74463E8622C5 - -Count = 752 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98A162F7E219A601C773BE1BAE5804BEF4 - -Count = 753 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98A4F39E958D43C3C837D61A1BE5567D28 - -Count = 754 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98283EF3B42A180580D2599B548BCEE499 - -Count = 755 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98322F5BE0055656D74D94A6EB5E85D44E - -Count = 756 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98AACF8B818712AC73E99242049F216555 - -Count = 757 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9814D605C55F3BBD7F2738D94BE49112A4 - -Count = 758 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF984EA7E3A521AD0D81BE6BDFE9C5D2A87A - -Count = 759 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9820D8498001347EAB25E49B6E4DE47129 - -Count = 760 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA315A271C403148CCC76B3CBEA9095699 - -Count = 761 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAB1BE7E48B113D90B86651F7F5CFB0B14 - -Count = 762 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA66305F904B9820DF434E7A4B8F99526F - -Count = 763 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA45E81EAC4D373AF1E89DFE07126F003E - -Count = 764 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAAF941A5CB0A52494205F5C5C942EB886 - -Count = 765 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA31B235475D6783C45E17914FF9EA8D1A - -Count = 766 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAE3463B1C1878571273A814C1B9BB4481 - -Count = 767 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAC3378FA3A626AA65EF34CCEDB9562201 - -Count = 768 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAC809BC67DAD8E387EED85D9C251659E1 - -Count = 769 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA71D804A66573BE1D0C5380033B87E41D - -Count = 770 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA4D9737B75A5F3775D3CE306211D0D36D - -Count = 771 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7E321EA8492C65474E191E2DF64922EC - -Count = 772 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CADA0E6AFBCF086015D864EAEC00452164 - -Count = 773 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAAD7CCDBF6496369E330190419BD0DA84 - -Count = 774 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA382225A9AD7E530B456E45DEAAEC508A - -Count = 775 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAB4D10650EA36C3D960709A0EF7488D35 - -Count = 776 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7E3CA5E8A3DBD53A058A84EA6683E735 - -Count = 777 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CADA6B32C160466AD76406019F5A1D732F - -Count = 778 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAF426A608DA5D99FD729F38DB7DD80E72 - -Count = 779 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7FE61D92832FB0A332FCA8F9560C0C63 - -Count = 780 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAA6534D04EA47D7B0092C1A81C503D404 - -Count = 781 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA19AA609EBFA22FC171AED8A78F3E0716 - -Count = 782 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA0F9C0CCC09C5842A2EC3D8AE56CD9F0F - -Count = 783 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAB1AD2946B668A0DC4BDBE2366F577136 - -Count = 784 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAC6A4EF5EB4938BA65226946273924B5A - -Count = 785 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAE94BC2CDC7EAA0708257FB8A1510D76B - -Count = 786 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAECDAABBA530F627FC63FFA3FA84214B7 - -Count = 787 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA6017C69BF454A43723B07B70C6DA8D06 - -Count = 788 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7A066ECFDB1AF760BC7D46CF1391BDD1 - -Count = 789 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAE2E6BEAE595E0DC4187BA220D2350CCA - -Count = 790 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA5CFF30EA81771CC8D6D1396FA9857B3B - -Count = 791 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA068ED68AFFE1AC364F823FCD88C6C1E5 - -Count = 792 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA68F17CAFDF78DF1CD40D7B4A00F018B6 - -Count = 793 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D3879249A8815AA6E1E2FADA01DA93FB4 - -Count = 794 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DB89D7DCE79373BA95F218E61E85B6239 - -Count = 795 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D6F135C1683BCC27D9A0AEB553B393B42 - -Count = 796 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D4CCB1D2A8513D85331D96F19A6CF6913 - -Count = 797 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DA6B719DA7881C636F91BCD42208ED1AB - -Count = 798 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D389136C195436166875300514D4AE437 - -Count = 799 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DEA65389AD05CB5B0AAEC85DF0D1B2DAC - -Count = 800 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DCA148C256E0248C736705DF30DF64B2C - -Count = 801 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DC12ABFE112FC0125379CCC8291B630CC - -Count = 802 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D78FB0720AD575CBFD517111D8F278D30 - -Count = 803 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D44B43431927BD5D70A8AA17CA570BA40 - -Count = 804 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D77111D2E810887E5975D8F3342E94BC1 - -Count = 805 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DD32D697D072C82B701207BF2B4E54849 - -Count = 806 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DA45FCE39ACB2D43CEA45015F2F70B3A9 - -Count = 807 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D3101262F655AB1A99C2AD4C01E4C39A7 - -Count = 808 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DBDF205D62212217BB9340B1043E8E418 - -Count = 809 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D771FA66E6BFF3798DCCE15F4D2238E18 - -Count = 810 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DD3483147A8628875BD429081EEBD1A02 - -Count = 811 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DFD05A58E12797B5FABDBA9C5C978675F - -Count = 812 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D76C51E144B0B5201EBB839E7E2AC654E - -Count = 813 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DAF704E8222633512D0688B9F71A3BD29 - -Count = 814 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D108963187786CD63A8EA49B93B9E6E3B - -Count = 815 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D06BF0F4AC1E16688F78749B0E26DF622 - -Count = 816 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DB88E2AC07E4C427E929F7328DBF7181B - -Count = 817 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DCF87ECD87CB769048B62057CC7322277 - -Count = 818 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DE068C14B0FCE42D25B136A94A1B0BE46 - -Count = 819 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DE5F9A83C9B2B80DD1F7B6B211CE27D9A - -Count = 820 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D6934C51D3C704695FAF4EA6E727AE42B - -Count = 821 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D73256D49133E15C26539D7D1A731D4FC - -Count = 822 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DEBC5BD28917AEF66C13F333E669565E7 - -Count = 823 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D55DC336C4953FE6A0F95A8711D251216 - -Count = 824 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D0FADD50C37C54E9496C6AED33C66A8C8 - -Count = 825 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F1011121314151617 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D61D27F29175C3DBE0D49EA54B450719B - -Count = 826 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56D289C6B924DE277E1A8E88E768123B25 - -Count = 827 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526D9FEDD5FCB6B95B80AB269DE066A8 - -Count = 828 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5685E3BE352F774F6D9EABCE124E823FD3 - -Count = 829 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56A63BFF0929D8554335784A5ED3746D82 - -Count = 830 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D564C47FBF9D44A4B26FDBAE8055535D53A - -Count = 831 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56D261D4E23988EC7683F2251638F1E0A6 - -Count = 832 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D560095DAB97C9738A0AE4DA09878A0293D - -Count = 833 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5620E46E06C2C9C5D732D178B4784D4FBD - -Count = 834 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D562BDA5DC2BE378C35333DE9C5E40D345D - -Count = 835 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56920BE503019CD1AFD1B6345AFA9C89A1 - -Count = 836 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56AE44D6123EB058C70E2B843BD0CBBED1 - -Count = 837 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D569DE1FF0D2DC30AF593FCAA7437524F50 - -Count = 838 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5639DD8B5EABE70FA705815EB5C15E4CD8 - -Count = 839 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D564EAF2C1A0079592CEEE424185ACBB738 - -Count = 840 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56DBF1C40CC9913CB9988BF1876BF73D36 - -Count = 841 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565702E7F58ED9AC6BBD952E573653E089 - -Count = 842 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D569DEF444DC734BA88D86F30B3A7988A89 - -Count = 843 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5639B8D36404A90565B9E3B5C69B061E93 - -Count = 844 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5617F547ADBEB2F64FAF7A8C82BCC363CE - -Count = 845 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D569C35FC37E7C0DF11EF191CA0971761DF - -Count = 846 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D564580ACA18EA8B802D4C9AED80418B9B8 - -Count = 847 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56FA79813BDB4D4073AC4B6CFE4E256AAA - -Count = 848 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56EC4FED696D2AEB98F3266CF797D6F2B3 - -Count = 849 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56527EC8E3D287CF6E963E566FAE4C1C8A - -Count = 850 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5625770EFBD07CE4148FC3203BB28926E6 - -Count = 851 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D560A982368A305CFC25FB24FD3D40BBAD7 - -Count = 852 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D560F094A1F37E00DCD1BDA4E666959790B - -Count = 853 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5683C4273E90BBCB85FE55CF2907C1E0BA - -Count = 854 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5699D58F6ABFF598D26198F296D28AD06D - -Count = 855 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5601355F0B3DB16276C59E1679132E6176 - -Count = 856 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56BF2CD14FE598737A0B348D36689E1687 - -Count = 857 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56E55D372F9B0EC38492678B9449DDAC59 - -Count = 858 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D568B229D0ABB97B0AE09E8CF13C1EB750A - -Count = 859 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652EB73118CA18636EBDB576C67EE1D205E - -Count = 860 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526B9748D850A4A72C9A594FA61BEF7DD3 - -Count = 861 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652BC196900AA2F5EF85F722A92C88D24A8 - -Count = 862 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56529FC1283CAC8044D6F4A1AEDE557B76F9 - -Count = 863 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565275BD2CCC51125AB33C630C85D33ACE41 - -Count = 864 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652EB9B03D7BCD0FDE3422BC196BEFEFBDD - -Count = 865 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652396F0D8CF9CF29356F944418FEAF3246 - -Count = 866 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652191EB9334791D442F3089C34FE4254C6 - -Count = 867 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565212208AF73B6F9DA0F2E40D4562022F26 - -Count = 868 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652ABF1323684C4C03A106FD0DA7C9392DA - -Count = 869 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565297BE0127BBE84952CFF260BB56C4A5AA - -Count = 870 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A41B2838A89B1B6052254EF4B15D542B - -Count = 871 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565200275C6B2EBF1E32C458BA35475157A3 - -Count = 872 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56527755FB2F852148B92F3DC098DCC4AC43 - -Count = 873 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652E20B13394CC92D2C59521507EDF8264D - -Count = 874 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526EF830C00B81BDFE7C4CCAD7B05CFBF2 - -Count = 875 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A4159378426CAB1D19B6D433219791F2 - -Count = 876 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56520042045181F114F0783A51461D0905E8 - -Count = 877 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56522E0F90983BEAE7DA6EA368023ACC78B5 - -Count = 878 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A5CF2B026298CE842EC0F82011187AA4 - -Count = 879 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56527C7A7B940BF0A99715104A588217A2C3 - -Count = 880 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652C383560E5E1551E66D92887EC82A71D1 - -Count = 881 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652D5B53A5CE872FA0D32FF887711D9E9C8 - -Count = 882 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526B841FD657DFDEFB57E7B2EF284307F1 - -Count = 883 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56521C8DD9CE5524F5814E1AC4BB34863D9D - -Count = 884 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56523362F45D265DDE579E6BAB535204A1AC - -Count = 885 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565236F39D2AB2B81C58DA03AAE6EF566270 - -Count = 886 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652BA3EF00B15E3DA103F8C2BA981CEFBC1 - -Count = 887 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A02F585F3AAD8947A04116165485CB16 - -Count = 888 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565238CF883EB8E973E30447F2F995217A0D - -Count = 889 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565286D6067A60C062EFCAED69B6EE910DFC - -Count = 890 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652DCA7E01A1E56D21153BE6F14CFD2B722 - -Count = 891 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652B2D84A3F3ECFA13BC8312B9347E46E71 - -Count = 892 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246DE164A4E9E3FBCE56CDC9BFB7E8EA0AF - -Count = 893 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652465EF2131A6F1D2D222DD2B83A8B7CFD22 - -Count = 894 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246897C32C29596D4F6E8F9DD0E581EA459 - -Count = 895 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AAA473FE9339CED8432A5942C5E8F608 - -Count = 896 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524640D8770E6EABD0BD8BE8FB1943A94EB0 - -Count = 897 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246DEFE5815836977EDF5A0360A2E6D7B2C - -Count = 898 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460C0A564EC676A33BD81FB3846E3CB2B7 - -Count = 899 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652462C7BE2F178285E4C44836BA86ED1D437 - -Count = 900 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652462745D13504D617AE456FFAD9F291AFD7 - -Count = 901 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652469E9469F4BB7D4A34A7E42746EC00122B - -Count = 902 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246A2DB5AE58451C35C78799727C657255B - -Count = 903 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246917E73FA9722916EE5AEB96821CED4DA - -Count = 904 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246354207A91106943C73D34DA9D7C2D752 - -Count = 905 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652464230A0EDBA98C2B798B637044C572CB2 - -Count = 906 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246D76E48FB7370A722EED9E29B7D6BA6BC - -Count = 907 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652465B9D6B02343837F0CBC73D4B20CF7B03 - -Count = 908 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652469170C8BA7DD52113AE3D23AFB1041103 - -Count = 909 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524635275F93BE489EFECFB1A6DA8D9A8519 - -Count = 910 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652461B6ACB5A04536DD4D9289F9EAA5FF844 - -Count = 911 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524690AA70C05D21448A994B0FBC818BFA55 - -Count = 912 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246491F205634492399A29BBDC412842232 - -Count = 913 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246F6E60DCC61ACDBE8DA197FE258B9F120 - -Count = 914 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246E0D0619ED7CB700385747FEB814A6939 - -Count = 915 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652465EE14414686654F5E06C4573B8D08700 - -Count = 916 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524629E8820C6A9D7F8FF9913327A415BD6C - -Count = 917 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460607AF9F19E4545929E05CCFC297215D - -Count = 918 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460396C6E88D0196566D885D7A7FC5E281 - -Count = 919 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652468F5BABC92A5A501E8807DC35115D7B30 - -Count = 920 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246954A039D0514034917CAE18AC4164BE7 - -Count = 921 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460DAAD3FC8750F9EDB3CC056505B2FAFC - -Count = 922 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246B3B35DB85F79E8E17D669E2A7E028D0D - -Count = 923 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246E9C2BBD821EF581FE43598885F4137D3 - -Count = 924 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524687BD11FD01762B357FBADC0FD777EE80 - -Count = 925 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADB5240A851D678E9A0392822781F0652A - -Count = 926 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD35C053D1EC451F5D429CA1E6740238A7 - -Count = 927 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADE24E720916CEE68987B7C4D2A76061DC - -Count = 928 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADC19633351061FCA72C64409E3A96338D - -Count = 929 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD2BEA37C5EDF3E2C2E4A6E2C5BCD78B35 - -Count = 930 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADB5CC18DE003145929AEE2FD6D113BEA9 - -Count = 931 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD67381685452E9144B751AA5891427732 - -Count = 932 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD4749A23AFB706C332BCD727491AF11B2 - -Count = 933 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD4C7791FE878E25D12A21E3050DEF6A52 - -Count = 934 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADF5A6293F3825784BC8AA3E9A137ED7AE - -Count = 935 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADC9E91A2E0709F12317378EFB3929E0DE - -Count = 936 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFA4C3331147AA3118AE0A0B4DEB0115F - -Count = 937 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD5E704762925EA6431C9D547528BC12D7 - -Count = 938 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD2902E02639C0F0C8F7F82ED8B329E937 - -Count = 939 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADBC5C0830F028955D8197FB4782156339 - -Count = 940 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD30AF2BC9B760058FA4892497DFB1BE86 - -Count = 941 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFA428871FE8D136CC1733A734E7AD486 - -Count = 942 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD5E151F583D10AC81A0FFBF0672E4409C - -Count = 943 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD70588B91870B5FABB666864255213DC1 - -Count = 944 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFB98300BDE7976F5F60516607EF53FD0 - -Count = 945 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD222D609DB71111E6CDD5A418EDFAE7B7 - -Count = 946 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD9DD44D07E2F4E997B557663EA7C734A5 - -Count = 947 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD8BE221555493427CEA3A66377E34ACBC - -Count = 948 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD35D304DFEB3E668A8F225CAF47AE4285 - -Count = 949 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD42DAC2C7E9C54DF096DF2AFB5B6B78E9 - -Count = 950 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD6D35EF549ABC662646AE45133DE9E4D8 - -Count = 951 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD68A486230E59A42902C644A680BB2704 - -Count = 952 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADE469EB02A9026261E749C5E9EE23BEB5 - -Count = 953 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFE784356864C31367884F8563B688E62 - -Count = 954 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD669893370408CB92DC821CB9FACC3F79 - -Count = 955 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADD8811D73DC21DA9E122887F6817C4888 - -Count = 956 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD82F0FB13A2B76A608B7B8154A03FF256 - -Count = 957 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADEC8F5136822E194A10F4C5D328092B05 - -Count = 958 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02449FB931CB69C53A8FFFCFD806C36049 - -Count = 959 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02C47BE0653A4B54FDCEF1EC19F3313DC4 - -Count = 960 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0213F5C1BDC0C0AD290BDA892D205364BF - -Count = 961 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02302D8081C66FB707A0090D61BDA536EE - -Count = 962 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02DA5184713BFDA96268CBAF3A3BE48E56 - -Count = 963 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD024477AB6AD63F0E32168362295620BBCA - -Count = 964 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD029683A5319320DAE43B3CE7A716717251 - -Count = 965 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02B6F2118E2D7E2793A7A03F8B169C14D1 - -Count = 966 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02BDCC224A51806E71A64CAEFA8ADC6F31 - -Count = 967 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02041D9A8BEE2B33EB44C77365944DD2CD - -Count = 968 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD023852A99AD107BA839B5AC304BE1AE5BD - -Count = 969 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020BF78085C274E8B1068DED4B5983143C - -Count = 970 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02AFCBF4D64450EDE390F0198AAF8F17B4 - -Count = 971 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02D8B95392EFCEBB687B956327341AEC54 - -Count = 972 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD024DE7BB842626DEFD0DFAB6B80526665A - -Count = 973 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02C114987D616E4E2F28E469685882BBE5 - -Count = 974 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020BF93BC5288358CC4D1E778CC949D1E5 - -Count = 975 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02AFAEACECEB1EE7212C92F2F9F5D745FF - -Count = 976 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0281E338255105140B3A0BCBBDD21238A2 - -Count = 977 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020A2383BF08773D557A685B9FF9C63AB3 - -Count = 978 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02D396D329611F5A4641B8E9E76AC9E2D4 - -Count = 979 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD026C6FFEB334FAA237393A2BC120F431C6 - -Count = 980 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD027A5992E1829D09DC66572BC8F907A9DF - -Count = 981 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02C468B76B3D302D2A034F1150C09D47E6 - -Count = 982 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02B36171733FCB06501AB26704DC587D8A - -Count = 983 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD029C8E5CE04CB22D86CAC308ECBADAE1BB - -Count = 984 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02991F3597D857EF898EAB095907882267 - -Count = 985 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0215D258B67F0C29C16B2488166910BBD6 - -Count = 986 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020FC3F0E250427A96F4E9B5A9BC5B8B01 - -Count = 987 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0297232083D206803250EF51467DFF3A1A - -Count = 988 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02293AAEC70A2F913E9E45CA09064F4DEB - -Count = 989 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02734B48A774B921C00716CCAB270CF735 - -Count = 990 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD021D34E282542052EA9C99882CAF3A2E66 - -Count = 991 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207543A1A74389A92DB5117FCAA6311BF17 - -Count = 992 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207D4DE4320C9B8031C1019DF6B96E3E29A - -Count = 993 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207035062F83333FAC8D532BA5F4581BBE1 - -Count = 994 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207208823C4359CE0E67EE13E13D877E9B0 - -Count = 995 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207CAF42734C80EFE83B6239C485E365108 - -Count = 996 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020754D2082F25CC59D3C86B515B33F26494 - -Count = 997 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02078626067460D38D05E5D4D4D573A3AD0F - -Count = 998 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207A657B2CBDE8D707279480CF9734ECB8F - -Count = 999 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207AD69810FA273399078A49D88EF0EB06F - -Count = 1000 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020714B839CE1DD8640A9A2F4017F19F0D93 - -Count = 1001 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020728F70ADF22F4ED6245B2F076DBC83AE3 - -Count = 1002 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071B5223C03187BF50D865DE393C51CB62 - -Count = 1003 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207BF6E5793B7A3BA024E182AF8CA5DC8EA - -Count = 1004 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207C81CF0D71C3DEC89A57D505551C8330A - -Count = 1005 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02075D4218C1D5D5891CD31285CA60F4B904 - -Count = 1006 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207D1B13B38929D19CEF60C5A1A3D5064BB - -Count = 1007 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071B5C9880DB700F2D93F644FEAC9B0EBB - -Count = 1008 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207BF0B0FA918EDB0C0F27AC18B90059AA1 - -Count = 1009 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020791469B60A2F643EAE4E3F8CFB7C0E7FC - -Count = 1010 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071A8620FAFB846AB4A48068ED9C14E5ED - -Count = 1011 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207C333706C92EC0DA79F50DA950F1B3D8A - -Count = 1012 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02077CCA5DF6C709F5D6E7D218B34526EE98 - -Count = 1013 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02076AFC31A4716E5E3DB8BF18BA9CD57681 - -Count = 1014 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207D4CD142ECEC37ACBDDA72222A54F98B8 - -Count = 1015 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207A3C4D236CC3851B1C45A5476B98AA2D4 - -Count = 1016 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02078C2BFFA5BF417A67142B3B9EDF083EE5 - -Count = 1017 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020789BA96D22BA4B86850433A2B625AFD39 - -Count = 1018 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070577FBF38CFF7E20B5CCBB640CC26488 - -Count = 1019 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071F6653A7A3B12D772A0186DBD989545F - -Count = 1020 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207878683C621F5D7D38E076234182DE544 - -Count = 1021 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207399F0D82F9DCC6DF40ADF97B639D92B5 - -Count = 1022 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020763EEEBE2874A7621D9FEFFD942DE286B - -Count = 1023 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070D9141C7A7D3050B4271BB5ECAE8F138 - -Count = 1024 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EE5AF8F9C40050554CBD76E8A5C19BE07 - -Count = 1025 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E654BD6C8B12794938AD94D4BA9EBE38A - -Count = 1026 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EB2C5F7104BAC6D474FF2287F7A89BAF1 - -Count = 1027 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E911DB62C4D037769E421AC33E77FE8A0 - -Count = 1028 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E7B61B2DCB091690C2CE30E68613E5018 - -Count = 1029 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EE5479DC75D53CE5C52ABC37B0CFA6584 - -Count = 1030 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E37B3939C184C1A8A7F1446F54CABAC1F - -Count = 1031 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E17C22723A612E7FDE3889ED94C46CA9F - -Count = 1032 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E1CFC14E7DAECAE1FE2640FA8D006B17F - -Count = 1033 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EA52DAC266547F38500EFD237CE970C83 - -Count = 1034 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E99629F375A6B7AEDDF726256E4C03BF3 - -Count = 1035 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAAC7B628491828DF42A54C190359CA72 - -Count = 1036 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E0EFBC27BCF3C2D8DD4D8B8D8F555C9FA - -Count = 1037 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E7989653F64A27B063FBDC2756EC0321A - -Count = 1038 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EECD78D29AD4A1E9349D217EA5FFCB814 - -Count = 1039 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E6024AED0EA028E416CCCC83A025865AB - -Count = 1040 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAAC90D68A3EF98A20936D6DE93930FAB - -Count = 1041 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E0E9E9A416072274F68BA53ABAF0D9BB1 - -Count = 1042 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E20D30E88DA69D4657E236AEF88C8E6EC - -Count = 1043 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAB13B512831BFD3B3E40FACDA31CE4FD - -Count = 1044 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E72A6E584EA739A28059048B530133C9A - -Count = 1045 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070ECD5FC81EBF9662597D128A937A2EEF88 - -Count = 1046 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EDB69A44C09F1C9B2227F8A9AA3DD7791 - -Count = 1047 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E655881C6B65CED444767B0029A4799A8 - -Count = 1048 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E125147DEB4A7C63E5E9AC6568682A3C4 - -Count = 1049 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E3DBE6A4DC7DEEDE88EEBA9BEE0003FF5 - -Count = 1050 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E382F033A533B2FE7CA83A80B5D52FC29 - -Count = 1051 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EB4E26E1BF460E9AF2F0C294433CA6598 - -Count = 1052 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAEF3C64FDB2EBAF8B0C114FBE681554F - -Count = 1053 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E3613162E596A405C14C7F0142725E454 - -Count = 1054 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E880A986A81435150DA6D6B5B5C9593A5 - -Count = 1055 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070ED27B7E0AFFD5E1AE433E6DF97DD6297B - -Count = 1056 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EBC04D42FDF4C9284D8B1297EF5E0F028 - -Count = 1057 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF159AF1D2E487A8710728DE9B07AEC5BA - -Count = 1058 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF957EA88615A539B64626FD5AF25C9837 - -Count = 1059 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF42F0895EEF2EC062830D986E213EC14C - -Count = 1060 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF6128C862E981DA4C28DE1C22BCC8931D - -Count = 1061 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF8B54CC921413C429E01CBE793A892BA5 - -Count = 1062 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001020304 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF1572E389F9D163799E54736A574D1E39 - -Count = 1063 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFC786EDD2BCCEB7AFB3EBF6E4171CD7A2 - -Count = 1064 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203040506 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFE7F7596D02904AD82F772EC817F1B122 - -Count = 1065 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 0001020304050607 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFECC96AA97E6E033A2E9BBFB98BB1CAC2 - -Count = 1066 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5518D268C1C55EA0CC1062269520773E - -Count = 1067 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 00010203040506070809 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF6957E179FEE9D7C8138DD247BF77404E - -Count = 1068 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5AF2C866ED9A85FA8E5AFC0858EEB1CF - -Count = 1069 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFFECEBC356BBE80A8182708C9AEE2B247 - -Count = 1070 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF89BC1B71C020D623F3427264357749A7 - -Count = 1071 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF1CE2F36709C8B3B6852DA7FB044BC3A9 - -Count = 1072 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF9011D09E4E802364A033782B59EF1E16 - -Count = 1073 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5AFC7326076D3587C5C966CFC8247416 - -Count = 1074 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFFEABE40FC4F08A6AA445E3BAF4BAE00C - -Count = 1075 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFD0E670C67EEB7940B2DCDAFED37F9D51 - -Count = 1076 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5B26CB5C2799501EF2BF4ADCF8AB9F40 - -Count = 1077 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF82939BCA4EF1370DC96FF8A46BA44727 - -Count = 1078 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011121314 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF3D6AB6501B14CF7CB1ED3A8221999435 - -Count = 1079 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF2B5CDA02AD736497EE803A8BF86A0C2C - -Count = 1080 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213141516 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF956DFF8812DE40618B980013C1F0E215 - -Count = 1081 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F1011121314151617 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFE264399010256B1B92657647DD35D879 - -Count = 1082 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFCD8B1403635C40CD421419AFBBB74448 - -Count = 1083 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFC81A7D74F7B982C2067C181A06E58794 - -Count = 1084 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF44D7105550E2448AE3F39955687D1E25 - -Count = 1085 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5EC6B8017FAC17DD7C3EA4EABD362EF2 - -Count = 1086 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFC6266860FDE8ED79D83840057C929FE9 - -Count = 1087 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF783FE62425C1FC751692DB4A0722E818 - -Count = 1088 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF224E00445B574C8B8FC1DDE8266152C6 - -Count = 1089 -Key = 000102030405060708090A0B0C0D0E0F -Nonce = 000102030405060708090A0B0C0D0E0F -PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F -CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF4C31AA617BCE3FA1144E996FAE578B95 - diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/api.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/api.h deleted file mode 100644 index a4aa567..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/crypto_aead.h deleted file mode 100644 index e2ca9b0..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/crypto_aead.h +++ /dev/null @@ -1,18 +0,0 @@ - -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 -); - -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 -); \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/encrypt.c deleted file mode 100644 index de98d07..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/encrypt.c +++ /dev/null @@ -1,201 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). -* -* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include "skinny128.h" -#include "skinnyaead.h" -#include -#include - -/****************************************************************************** -* x ^= y where x, y are 128-bit blocks (16 bytes array). -******************************************************************************/ -static void xor_block(u8 * x, const u8* y) { - for(int i = 0; i < BLOCKBYTES; i++) - x[i] ^= y[i]; -} - -/****************************************************************************** -* Encryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u64 i,lfsr = 1; - u8 feedback; - u32 rtk1[4*16]; - u32 rtk2_3[4*SKINNY128_384_ROUNDS]; - u8 tmp[BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - tkschedule_lfsr(rtk2_3, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(rtk2_3); - memset(tmp, 0x00, BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(sum, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (mlen >= BLOCKBYTES) { // while entire blocks to process - LE_STR_64(tmp, lfsr); - tkschedule_perm_tk1(rtk1, tmp); // precompute RTK1 given the LFSR - skinny128_384(c, rtk2_3, m, rtk1); - xor_block(sum, m); // sum for tag computation - mlen -= BLOCKBYTES; - c += BLOCKBYTES; - m += BLOCKBYTES; - UPDATE_LFSR(lfsr); // update lfsr for next block - } - SET_DOMAIN(tmp, 0x04); // domain for tag computation - if (mlen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); // lfsr for last block - SET_DOMAIN(tmp, 0x01); // domain for padding - for(i = 0; i < mlen; i++) - sum[i] ^= m[i]; // sum for tag computation - sum[i] ^= 0x80; // padding - tkschedule_perm_tk1(rtk1, tmp); - skinny128_384(auth, rtk2_3, auth, rtk1); // encrypt 'auth' = 0^16 - for(i = 0; i < mlen; i++) - c[i] = auth[i] ^ m[i]; // encrypted padded block - c += mlen; - SET_DOMAIN(tmp, 0x05); // domain for tag computation - UPDATE_LFSR(lfsr); - } - LE_STR_64(tmp, lfsr); // lfsr for tag computation - tkschedule_perm_tk1(rtk1, tmp); - skinny128_384(sum, rtk2_3, sum, rtk1); // compute the tag - memcpy(c, sum, TAGBYTES); - // ----------------- Process the plaintext ----------------- - - // ----------------- Process the associated data ----------------- - lfsr = 1; - SET_DOMAIN(tmp, 0x02); - memset(auth, 0x00, BLOCKBYTES); - while (adlen >= BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - tkschedule_perm_tk1(rtk1, tmp); - skinny128_384(sum, rtk2_3, ad, rtk1); // use 'sum' as tmp array - xor_block(auth, sum); - adlen -= BLOCKBYTES; - ad += BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - if (adlen > 0) { - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x03); // domain for padding ad - tkschedule_perm_tk1(rtk1, tmp); - memset(tmp, 0x00, BLOCKBYTES); // padding - memcpy(tmp, ad, adlen); // padding - tmp[adlen] = 0x80; // padding - skinny128_384(tmp, rtk2_3, tmp, rtk1); - xor_block(auth, tmp); - } - xor_block(c, auth); // XOR for tag computation - // ----------------- Process the associated data ----------------- - - return 0; -} - -/****************************************************************************** -* Encryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u64 i,lfsr = 1; - u8 feedback; - u32 rtk1[4*16]; - u32 rtk2_3[4*SKINNY128_384_ROUNDS]; - u8 tmp[2*BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - clen -= TAGBYTES; - *mlen = clen; - tkschedule_lfsr(rtk2_3, npub, k, SKINNY128_384_ROUNDS); - tkschedule_perm(rtk2_3); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(sum, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (clen >= BLOCKBYTES) { // while entire blocks to process - LE_STR_64(tmp, lfsr); - tkschedule_perm_tk1(rtk1, tmp); // precompute RTK1 given the LFSR - skinny128_384_inv(m, rtk2_3, c, rtk1); - xor_block(sum, m); // sum for tag computation - clen -= BLOCKBYTES; - c += BLOCKBYTES; - m += BLOCKBYTES; - UPDATE_LFSR(lfsr); // update LFSR for the next block - } - SET_DOMAIN(tmp, 0x04); // domain for tag computation - if (clen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); // lfsr for last block - SET_DOMAIN(tmp, 0x01); // domain for padding - tkschedule_perm_tk1(rtk1, tmp); - skinny128_384(auth, rtk2_3, auth, rtk1); - for(i = 0; i < clen; i++) { - m[i] = auth[i] ^ c[i]; // encrypted padded block - sum[i] ^= m[i]; // sum for tag computation - } - sum[i] ^= 0x80; // padding - c += clen; - SET_DOMAIN(tmp, 0x05); // domain for tag computation - UPDATE_LFSR(lfsr); - } - LE_STR_64(tmp, lfsr); // lfsr for tag computation - tkschedule_perm_tk1(rtk1, tmp); - skinny128_384(sum, rtk2_3, sum, rtk1); // compute the tag - // ----------------- Process the plaintext ----------------- - - // ----------------- Process the associated data ----------------- - lfsr = 1; - SET_DOMAIN(tmp, 0x02); - memset(auth, 0x00, BLOCKBYTES); - while (adlen >= BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - tkschedule_perm_tk1(rtk1, tmp); - skinny128_384(tmp + BLOCKBYTES, rtk2_3, ad, rtk1); - xor_block(auth, tmp + BLOCKBYTES); - adlen -= BLOCKBYTES; - ad += BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - if (adlen > 0) { - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x03); // domain for padding ad - tkschedule_perm_tk1(rtk1, tmp); - memset(tmp, 0x00, BLOCKBYTES); // padding - memcpy(tmp, ad, adlen); // padding - tmp[adlen] ^= 0x80; // padding - skinny128_384(tmp, rtk2_3, tmp, rtk1); - xor_block(auth, tmp); - } - xor_block(sum, auth); // XOR for tag computation - feedback = 0; - for(i = 0; i < TAGBYTES; i++) - feedback |= sum[i] ^ c[i]; // constant-time tag verification - return feedback; - // ----------------- Process the associated data ----------------- -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.h deleted file mode 100644 index ce1f4f3..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -#define SKINNY128_384_ROUNDS 40 - -extern void skinny128_384(u8* ctext, const u32* rtk2_3, const u8* ptext, const u32* rtk1); -extern void skinny128_384_inv(u8* ptext, const u32* rtk2_3, const u8* ctext, const u32* rtk1); -extern void tkschedule_lfsr(u32* rtk2_3, const u8* tk2, const u8* tk3, const int rounds); -extern void tkschedule_perm(u32* rtk2_3); -extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1); - - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.s b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.s deleted file mode 100644 index 5341082..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinny128.s +++ /dev/null @@ -1,2137 +0,0 @@ -/******************************************************************************* -* ARM assembly implementation of fixsliced SKINNY-128-384. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -*******************************************************************************/ - -.syntax unified -.thumb - -/******************************************************************************* -* applies P^2 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p2: - movw r1, #0xcc00 - movt r1, #0xcc00 //r1 <- 0xcc00cc00 - movw r10, #0xcc00 - movt r10, #0x0033 //r10<- 0xcc000033 - and r11, r1, r6, ror #14 - bfi r11, r6, #16, #8 - and r12, r6, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r6 - orr r11, r11, r12, lsr #8 - and r12, r6, #0x00cc0000 - orr r6, r11, r12, lsr #18 - and r11, r1, r7, ror #14 - bfi r11, r7, #16, #8 - and r12, r7, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r7 - orr r11, r11, r12, lsr #8 - and r12, r7, #0x00cc0000 - orr r7, r11, r12, lsr #18 - and r11, r1, r8, ror #14 - bfi r11, r8, #16, #8 - and r12, r8, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r8 - orr r11, r11, r12, lsr #8 - and r12, r8, #0x00cc0000 - orr r8, r11, r12, lsr #18 - and r11, r1, r9, ror #14 - bfi r11, r9, #16, #8 - and r12, r9, #0xcc000000 - orr r11, r11, r12, lsr #2 - and r12, r10, r9 - orr r11, r11, r12, lsr #8 - and r12, r9, #0x00cc0000 - orr r9, r11, r12, lsr #18 - bx lr - -/******************************************************************************* -* applies P^4 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p4: - str.w r14, [sp] //store r14 on the stack - movw r14, #0x00cc - movt r14, #0xcc00 //r14<- 0xcc0000cc - movw r12, #0xcc00 - movt r12, #0x3300 //r12<- 0x3300cc00 - movw r11, #0x00cc - movt r11, #0x00cc //r11<- 0x00cc00cc - and r10, r14, r6, ror #22 - and r1, r12, r6, ror #16 - orr r10, r10, r1 - and r1, r6, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r6, r6, r1 - orr r6, r10, r6, ror #24 - and r10, r14, r7, ror #22 - and r1, r12, r7, ror #16 - orr r10, r10, r1 - and r1, r7, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r7, r7, r1 - orr r7, r10, r7, ror #24 - and r10, r14, r8, ror #22 - and r1, r12, r8, ror #16 - orr r10, r10, r1 - and r1, r8, r11 - orr r10, r10, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r8, r8, r1 - orr r8, r10, r8, ror #24 - and r10, r14, r9, ror #22 - ldr.w r14, [sp] //restore r14 - and r12, r12, r9, ror #16 - orr r10, r10, r12 - and r12, r9, r11 - orr r10, r10, r12, lsr #2 - movw r12, #0xcc33 //r1 <- 0x0000cc33 - and r9, r9, r12 - orr r9, r10, r9, ror #24 - bx lr - -/******************************************************************************* -* applies P^6 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p6: - movw r1, #0x3333 //r1 <- 0x00003333 - movw r12, #0x00cc - movt r12, #0x3300 //r12<- 0x330000cc - and r10, r6, r1, ror #8 // --- permute r6 6 times - and r11, r12, r6, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r6, ror #10 - orr r11, r11, r10 - and r10, r6, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r6, #0x00003300 - orr r6, r11, r10, lsl #2 // permute r6 6 times --- - and r10, r7, r1, ror #8 // --- permute r7 6 times - and r11, r12, r7, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r7, ror #10 - orr r11, r11, r10 - and r10, r7, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r7, #0x00003300 - orr r7, r11, r10, lsl #2 // permute r7 6 times --- - and r10, r8, r1, ror #8 // --- permute r8 6 times - and r11, r12, r8, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r8, ror #10 - orr r11, r11, r10 - and r10, r8, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r8, #0x00003300 - orr r8, r11, r10, lsl #2 // permute r8 6 times --- - and r10, r9, r1, ror #8 // --- permute r9 6 times - and r11, r12, r9, ror #24 - orr r11, r11, r10, ror #6 - and r10, r1, r9, ror #10 - orr r11, r11, r10 - and r10, r9, #0x000000cc - orr r11, r11, r10, lsl #14 - and r10, r9, #0x00003300 // permute r9 6 times --- - orr r9, r11, r10, lsl #2 - bx lr - -/******************************************************************************* -* applies P^8 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p8: - movw r12, #0x3333 //r12<- 0x00003333 - movw r1, #0x0000 - movt r1, #0x33cc //r1 <- 0x33cc0000 - and r10, r6, r1 // --- permute r6 8 times - and r11, r1, r6, ror #8 - orr r11, r11, r10, ror #24 - and r10, r6, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r6, r12, lsl #8 - orr r6, r11, r10, lsr #6 // permute r6 8 times --- - and r10, r7, r1 // --- permute r7 8 times - and r11, r1, r7, ror #8 - orr r11, r11, r10, ror #24 - and r10, r7, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r7, r12, lsl #8 - orr r7, r11, r10, lsr #6 // permute r7 8 times --- - and r10, r8, r1 // --- permute r8 8 times - and r11, r1, r8, ror #8 - orr r11, r11, r10, ror #24 - and r10, r8, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r8, r12, lsl #8 - orr r8, r11, r10, lsr #6 // permute r8 8 times --- - and r10, r9, r1 // --- permute r9 8 times - and r11, r1, r9, ror #8 - orr r11, r11, r10, ror #24 - and r10, r9, r12, lsl #2 - orr r11, r11, r10, ror #26 - and r10, r9, r12, lsl #8 - orr r9, r11, r10, lsr #6 // permute r9 8 times --- - bx lr - -/******************************************************************************* -* applies P^10 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p10: - movw r12, #0x0033 - movt r12, #0x3300 //r12<- 0x33000033 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r10, r6, r1, ror #8 // --- permute r6 10 times - and r11, r12, r6, ror #26 - orr r11, r11, r10, ror #8 - and r10, r6, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r6, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r6, #0x0000cc00 - orr r6, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r7, r1, ror #8 // --- permute r6 10 times - and r11, r12, r7, ror #26 - orr r11, r11, r10, ror #8 - and r10, r7, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r7, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r7, #0x0000cc00 - orr r7, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r8, r1, ror #8 // --- permute r6 10 times - and r11, r12, r8, ror #26 - orr r11, r11, r10, ror #8 - and r10, r8, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r8, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r8, #0x0000cc00 - orr r8, r11, r10, lsr #2 // permute r6 10 times --- - and r10, r9, r1, ror #8 // --- permute r6 10 times - and r11, r12, r9, ror #26 - orr r11, r11, r10, ror #8 - and r10, r9, r12, ror #24 - orr r11, r11, r10, ror #22 - and r10, r9, #0x00330000 - orr r11, r11, r10, lsr #14 - and r10, r9, #0x0000cc00 - orr r9, r11, r10, lsr #2 // permute r6 10 times --- - bx lr - -/******************************************************************************* -* applies P^12 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p12: - str.w r14, [sp] //store r14 on the stack - movw r14, #0xcc33 //r14<- 0x0000cc33 - movw r12, #0x00cc - movt r12, #0x00cc //r12<- 0x00cc00cc - movw r1, #0x3300 - movt r1, #0xcc00 //r1 <- 0xcc003300 - and r10, r14, r6, ror #8 // --- permute r6 12 times - and r11, r12, r6, ror #30 - orr r11, r11, r10 - and r10, r1, r6, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r6, r10, ror #8 - orr r6, r11, r10, ror #10 // permute r6 12 times --- - and r10, r14, r7, ror #8 // --- permute r7 12 times - and r11, r12, r7, ror #30 - orr r11, r11, r10 - and r10, r1, r7, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r7, r10, ror #8 - orr r7, r11, r10, ror #10 // permute r7 12 times --- - and r10, r14, r8, ror #8 // --- permute r8 12 times - and r11, r12, r8, ror #30 - orr r11, r11, r10 - and r10, r1, r8, ror #16 - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r8, r10, ror #8 - orr r8, r11, r10, ror #10 // permute r8 12 times --- - and r10, r14, r9, ror #8 // --- permute r9 12 times - and r11, r12, r9, ror #30 - orr r11, r11, r10 - and r10, r1, r9, ror #16 - ldr.w r14, [sp] - orr r11, r11, r10 - movw r10, #0xcccc //r10<- 0x0000cccc - and r10, r9, r10, ror #8 - orr r9, r11, r10, ror #10 // permute r9 12 times --- - bx lr - -/******************************************************************************* -* applies P^14 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p14: - movw r1, #0xcc00 - movt r1, #0x0033 //r1 <- 0x0033cc00 - movw r12, #0xcc00 - movt r12, #0xcc00 //r12<- 0x33003300 - and r10, r1, r6, ror #24 // --- permute r6 14 times - and r11, r6, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r6, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r6, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r6, r12 - orr r6, r11, r10, ror #18 // permute r6 14 times --- - and r10, r1, r7, ror #24 // --- permute r7 14 times - and r11, r7, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r7, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r7, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r7, r12 - orr r7, r11, r10, ror #18 // permute r7 14 times --- - and r10, r1, r8, ror #24 // --- permute r8 14 times - and r11, r8, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r8, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r8, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r8, r12 - orr r8, r11, r10, ror #18 // permute r8 14 times --- - and r10, r1, r9, ror #24 // --- permute r9 14 times - and r11, r9, #0x00000033 - orr r11, r10, r11, ror #14 - and r10, r9, #0x33000000 - orr r11, r11, r10, ror #30 - and r10, r9, #0x00ff0000 - orr r11, r11, r10, ror #16 - and r10, r9, r12 - orr r9, r11, r10, ror #18 // permute r9 14 times --- - bx lr - -.align 2 -packing: - eor r12, r2, r2, lsr #3 - and r12, r12, r10 - eor r2, r2, r12 - eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - eor r12, r3, r3, lsr #3 - and r12, r12, r10 - eor r3, r3, r12 - eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r12, r4, r4, lsr #3 - and r12, r12, r10 - eor r4, r4, r12 - eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r12, r5, r5, lsr #3 - and r12, r12, r10 - eor r5, r5, r12 - eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r12, r2, r4, lsr #2 - and r12, r12, r11 - eor r2, r2, r12 - eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r12, r2, r3, lsr #4 - and r12, r12, r11, lsr #2 - eor r2, r2, r12 - eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r12, r2, r5, lsr #6 - and r12, r12, r11, lsr #4 - eor r2, r2, r12 - eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r12, r4, r3, lsr #2 - and r12, r12, r11, lsr #2 - eor r4, r4, r12 - eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r12, r4, r5, lsr #4 - and r12, r12, r11, lsr #4 - eor r4, r4, r12 - eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r12, r3, r5, lsr #2 - and r12, r12, r11, lsr #4 - eor r3, r3, r12 - eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - bx lr - -.align 2 -unpacking: - movw r6, #0x0a0a - movt r6, #0x0a0a //r6 <- 0x0a0a0a0a - eor r10, r3, r5, lsr #2 - and r10, r10, r7, lsr #4 - eor r3, r3, r10 - eor r5, r5, r10, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) - eor r10, r4, r5, lsr #4 - and r10, r10, r7, lsr #4 - eor r4, r4, r10 - eor r5, r5, r10, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) - eor r10, r4, r3, lsr #2 - and r10, r10, r7, lsr #2 - eor r4, r4, r10 - eor r3, r3, r10, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) - eor r10, r2, r5, lsr #6 - and r10, r10, r7, lsr #4 - eor r2, r2, r10 - eor r5, r5, r10, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) - eor r10, r2, r3, lsr #4 - and r10, r10, r7, lsr #2 - eor r2, r2, r10 - eor r3, r3, r10, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) - eor r10, r2, r4, lsr #2 - and r10, r10, r7 - eor r2, r2, r10 - eor r4, r4, r10, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) - eor r10, r5, r5, lsr #3 - and r10, r10, r6 - eor r5, r5, r10 - eor r5, r5, r10, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) - eor r10, r4, r4, lsr #3 - and r10, r10, r6 - eor r4, r4, r10 - eor r4, r4, r10, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) - eor r10, r3, r3, lsr #3 - and r10, r10, r6 - eor r3, r3, r10 - eor r3, r3, r10, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) - eor r10, r2, r2, lsr #3 - and r10, r10, r6 - eor r2, r2, r10 - eor r2, r2, r10, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) - bx lr - -/****************************************************************************** -* Compute LFSR2(TK2) ^ LFSR3(TK3) for all rounds. -* Performing both at the same time allows to save some memory accesses. -******************************************************************************/ -@ void tkschedule_lfsr(u32* tk, const u8* tk2, const u8* tk3, const int rounds) -.global tkschedule_lfsr -.type tkschedule_lfsr,%function -.align 2 -tkschedule_lfsr: - push {r0-r12, r14} - ldr.w r3, [r1, #8] //load tk2 (3rd word) - ldr.w r4, [r1, #4] //load tk2 (2nd word) - ldr.w r5, [r1, #12] //load tk2 (4th word) - ldr.w r12, [r1] //load tk2 (1st word) - mov r1, r2 //move tk3 address in r1 - mov r2, r12 //move 1st tk2 word in r2 - movw r10, #0x0a0a - movt r10, #0x0a0a //r10 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r7 <- 0x30303030 - bl packing //pack tk2 - mov r6, r2 //move tk2 from r2-r5 to r6-r9 - mov r7, r3 //move tk2 from r2-r5 to r6-r9 - mov r8, r4 //move tk2 from r2-r5 to r6-r9 - mov r9, r5 //move tk2 from r2-r5 to r6-r9 - ldr.w r3, [r1, #8] //load tk3 (3rd word) - ldr.w r4, [r1, #4] //load tk3 (2nd word) - ldr.w r5, [r1, #12] //load tk3 (4th) word) - ldr.w r2, [r1] //load tk3 (1st) word) - bl packing //pack tk3 - eor r10, r10, r10, lsl #4 //r10<- 0xaaaaaaaa - ldr.w r1, [sp, #12] //load loop counter in r1 - eor r11, r2, r6 //tk2 ^ tk3 (1st word) - eor r12, r3, r7 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r4, r8 //tk2 ^ tk3 (3rd word) - eor r12, r5, r9 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #8 //store in tk - loop: - and r12, r8, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r6 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r6, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r3, r10 // --- apply LFSR3 to tk3 - eor r12, r5, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r5, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r5, r7 //tk2 ^ tk3 (1st word) - eor r12, r2, r8 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r3, r9 //tk2 ^ tk3 (3rd word) - eor r12, r4, r6 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r9, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r7 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r7, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r2, r10 // --- apply LFSR3 to tk3 - eor r12, r4, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r4, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r4, r8 //tk2 ^ tk3 (1st word) - eor r12, r5, r9 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r2, r6 //tk2 ^ tk3 (3rd word) - eor r12, r3, r7 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r6, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r8 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r8, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r5, r10 // --- apply LFSR3 to tk3 - eor r12, r3, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r3, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r3, r9 //tk2 ^ tk3 (1st word) - eor r12, r4, r6 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r5, r7 //tk2 ^ tk3 (3rd word) - eor r12, r2, r8 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - and r12, r7, r10 // --- apply LFSR2 to tk2 - eor r12, r12, r9 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r9, r14, r12, lsr #1 // apply LFSR2 to tk2 --- - and r12, r4, r10 // --- apply LFSR3 to tk3 - eor r12, r2, r12, lsr #1 - and r14, r10, r12, lsl #1 - and r12, r12, r10 - orr r2, r14, r12, lsr #1 // apply LFSR3 to tk3 --- - eor r11, r2, r6 //tk2 ^ tk3 (1st word) - eor r12, r3, r7 //tk2 ^ tk3 (2nd word) - strd r11, r12, [r0], #8 //store in tk - eor r11, r4, r8 //tk2 ^ tk3 (3rd word) - eor r12, r5, r9 //tk2 ^ tk3 (4th word) - strd r11, r12, [r0], #24 //store in tk - subs.w r1, r1, #8 //decrease loop counter by 8 - bne loop - pop {r0-r12, r14} - bx lr - -/****************************************************************************** -* Applies the permutation P and add the round constants to all round tweakeys. -******************************************************************************/ -@ void tkschedule_perm(u32* tk) -.global tkschedule_perm -.type tkschedule_perm,%function -.align 2 -tkschedule_perm: - push {r0-r12, lr} - sub.w sp, #4 //to store r14 in subroutines - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r6, r6, r10 //tk &= 0xf0f0f0f0 (1st word) - and r7, r7, r10 //tk &= 0xf0f0f0f0 (2nd word) - and r8, r8, r10 //tk &= 0xf0f0f0f0 (3rd word) - and r9, r9, r10 //tk &= 0xf0f0f0f0 (4th word) - eor r8, r8, #0x00000004 //add rconst - eor r9, r9, #0x00000040 //add rconst - mvn r9, r9 //to remove a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 1st round - strd r6, r7, [r0], #8 //store 2nd half tk for 1st round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 2nd round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000100 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 3rd round - strd r6, r7, [r0], #8 //store 2nd half tk for 3rd round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 5th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 5th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 4th round - strd r8, r9, [r0], #24 //store 2nd half tk for 4th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 6th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x00400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 6th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - eor r9, r9, #0x00000400 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 7th round - strd r6, r7, [r0], #8 //store 2nd half tk for 7th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - eor r12, r12, #0x00000040 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 9th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000054 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 9th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r8, r8, #0x00010000 - eor r8, r8, #0x00000410 - eor r9, r9, #0x00000410 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 8th round - strd r8, r9, [r0], #24 //store 2nd half tk for 8th round - ldm r0, {r6-r9} //load tk - bl p10 //apply the permutation 10 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x00000100 //add rconst - eor r12, r12, #0x00000100 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 10th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 10th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r6, r6, #0x04000000 //add rconst - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - eor r9, r9, #0x00000100 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 11th round - strd r6, r7, [r0], #8 //store 2nd half tk for 11th round - ldm r0, {r6-r9} //load tk - bl p12 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 13th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00140000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 13th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x04000000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 12th round - strd r8, r9, [r0], #24 //store 2nd half tk for 12th round - ldm r0, {r6-r9} //load tk - bl p14 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 14th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x01400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 14th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 //add rconst - eor r8, r8, #0x00004400 //add rconst - eor r9, r9, #0x00000400 //add const - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 15th round - strd r6, r7, [r0], #8 //store 2nd half tk for 15th round - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - eor r11, r11, #0x00000040 //add rconst - eor r12, r12, #0x00000040 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 17th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000004 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 17th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r7 ,r7, #0x00000010 - eor r8, r8, #0x00000010 - eor r8, r8, #0x00010000 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 16th round - strd r8, r9, [r0], #24 //store 2nd half tk for 16th round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x00000100 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 18th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000040 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 18th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x40000000 //add rconst - eor r8, r8, #0x00000100 //add rconst - eor r9, r9, #0x04000000 //add rconst - eor r9, r9, #0x00000100 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 19th round - strd r6, r7, [r0], #8 //store 2nd half tk for 19th round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 21th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00100000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 21th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r8, r8, #0x04100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 20th round - strd r8, r9, [r0], #24 //store 2nd half tk for 20th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 22th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 22th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 23th round - strd r6, r7, [r0], #8 //store 2nd half tk for 23th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #24] //store 2nd half tk for 25th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000014 //add rconst - eor r12, r12, #0x00000040 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 25th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r8, r8, #0x00010400 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 24th round - strd r8, r9, [r0], #24 //store 2nd half tk for 24th round - ldm r0, {r6-r9} //load tk - bl p10 //apply the permutation 10 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 26th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 26th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x40000000 //add rconst - eor r9, r9, #0x04000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 27th round - strd r6, r7, [r0], #8 //store 2nd half tk for 27th round - ldm r0, {r6-r9} //load tk - bl p12 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r12, r12, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 29th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 29th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r8, r8, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 28th round - strd r8, r9, [r0], #24 //store 2nd half tk for 28th round - ldm r0, {r6-r9} //load tk - bl p14 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01000000 //add rconst - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 30th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 30th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x01000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 31th round - strd r6, r7, [r0], #8 //store 2nd half tk for 31th round - ldm r0, {r6-r9} //load tk - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6 //ror and mask to match fixslicing - and r12, r10, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #24] //store 2nd half tk for 33th round - and r11, r10, r8 //ror and mask to match fixslicing - and r12, r10, r9 //ror and mask to match fixslicing - eor r11, r11, #0x00000014 //add rconst - eor r12, r12, #0x00000050 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 33th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6 ,r6, #0x00000010 - eor r8, r8, #0x00010400 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 32th round - strd r8, r9, [r0], #24 //store 2nd half tk for 32th round - ldm r0, {r6-r9} //load tk - bl p2 //apply the permutation twice - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #26 //ror and mask to match fixslicing - and r12, r10, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 34th round - and r11, r10, r8, ror #26 //ror and mask to match fixslicing - and r12, r10, r9, ror #26 //ror and mask to match fixslicing - eor r11, r11, #0x10000000 //add rconst - eor r11, r11, #0x00000140 //add rconst - eor r12, r12, #0x00000100 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 34th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #12 - and r11, r10, r7, ror #28 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #12 - and r11, r10, r8, ror #28 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #12 - and r11, r10, r9, ror #28 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- - eor r7, r7, #0x04000000 //add rconst - eor r8, r8, #0x44000000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 35th round - strd r6, r7, [r0], #8 //store 2nd half tk for 35th round - ldm r0, {r6-r9} //load tk - bl p4 //apply the permutation 4 times - movw r10, #0xf0f0 - movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 - and r11, r10, r6, ror #16 //ror and mask to match fixslicing - and r12, r10, r7, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00400000 //add rconst - strd r11, r12, [r0, #24] //store 2nd half tk for 37th round - and r11, r10, r8, ror #16 //ror and mask to match fixslicing - and r12, r10, r9, ror #16 //ror and mask to match fixslicing - eor r11, r11, #0x00440000 //add rconst - eor r12, r12, #0x00500000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0, #16] //store 1st half tk for 37th round - and r10, r10, r10, lsr #2 //r10<- 0x30303030 - and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #6 - and r11, r10, r7, ror #14 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #6 - and r11, r10, r8, ror #14 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #6 - and r11, r10, r9, ror #14 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- - eor r6, r6, #0x00100000 //add rconst - eor r7, r7, #0x00100000 //add rconst - eor r8, r8, #0x00000001 //add rconst - eor r9, r9, #0x00100000 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 36th round - strd r8, r9, [r0], #24 //store 2nd half tk for 36th round - ldm r0, {r6-r9} //load tk - bl p6 //apply the permutation 6 times - movw r10, #0xc3c3 - movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 - and r11, r10, r6, ror #10 //ror and mask to match fixslicing - and r12, r10, r7, ror #10 //ror and mask to match fixslicing - eor r12, r12, #0x01000000 //add rconst - strd r11, r12, [r0], #8 //store 1st half tk for 38th round - and r11, r10, r8, ror #10 //ror and mask to match fixslicing - and r12, r10, r9, ror #10 //ror and mask to match fixslicing - eor r11, r11, #0x01400000 //add rconst - eor r11, r11, #0x00001000 //add rconst - eor r12, r12, #0x00400000 //add rconst - mvn r12, r12 //to save a NOT in sbox calculations - strd r11, r12, [r0], #8 //store 2nd half tk for 38th round - and r10, r10, r10, lsr #6 //r10<- 0x03030303 - and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing - and r6, r6, r10, lsl #6 - orr r6, r11, r6, ror #28 - and r11, r10, r7, ror #12 - and r7, r7, r10, lsl #6 - orr r7, r11, r7, ror #28 - and r11, r10, r8, ror #12 - and r8, r8, r10, lsl #6 - orr r8, r11, r8, ror #28 - and r11, r10, r9, ror #12 - and r9, r9, r10, lsl #6 - orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000400 //add rconst - eor r7, r7, #0x00000400 //add rconst - eor r8, r8, #0x01000000 - eor r8, r8, #0x00004000 //add rconst - eor r9, r9, #0x00000400 //add rconst - mvn r9, r9 //to save a NOT in sbox calculations - strd r8, r9, [r0], #8 //store 1st half tk for 39th round - strd r6, r7, [r0], #8 //store 2nd half tk for 39th round - ldm r0, {r6-r9} //load tk - bl p8 //apply the permutation 8 times - movw r10, #0x3030 - movt r10, #0x3030 //r10<- 0x30303030 - and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing - and r6, r6, r10, ror #4 - orr r6, r11, r6, ror #22 - and r11, r10, r7, ror #30 - and r7, r7, r10, ror #4 - orr r7, r11, r7, ror #22 - and r11, r10, r8, ror #30 - and r8, r8, r10, ror #4 - orr r8, r11, r8, ror #22 - and r11, r10, r9, ror #30 - and r9, r9, r10, ror #4 - orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- - eor r6, r6, #0x00000010 - eor r8, r8, #0x00010000 - eor r8, r8, #0x00000010 - eor r9, r9, #0x00000400 - mvn r9, r9 //to save a NOT in sbox calculations - strd r6, r7, [r0], #8 //store 1st half tk for 39th round - strd r8, r9, [r0] //store 2nd half tk for 39th round - add.w sp, #4 //restore stack pointer - pop {r0-r12, lr} - bx lr - -/****************************************************************************** -* Applies the permutations P^2, ..., P^14 for rounds 0 to 16. Since P^16=Id, we -* dont need more calculations as no LFSR is applied to TK1. -******************************************************************************/ -@ void tkschedule_perm_tk1(u32* tk, const u8* key) -.global tkschedule_perm_tk1 -.type tkschedule_perm_tk1,%function -.align 2 -tkschedule_perm_tk1: - push {r0-r12, lr} - ldr.w r3, [r1, #8] //load tk1 (3rd word) - ldr.w r4, [r1, #4] //load tk1 (2nd word) - ldr.w r5, [r1, #12] //load tk1 (4th word) - ldr.w r2, [r1] //load tk1 (1st word) - movw r10, #0x0a0a - movt r10, #0x0a0a //r6 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r7 <- 0x30303030 - bl packing //pack tk1 - mov r6, r2 //move tk1 from r2-r5 to r6-r9 - mov r7, r3 //move tk1 from r2-r5 to r6-r9 - mov r8, r4 //move tk1 from r2-r5 to r6-r9 - mov r9, r5 //move tk1 from r2-r5 to r6-r9 - movw r2, #0xf0f0 - movt r2, #0xf0f0 //r2<- 0xf0f0f0f0 - and r11, r8, r2 //tk &= 0xf0f0f0f0 (3rd word) - and r12, r9, r2 //tk &= 0xf0f0f0f0 (4th word) - strd r11, r12, [r0], #8 //store 1st half tk for 1st round - and r11, r6, r2 //tk &= 0xf0f0f0f0 (1st word) - and r12, r7, r2 //tk &= 0xf0f0f0f0 (2nd word) - strd r11, r12, [r0], #8 //store 2nd half tk for 1st round - movw r3, #0x3030 - movt r3, #0x3030 //r3 <- 0x30303030 - and r11, r3, r6, ror #30 //--- ror and masks to match fixslicing - and r12, r6, r3, ror #4 - orr r12, r11, r12, ror #22 - str.w r12, [r0, #224] - and r11, r3, r7, ror #30 - and r12, r7, r3, ror #4 - orr r12, r11, r12, ror #22 - str.w r12, [r0, #228] - and r11, r3, r8, ror #30 - and r12, r8, r3, ror #4 - orr r12, r11, r12, ror #22 - str.w r12, [r0, #232] - and r11, r3, r9, ror #30 - and r12, r9, r3, ror #4 - orr r12, r11, r12, ror #22 //ror and masks to match fixslicing --- - str.w r12, [r0, #236] - bl p2 //apply the permutation twice - movw r3, #0xc3c3 - movt r3, #0xc3c3 //r3 <- 0xc3c3c3c3 - and r11, r3, r6, ror #26 //ror and mask to match fixslicing - and r12, r3, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 2nd round - and r11, r3, r8, ror #26 //ror and mask to match fixslicing - and r12, r3, r9, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round - and r3, r3, r3, lsr #6 //r3<- 0x03030303 - and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #8] - and r11, r3, r7, ror #28 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #12] - and r11, r3, r9, ror #28 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #4] - and r11, r3, r8, ror #28 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 4 times - lsl r3, r3, #4 //r3 <- 0x30303030 - and r11, r3, r6, ror #14 //--- ror and masks to match fixslicing - and r12, r6, r3, ror #4 - orr r12, r11, r12, ror #6 - str.w r12, [r0], #4 - and r11, r3, r7, ror #14 - and r12, r7, r3, ror #4 - orr r12, r11, r12, ror #6 - str.w r12, [r0], #4 - and r11, r3, r8, ror #14 - and r12, r8, r3, ror #4 - orr r12, r11, r12, ror #6 - str.w r12, [r0], #4 - and r11, r3, r9, ror #14 - and r12, r9, r3, ror #4 - orr r12, r11, r12, ror #6 //ror and masks to match fixslicing --- - str.w r12, [r0], #4 - and r11, r2, r6, ror #16 //ror and mask to match fixslicing - and r12, r2, r7, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 5th round - and r11, r2, r8, ror #16 //ror and mask to match fixslicing - and r12, r2, r9, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 5th round - bl p2 //apply the permutation twice - movw r3, #0xc3c3 - movt r3, #0xc3c3 //r3<- 0xc3c3c3c3 - and r11, r3, r6, ror #10 //ror and mask to match fixslicing - and r12, r3, r7, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 6th round - and r11, r3, r8, ror #10 //ror and mask to match fixslicing - and r12, r3, r9, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 2nd half tk for 6th round - and r3, r3, r3, lsr #6 //r3<- 0x03030303 - and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #8] - and r11, r3, r7, ror #12 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #12] - and r11, r3, r9, ror #12 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #4] - and r11, r3, r8, ror #12 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 8 times - lsl r3, r3, #4 //r3 <- 0x30303030 - and r11, r3, r6, ror #30 //--- ror and masks to match fixslicing - and r12, r6, r3, ror #4 - orr r12, r11, r12, ror #22 - str.w r12, [r0], #4 - and r11, r3, r7, ror #30 - and r12, r7, r3, ror #4 - orr r12, r11, r12, ror #22 - str.w r12, [r0], #4 - and r11, r3, r8, ror #30 - and r12, r8, r3, ror #4 - orr r12, r11, r12, ror #22 - str.w r12, [r0], #4 - and r11, r3, r9, ror #30 - and r12, r9, r3, ror #4 - orr r12, r11, r12, ror #22 //ror and masks to match fixslicing --- - str.w r12, [r0], #4 - and r11, r2, r6 //ror and mask to match fixslicing - and r12, r2, r7 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 9th round - and r11, r2, r8 //ror and mask to match fixslicing - and r12, r2, r9 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 9th round - bl p2 //apply the permutation 10 - movw r3, #0xc3c3 - movt r3, #0xc3c3 //r3 <- 0xc3c3c3c3 - and r11, r3, r6, ror #26 //ror and mask to match fixslicing - and r12, r3, r7, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 10th round - and r11, r3, r8, ror #26 //ror and mask to match fixslicing - and r12, r3, r9, ror #26 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 2nd half tk for 10th round - and r3, r3, r3, lsr #6 //r3 <- 0x03030303 - and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #8] - and r11, r3, r7, ror #28 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #12] - and r11, r3, r9, ror #28 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0, #4] - and r11, r3, r8, ror #28 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #12 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - bl p2 //apply the permutation 12 times - lsl r3, r3, #4 //r3 <- 0x30303030 - and r11, r3, r6, ror #14 //--- ror and masks to match fixslicing - and r12, r6, r3, ror #4 - orr r12, r11, r12, ror #6 - str.w r12, [r0], #4 - and r11, r3, r7, ror #14 - and r12, r7, r3, ror #4 - orr r12, r11, r12, ror #6 - str.w r12, [r0], #4 - and r11, r3, r8, ror #14 - and r12, r8, r3, ror #4 - orr r12, r11, r12, ror #6 - str.w r12, [r0], #4 - and r11, r3, r9, ror #14 - and r12, r9, r3, ror #4 - orr r12, r11, r12, ror #6 //ror and masks to match fixslicing --- - str.w r12, [r0], #4 - and r11, r2, r6, ror #16 //ror and mask to match fixslicing - and r12, r2, r7, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0, #8] //store 2nd half tk for 5th round - and r11, r2, r8, ror #16 //ror and mask to match fixslicing - and r12, r2, r9, ror #16 //ror and mask to match fixslicing - strd r11, r12, [r0], #16 //store 1st half tk for 5th round - bl p2 //apply the permutation 14 times - movw r3, #0xc3c3 - movt r3, #0xc3c3 //r3 <- 0xc3c3c3c3 - and r11, r3, r6, ror #10 //ror and mask to match fixslicing - and r12, r3, r7, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 1st half tk for 14th round - and r11, r3, r8, ror #10 //ror and mask to match fixslicing - and r12, r3, r9, ror #10 //ror and mask to match fixslicing - strd r11, r12, [r0], #8 //store 2nd half tk for 14th round - and r3, r3, r3, lsr #6 //r3 <- 0x03030303 - and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing - and r12, r6, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #8] - and r11, r3, r7, ror #12 - and r12, r7, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #12] - and r11, r3, r9, ror #12 - and r12, r9, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0, #4] - and r11, r3, r8, ror #12 - and r12, r8, r3, lsl #6 - orr r12, r11, r12, ror #28 - str.w r12, [r0], #16 //ror and masks to match fixslicing --- - pop {r0-r12, lr} - bx lr - -.align 2 -quadruple_round: - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rtk_2_3 + rconst - eor r3, r3, r9 //add rtk_2_3 + rconst - eor r4, r4, r10 //add rtk_2_3 + rconst - eor r5, r5, r11 //add rtk_2_3 + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #30 // --- mixcolumns 0 --- - eor r2, r2, r8, ror #24 - and r8, r7, r2, ror #18 - eor r2, r2, r8, ror #2 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #4 - and r8, r7, r3, ror #30 - eor r3, r3, r8, ror #24 - and r8, r7, r3, ror #18 - eor r3, r3, r8, ror #2 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #4 - and r8, r7, r4, ror #30 - eor r4, r4, r8, ror #24 - and r8, r7, r4, ror #18 - eor r4, r4, r8, ror #2 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #4 - and r8, r7, r5, ror #30 - eor r5, r5, r8, ror #24 - and r8, r7, r5, ror #18 - eor r5, r5, r8, ror #2 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #4 - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #16 // --- mixcolumns 1 --- - eor r2, r2, r8, ror #30 - and r8, r7, r2, ror #28 - eor r2, r2, r8 - and r8, r7, r2, ror #16 - eor r2, r2, r8, ror #2 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #30 - and r8, r7, r3, ror #28 - eor r3, r3, r8 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #2 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #30 - and r8, r7, r4, ror #28 - eor r4, r4, r8 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #2 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #30 - and r8, r7, r5, ror #28 - eor r5, r5, r8 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #2 - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rtk_2_3 + rconst - eor r3, r3, r9 //add rtk_2_3 + rconst - eor r4, r4, r10 //add rtk_2_3 + rconst - eor r5, r5, r11 //add rtk_2_3 + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #10 // --- mixcolumns 2 --- - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #6 - and r8, r7, r2, ror #26 - eor r2, r2, r8 - and r8, r7, r3, ror #10 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #6 - and r8, r7, r3, ror #26 - eor r3, r3, r8 - and r8, r7, r4, ror #10 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #6 - and r8, r7, r4, ror #26 - eor r4, r4, r8 - and r8, r7, r5, ror #10 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #6 - and r8, r7, r5, ror #26 - eor r5, r5, r8 - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - ldmia.w r0!,{r8-r11} - eor r2, r2, r8 //add rtk_1 - eor r3, r3, r9 //add rtk_1 - eor r4, r4, r10 //add rtk_1 - eor r5, r5, r11 //add rtk_1 - and r8, r7, r2, ror #4 // --- mixcolumns 3 --- - eor r2, r2, r8, ror #26 - and r8, r7, r2 - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #4 - eor r2, r2, r8, ror #22 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #26 - and r8, r7, r3 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #22 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #26 - and r8, r7, r4 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #22 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #26 - and r8, r7, r5 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #22 - bx lr - -/****************************************************************************** -* Inverse quadruple round of fixsliced SKINNY-128. -******************************************************************************/ -.align 2 -inv_quadruple_round: - and r8, r7, r2, ror #4 // --- mixcolumns 3 --- - eor r2, r2, r8, ror #22 - and r8, r7, r2 - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #4 - eor r2, r2, r8, ror #26 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #22 - and r8, r7, r3 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #4 - eor r3, r3, r8, ror #26 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #22 - and r8, r7, r4 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #4 - eor r4, r4, r8, ror #26 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #22 - and r8, r7, r5 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #4 - eor r5, r5, r8, ror #26 - ldrd r10, r11, [r1], #-8 - ldrd r8, r9, [r1], #-8 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - ldrd r10, r11, [r0], #-8 - ldrd r8, r9, [r0], #-8 - eor r2, r2, r8 //add rtk1 - eor r3, r3, r9 //add rtk1 - eor r4, r4, r10 //add rtk1 - eor r5, r5, r11 //add rtk1 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - and r8, r7, r2, ror #26 // --- mixcolumns 2 --- - eor r2, r2, r8 - and r8, r7, r2, ror #6 - eor r2, r2, r8, ror #6 - and r8, r7, r2, ror #10 - eor r2, r2, r8, ror #4 - and r8, r7, r3, ror #26 - eor r3, r3, r8 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #6 - and r8, r7, r3, ror #10 - eor r3, r3, r8, ror #4 - and r8, r7, r4, ror #26 - eor r4, r4, r8 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #6 - and r8, r7, r4, ror #10 - eor r4, r4, r8, ror #4 - and r8, r7, r5, ror #26 - eor r5, r5, r8 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #6 - and r8, r7, r5, ror #10 - eor r5, r5, r8, ror #4 - ldrd r10, r11, [r1], #-8 - ldrd r8, r9, [r1], #-8 - eor r2, r2, r8 //add rk2_3 + rconst - eor r3, r3, r9 //add rk2_3 + rconst - eor r4, r4, r10 //add rk2_3 + rconst - eor r5, r5, r11 //add rk2_3 + rconst - ldrd r10, r11, [r0], #-8 - ldrd r8, r9, [r0], #-8 - eor r2, r2, r8 //add rtk1 - eor r3, r3, r9 //add rtk1 - eor r4, r4, r10 //add rtk1 - eor r5, r5, r11 //add rtk1 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - and r8, r7, r2, ror #16 // --- mixcolumns 1 --- - eor r2, r2, r8, ror #2 - and r8, r7, r2, ror #28 - eor r2, r2, r8 - and r8, r7, r2, ror #16 - eor r2, r2, r8, ror #30 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #2 - and r8, r7, r3, ror #28 - eor r3, r3, r8 - and r8, r7, r3, ror #16 - eor r3, r3, r8, ror #30 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #2 - and r8, r7, r4, ror #28 - eor r4, r4, r8 - and r8, r7, r4, ror #16 - eor r4, r4, r8, ror #30 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #2 - and r8, r7, r5, ror #28 - eor r5, r5, r8 - and r8, r7, r5, ror #16 - eor r5, r5, r8, ror #30 - ldrd r10, r11, [r1], #-8 - ldrd r8, r9, [r1], #-8 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - ldrd r10, r11, [r0], #-8 - ldrd r8, r9, [r0], #-8 - eor r2, r2, r8 //add rtk1 - eor r3, r3, r9 //add rtk1 - eor r4, r4, r10 //add rtk1 - eor r5, r5, r11 //add rtk1 - eor r8, r3, r4 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); - orr r8, r2, r3 - eor r5, r5, r8 - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - and r8, r7, r2, ror #6 // --- mixcolumns 0 --- - eor r2, r2, r8, ror #4 - and r8, r7, r2, ror #18 - eor r2, r2, r8, ror #2 - and r8, r7, r2, ror #30 - eor r2, r2, r8, ror #24 - and r8, r7, r3, ror #6 - eor r3, r3, r8, ror #4 - and r8, r7, r3, ror #18 - eor r3, r3, r8, ror #2 - and r8, r7, r3, ror #30 - eor r3, r3, r8, ror #24 - and r8, r7, r4, ror #6 - eor r4, r4, r8, ror #4 - and r8, r7, r4, ror #18 - eor r4, r4, r8, ror #2 - and r8, r7, r4, ror #30 - eor r4, r4, r8, ror #24 - and r8, r7, r5, ror #6 - eor r5, r5, r8, ror #4 - and r8, r7, r5, ror #18 - eor r5, r5, r8, ror #2 - and r8, r7, r5, ror #30 - eor r5, r5, r8, ror #24 - ldrd r10, r11, [r1], #-8 - ldrd r8, r9, [r1], #-8 - eor r2, r2, r8 //add rkey + rconst - eor r3, r3, r9 //add rkey + rconst - eor r4, r4, r10 //add rkey + rconst - eor r5, r5, r11 //add rkey + rconst - ldrd r10, r11, [r0], #-8 - ldrd r8, r9, [r0], #-8 - eor r2, r2, r8 //add rtk1 - eor r3, r3, r9 //add rtk1 - eor r4, r4, r10 //add rtk1 - eor r5, r5, r11 //add rtk1 - eor r8, r2, r5 - and r8, r8, r6 - eor r2, r2, r8 - eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); - orr r8, r4, r5 - eor r3, r3, r8 - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - eor r8, r5, r2, lsr #1 - and r8, r8, r6 - eor r5, r5, r8 - eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); - eor r8, r2, r3, lsr #1 - and r8, r8, r6 - eor r2, r2, r8 - eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); - orr r8, r4, r5 - eor r3, r3, r8 - mvn r3, r3 - eor r8, r4, r5, lsr #1 - and r8, r8, r6 - eor r4, r4, r8 - eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); - eor r8, r3, r4, lsr #1 - and r8, r8, r6 - eor r3, r3, r8 - eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); - orr r8, r2, r3 - eor r5, r5, r8 - mvn r5, r5 - bx lr - -/****************************************************************************** -* Encrypt a single block using fixsliced SKINNY-128-384+. -******************************************************************************/ -@ void skinny128_384(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1) -.global skinny128_384 -.type skinny128_384,%function -.align 2 -skinny128_384: - push {r0-r12, r14} - mov.w r0, r3 - ldr.w r3, [r2, #8] - ldr.w r4, [r2, #4] - ldr.w r5, [r2, #12] - ldr.w r2, [r2] - movw r10, #0x0a0a - movt r10, #0x0a0a //r10 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r11 <- 0x30303030 - bl packing - mov r7, r11 - movw r6, #0x5555 - movt r6, #0x5555 //r6 <- 0x55555555 - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #256 // rtk1 repeats every 16 rounds - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #256 // rtk1 repeats every 16 rounds - bl quadruple_round - bl quadruple_round - bl unpacking - ldr.w r0, [sp], #4 - strd r2, r4, [r0] - strd r3, r5, [r0, #8] - pop {r1-r12,r14} - bx lr - -/****************************************************************************** -* Decrypt a single block using fixsliced SKINNY-128-384+. -******************************************************************************/ -@ void skinny128_384_inv(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1) -.global skinny128_384_inv -.type skinny128_384_inv,%function -.align 2 -skinny128_384_inv: - push {r0-r12, r14} - mov.w r0, r3 - ldr.w r3, [r2, #8] - ldr.w r4, [r2, #4] - ldr.w r5, [r2, #12] - ldr.w r2, [r2] - movw r10, #0x0a0a - movt r10, #0x0a0a //r10 <- 0x0a0a0a0a - movw r11, #0x3030 - movt r11, #0x3030 //r11 <- 0x30303030 - bl packing - mov r7, r11 - movw r6, #0x5555 - movt r6, #0x5555 //r6 <- 0x55555555 - add.w r0, #120 // points to the right rtk1 - add.w r1, #632 // points to the last rtk2_3 - bl inv_quadruple_round - bl inv_quadruple_round - add.w r0, #256 // rtk1 repeats every 16 rounds - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - add.w r0, #256 // rtk1 repeats every 16 rounds - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - bl unpacking - ldr.w r0, [sp], #4 - strd r2, r4, [r0] - strd r3, r5, [r0, #8] - pop {r1-r12,r14} - bx lr diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinnyaead.h deleted file mode 100644 index 0cf0fa9..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_1/skinnyaead.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef SKINNYAEADM1_H_ -#define SKINNYAEADM1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef unsigned long long u64; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) - -#define UPDATE_LFSR(lfsr) ({ \ - feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ - (lfsr) = ((lfsr) << 1) ^ feedback; \ -}) - -#define LE_STR_64(ptr, x) ({ \ - (ptr)[0] = (u8)(x); \ - (ptr)[1] = (u8)((x) >> 8); \ - (ptr)[2] = (u8)((x) >> 16); \ - (ptr)[3] = (u8)((x) >> 24); \ - (ptr)[4] = (u8)((x) >> 32); \ - (ptr)[5] = (u8)((x) >> 40); \ - (ptr)[6] = (u8)((x) >> 48); \ - (ptr)[7] = (u8)((x) >> 56); \ -}) -//x ^= y with x, y 128-bit blocks -#define XOR_BLOCK(x,y) ({ \ - ((u32*)(x))[0] ^= ((u32*)(y))[0]; \ - ((u32*)(x))[1] ^= ((u32*)(y))[1]; \ - ((u32*)(x))[2] ^= ((u32*)(y))[2]; \ - ((u32*)(x))[3] ^= ((u32*)(y))[3]; \ -}) - -#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/api.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/api.h deleted file mode 100644 index a4aa567..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/crypto_aead.h deleted file mode 100644 index 6f4ee42..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/crypto_aead.h +++ /dev/null @@ -1,13 +0,0 @@ -//API required by the NIST for the LWC competition -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); - -//API required by the NIST for the LWC competition -int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, - 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); diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/encrypt.c deleted file mode 100644 index fa4a24b..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/encrypt.c +++ /dev/null @@ -1,298 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). -* -* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include "skinny128.h" -#include "skinnyaead.h" -#include -#include - -/****************************************************************************** -* x ^= y where x, y are 128-bit blocks (16 bytes array). -******************************************************************************/ -static void xor_block(u8 * x, const u8* y) { - for(int i = 0; i < BLOCKBYTES; i++) - x[i] ^= y[i]; -} - -/****************************************************************************** -* Process the associated data. Common to SKINNY-AEAD-M1 encrypt and decrypt -* functions. -******************************************************************************/ -static void skinny_aead_m1_auth(u8* auth, u8* c, u8* tag, u32* rtk1, - u32* rtk2_3, u64 mlen, const u8* ad, u64 adlen) { - u64 lfsr = 1; - u8 feedback; - u8 tmp[2*BLOCKBYTES]; - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - SET_DOMAIN(tmp, 0x02); - while (adlen >= 2*BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x02); - tkschedule_perm_tk1(rtk1, tmp, tmp+BLOCKBYTES); - skinny128_384(tmp, tmp+BLOCKBYTES, ad, ad+BLOCKBYTES, rtk1, rtk2_3); - xor_block(auth, tmp); - xor_block(auth, tmp + BLOCKBYTES); - adlen -= 2*BLOCKBYTES; - ad += 2*BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - if (adlen > BLOCKBYTES) { // pad and process 2 blocs - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x03); // domain for padding ad - tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); - adlen -= BLOCKBYTES; - memset(tmp, 0x00, BLOCKBYTES); - memcpy(tmp, ad + BLOCKBYTES, adlen); - tmp[adlen] ^= 0x80; // padding - skinny128_384(tmp + BLOCKBYTES, tmp, ad, tmp, rtk1, rtk2_3); - xor_block(auth, tmp); - xor_block(auth, tmp + BLOCKBYTES); - } else if (adlen == BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - if (mlen == 0) { // if tag has *NOT* been calculated yet - tkschedule_perm_tk1(rtk1, tmp, tag); - skinny128_384(auth, c, ad, c, rtk1, rtk2_3); - } else { // if tag has been calculated yet - tkschedule_perm_tk1(rtk1, tmp, tmp); // process last ad block - skinny128_384(auth, auth, ad, ad, rtk1, rtk2_3); - } - } else if (adlen > 0) { - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x03); // domain for padding ad - memset(tmp + BLOCKBYTES, 0x00, BLOCKBYTES); // padding - memcpy(tmp + BLOCKBYTES, ad, adlen); // padding - tmp[BLOCKBYTES + adlen] ^= 0x80; // padding - if (mlen == 0) { // if tag has *NOT* been calculated yet - tkschedule_perm_tk1(rtk1, tmp, tag); // compute the tag - skinny128_384(auth, c, tmp + BLOCKBYTES, c, rtk1, rtk2_3); - } else { // if tag has been calculated yet - tkschedule_perm_tk1(rtk1, tmp, tmp); // process last ad block - skinny128_384(auth, auth, tmp + BLOCKBYTES, tmp + BLOCKBYTES, rtk1, rtk2_3); - } - } -} - -/****************************************************************************** -* Encryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u8 feedback; - u64 i,lfsr = 1; - u32 rtk1[8*16]; - u32 rtk2_3[8*SKINNY128_384_ROUNDS]; - u8 tmp[2*BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - tkschedule_lfsr_2(rtk2_3, npub, npub, SKINNY128_384_ROUNDS); - tkschedule_lfsr_3(rtk2_3, k, k, SKINNY128_384_ROUNDS); - tkschedule_perm(rtk2_3); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(tag, 0x00, BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(sum, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (mlen >= 2*BLOCKBYTES) { // process 2 blocks in // - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384(c, c + BLOCKBYTES, m, m + BLOCKBYTES, rtk1, rtk2_3); - xor_block(sum, m); // sum for tag computation - xor_block(sum, m + BLOCKBYTES); // sum for tag computation - mlen -= 2*BLOCKBYTES; - c += 2*BLOCKBYTES; - m += 2*BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - SET_DOMAIN(tag, 0x04); // domain for tag computation - if (mlen > BLOCKBYTES) { // pad and process 2 blocs in // - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x01); // domain for padding m - tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384(c, auth, m, auth, rtk1, rtk2_3); - xor_block(sum, m); - for(i = 0; i < mlen - BLOCKBYTES; i++) { - c[BLOCKBYTES + i] = auth[i] ^ m[BLOCKBYTES + i]; - sum[i] ^= m[BLOCKBYTES + i]; - } - sum[i] ^= 0x80; // padding - SET_DOMAIN(tag, 0x05); // domain for tag computation - m += mlen; - c += mlen; - mlen = 0; - UPDATE_LFSR(lfsr); - } else if (mlen == BLOCKBYTES) { // last block is full - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x04); // domain for tag computation - xor_block(sum, m); // sum for tag computation - tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384(c, sum, m, sum, rtk1, rtk2_3); - c += BLOCKBYTES; - } else if (mlen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x01); // domain for padding - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x05); // domain for tag computation - for(i = 0; i < mlen; i++) // sum for tag computation - sum[i] ^= m[i]; // sum for tag computation - sum[i] ^= 0x80; // padding - tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384(auth, sum, auth, sum, rtk1, rtk2_3); - for(i = 0; i < mlen; i++) - c[i] = auth[i] ^ m[i]; // encrypted padded block - c += mlen; - } - if (mlen == 0) { // if tag has *NOT* been calculated yet - LE_STR_64(tag, lfsr); // lfsr for tag computation - if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { - tkschedule_perm_tk1(rtk1, tag, tag); - skinny128_384(sum, sum, sum, sum, rtk1, rtk2_3); // compute the tag - } - } - // ----------------- Process the plaintext ----------------- - - // ----------------- Process the associated data ----------------- - skinny_aead_m1_auth(auth, sum, tag, rtk1, rtk2_3, mlen, ad, adlen); - xor_block(sum, auth); - memcpy(c, sum, TAGBYTES); - // ----------------- Process the associated data ----------------- - - return 0; -} - - -/****************************************************************************** -* Decryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u8 feedback; - u64 i,lfsr = 1; - u32 rtk1[8*16]; - u32 rtk2_3[8*SKINNY128_384_ROUNDS]; - u8 tmp[2*BLOCKBYTES]; - u8 sum[BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - clen -= TAGBYTES; - *mlen = clen; - tkschedule_lfsr_2(rtk2_3, npub, npub, SKINNY128_384_ROUNDS); - tkschedule_lfsr_3(rtk2_3, k, k, SKINNY128_384_ROUNDS); - tkschedule_perm(rtk2_3); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(tag, 0x00, BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(sum, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (clen >= 2*BLOCKBYTES) { // process 2 blocks in // - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384_inv(m, m + BLOCKBYTES, c, c + BLOCKBYTES, rtk1, rtk2_3); - xor_block(sum, m); // sum for tag computation - xor_block(sum, m + BLOCKBYTES); // sum for tag computation - clen -= 2*BLOCKBYTES; - c += 2*BLOCKBYTES; - m += 2*BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - SET_DOMAIN(tag, 0x04); // domain for tag computation - if (clen > BLOCKBYTES) { // pad and process 2 blocs in // - LE_STR_64(tmp, lfsr); - tkschedule_perm_tk1(rtk1, tmp, tmp); - skinny128_384_inv(m, m, c, c, rtk1, rtk2_3); - xor_block(sum, m); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x01); // domain for padding m - tkschedule_perm_tk1(rtk1, tmp, tmp); - skinny128_384(auth, auth, auth, auth, rtk1, rtk2_3); - for(i = 0; i < clen - BLOCKBYTES; i++) { - m[BLOCKBYTES + i] = auth[i] ^ c[BLOCKBYTES + i]; - sum[i] ^= m[BLOCKBYTES + i]; - } - sum[i] ^= 0x80; // padding - SET_DOMAIN(tag, 0x05); // domain for tag computation - c += clen; - clen = 0; - UPDATE_LFSR(lfsr); - } else if (clen == BLOCKBYTES) { // last block is full - LE_STR_64(tmp, lfsr); - tkschedule_perm_tk1(rtk1, tmp, tmp); - skinny128_384_inv(m, m, c, c, rtk1, rtk2_3); - xor_block(sum, m); // sum for tag computation - SET_DOMAIN(tag, 0x04); // domain for tag computation - UPDATE_LFSR(lfsr); - c += BLOCKBYTES; - clen = 0; - } else if (clen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x01); // domain for padding - tkschedule_perm_tk1(rtk1, tmp, tmp); - skinny128_384(auth, auth, auth, auth, rtk1, rtk2_3); - for(i = 0; i < clen; i++) { - m[i] = auth[i] ^ c[i]; // encrypted padded block - sum[i] ^= m[i]; // sum for tag computation - } - sum[i] ^= 0x80; // padding - SET_DOMAIN(tag, 0x05); // domain for tag computation - UPDATE_LFSR(lfsr); - c += clen; - clen = 0; - } - if (clen == 0) { // if tag has *NOT* been calculated yet - LE_STR_64(tag, lfsr); - if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { - tkschedule_perm_tk1(rtk1, tag, tag); //if AD can be processed in // - skinny128_384(sum, sum, sum, sum, rtk1, rtk2_3); // compute the tag - } - } - - // ----------------- Process the associated data ----------------- - skinny_aead_m1_auth(auth, sum, tag, rtk1, rtk2_3, clen, ad, adlen); - xor_block(sum, auth); - feedback = 0; - for(i = 0; i < TAGBYTES; i++) - feedback |= sum[i] ^ c[i]; // constant-time tag verification - return feedback; - // ----------------- Process the associated data ----------------- -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.h deleted file mode 100644 index 299d162..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -#define SKINNY128_384_ROUNDS 40 - -extern void skinny128_384(u8* ctext, u8* ctext_bis, const u8* ptext, const u8* ptext_bis, const u32* rtk1, const u32* rtk2_3); -extern void skinny128_384_inv(u8* ptext, u8* ptext_bis, const u8* ctext, const u8* ctext_bis, const u32* rtk1, const u32* rtk2_3); -extern void tkschedule_lfsr_2(u32* rtk, const u8* tk2, const u8* tk2_bis, const int rounds); -extern void pack_tk1(u32* rtk, const u8* tk2, const u8* tk2_bis, const int rounds); -extern void tkschedule_lfsr_3(u32* rtk, const u8* tk3, const u8* tk3_bis, const int rounds); -extern void tkschedule_perm(u32* rtk); -extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1, const u8* tk1_bis); - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.s b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.s deleted file mode 100644 index b09c99b..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinny128.s +++ /dev/null @@ -1,3426 +0,0 @@ -/******************************************************************************* -* Constant-time ARM assembly implementation of the SKINNY block cipher. -* Two blocks are processed in parallel. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date April 2020 -*******************************************************************************/ - -.syntax unified -.thumb - -/******************************************************************************* -* Applies P^2 on the tweakey state in a bitsliced manner. -*******************************************************************************/ -.align 2 -p2: - movw r3, #0xcc00 - movt r3, #0xcc00 //r1 <- 0xcc00cc00 - movw r4, #0xcc00 - movt r4, #0x0033 //r10<- 0xcc000033 - and r1, r3, r5, ror #14 - bfi r1, r5, #16, #8 - and r2, r5, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r5 - orr r1, r1, r2, lsr #8 - and r2, r5, #0x00cc0000 - orr r5, r1, r2, lsr #18 - and r1, r3, r6, ror #14 - bfi r1, r6, #16, #8 - and r2, r6, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r6 - orr r1, r1, r2, lsr #8 - and r2, r6, #0x00cc0000 - orr r6, r1, r2, lsr #18 - and r1, r3, r7, ror #14 - bfi r1, r7, #16, #8 - and r2, r7, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r7 - orr r1, r1, r2, lsr #8 - and r2, r7, #0x00cc0000 - orr r7, r1, r2, lsr #18 - and r1, r3, r8, ror #14 - bfi r1, r8, #16, #8 - and r2, r8, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r8 - orr r1, r1, r2, lsr #8 - and r2, r8, #0x00cc0000 - orr r8, r1, r2, lsr #18 - and r1, r3, r9, ror #14 - bfi r1, r9, #16, #8 - and r2, r9, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r9 - orr r1, r1, r2, lsr #8 - and r2, r9, #0x00cc0000 - orr r9, r1, r2, lsr #18 - and r1, r3, r10, ror #14 - bfi r1, r10, #16, #8 - and r2, r10, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r10 - orr r1, r1, r2, lsr #8 - and r2, r10, #0x00cc0000 - orr r10, r1, r2, lsr #18 - and r1, r3, r11, ror #14 - bfi r1, r11, #16, #8 - and r2, r11, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r11 - orr r1, r1, r2, lsr #8 - and r2, r11, #0x00cc0000 - orr r11, r1, r2, lsr #18 - and r1, r3, r12, ror #14 - bfi r1, r12, #16, #8 - and r2, r12, #0xcc000000 - orr r1, r1, r2, lsr #2 - and r2, r4, r12 - orr r1, r1, r2, lsr #8 - and r2, r12, #0x00cc0000 - orr r12, r1, r2, lsr #18 - bx lr - -/******************************************************************************* -* Applies P^4 on the tweakey state in a bitsliced manner. -*******************************************************************************/ -.align 2 -p4: - str.w r14, [sp] //store r14 on the stack - movw r14, #0x00cc - movt r14, #0xcc00 //r14<- 0xcc0000cc - movw r3, #0xcc00 - movt r3, #0x3300 //r3 <- 0x3300cc00 - movw r4, #0x00cc - movt r4, #0x00cc //r4 <- 0x00cc00cc - and r2, r14, r5, ror #22 - and r1, r3, r5, ror #16 - orr r2, r2, r1 - and r1, r5, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r5, r5, r1 - orr r5, r2, r5, ror #24 - and r2, r14, r6, ror #22 - and r1, r3, r6, ror #16 - orr r2, r2, r1 - and r1, r6, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r6, r6, r1 - orr r6, r2, r6, ror #24 - and r2, r14, r7, ror #22 - and r1, r3, r7, ror #16 - orr r2, r2, r1 - and r1, r7, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r7, r7, r1 - orr r7, r2, r7, ror #24 - and r2, r14, r8, ror #22 - and r1, r3, r8, ror #16 - orr r2, r2, r1 - and r1, r8, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r8, r8, r1 - orr r8, r2, r8, ror #24 - and r2, r14, r9, ror #22 - and r1, r3, r9, ror #16 - orr r2, r2, r1 - and r1, r9, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r9, r9, r1 - orr r9, r2, r9, ror #24 - and r2, r14, r10, ror #22 - and r1, r3, r10, ror #16 - orr r2, r2, r1 - and r1, r10, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r10, r10, r1 - orr r10, r2, r10, ror #24 - and r2, r14, r11, ror #22 - and r1, r3, r11, ror #16 - orr r2, r2, r1 - and r1, r11, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r11, r11, r1 - orr r11, r2, r11, ror #24 - and r2, r14, r12, ror #22 - and r1, r3, r12, ror #16 - orr r2, r2, r1 - and r1, r12, r4 - orr r2, r2, r1, lsr #2 - movw r1, #0xcc33 //r1 <- 0x0000cc33 - and r12, r12, r1 - orr r12, r2, r12, ror #24 - ldr.w r14, [sp] //restore r14 - bx lr - -/******************************************************************************* -* Applies P^6 on the tweakey state in a bitsliced manner -*******************************************************************************/ -.align 2 -p6: - movw r3, #0x3333 //r1 <- 0x00003333 - movw r4, #0x00cc - movt r4, #0x3300 //r12<- 0x330000cc - and r1, r5, r3, ror #8 // --- permute r5 6 times - and r2, r4, r5, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r5, ror #10 - orr r2, r2, r1 - and r1, r5, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r5, #0x00003300 - orr r5, r2, r1, lsl #2 // permute r5 6 times --- - and r1, r6, r3, ror #8 // --- permute r6 6 times - and r2, r4, r6, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r6, ror #10 - orr r2, r2, r1 - and r1, r6, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r6, #0x00003300 - orr r6, r2, r1, lsl #2 // permute r6 6 times --- - and r1, r7, r3, ror #8 // --- permute r7 6 times - and r2, r4, r7, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r7, ror #10 - orr r2, r2, r1 - and r1, r7, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r7, #0x00003300 - orr r7, r2, r1, lsl #2 // permute r7 6 times --- - and r1, r8, r3, ror #8 // --- permute r8 6 times - and r2, r4, r8, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r8, ror #10 - orr r2, r2, r1 - and r1, r8, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r8, #0x00003300 - orr r8, r2, r1, lsl #2 // permute r8 6 times --- - and r1, r9, r3, ror #8 // --- permute r9 6 times - and r2, r4, r9, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r9, ror #10 - orr r2, r2, r1 - and r1, r9, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r9, #0x00003300 - orr r9, r2, r1, lsl #2 // permute r9 6 times --- - and r1, r10, r3, ror #8 // --- permute r10 6 times - and r2, r4, r10, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r10, ror #10 - orr r2, r2, r1 - and r1, r10, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r10, #0x00003300 - orr r10, r2, r1, lsl #2 // permute r10 6 times --- - and r1, r11, r3, ror #8 // --- permute r11 6 times - and r2, r4, r11, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r11, ror #10 - orr r2, r2, r1 - and r1, r11, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r11, #0x00003300 - orr r11, r2, r1, lsl #2 // permute r11 6 times --- - and r1, r12, r3, ror #8 // --- permute r12 6 times - and r2, r4, r12, ror #24 - orr r2, r2, r1, ror #6 - and r1, r3, r12, ror #10 - orr r2, r2, r1 - and r1, r12, #0x000000cc - orr r2, r2, r1, lsl #14 - and r1, r12, #0x00003300 - orr r12, r2, r1, lsl #2 // permute r12 6 times --- - bx lr - -/******************************************************************************* -* Applies P^8 on the tweakey state in a bitsliced manner. -*******************************************************************************/ -.align 2 -p8: - movw r3, #0x3333 //r3 <- 0x00003333 - movw r4, #0x0000 - movt r4, #0x33cc //r4 <- 0x33cc0000 - and r1, r5, r4 // --- permute r5 8 times - and r2, r4, r5, ror #8 - orr r2, r2, r1, ror #24 - and r1, r5, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r5, r3, lsl #8 - orr r5, r2, r1, lsr #6 // permute r5 8 times --- - and r1, r6, r4 // --- permute r6 8 times - and r2, r4, r6, ror #8 - orr r2, r2, r1, ror #24 - and r1, r6, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r6, r3, lsl #8 - orr r6, r2, r1, lsr #6 // permute r6 8 times --- - and r1, r7, r4 // --- permute r7 8 times - and r2, r4, r7, ror #8 - orr r2, r2, r1, ror #24 - and r1, r7, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r7, r3, lsl #8 - orr r7, r2, r1, lsr #6 // permute r7 8 times --- - and r1, r8, r4 // --- permute r8 8 times - and r2, r4, r8, ror #8 - orr r2, r2, r1, ror #24 - and r1, r8, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r8, r3, lsl #8 - orr r8, r2, r1, lsr #6 // permute r8 8 times --- - and r1, r9, r4 // --- permute r9 8 times - and r2, r4, r9, ror #8 - orr r2, r2, r1, ror #24 - and r1, r9, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r9, r3, lsl #8 - orr r9, r2, r1, lsr #6 // permute r9 8 times --- - and r1, r10, r4 // --- permute r10 8 times - and r2, r4, r10, ror #8 - orr r2, r2, r1, ror #24 - and r1, r10, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r10, r3, lsl #8 - orr r10, r2, r1, lsr #6 // permute r10 8 times --- - and r1, r11, r4 // --- permute r11 8 times - and r2, r4, r11, ror #8 - orr r2, r2, r1, ror #24 - and r1, r11, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r11, r3, lsl #8 - orr r11, r2, r1, lsr #6 // permute r11 8 times --- - and r1, r12, r4 // --- permute r12 8 times - and r2, r4, r12, ror #8 - orr r2, r2, r1, ror #24 - and r1, r12, r3, lsl #2 - orr r2, r2, r1, ror #26 - and r1, r12, r3, lsl #8 - orr r12, r2, r1, lsr #6 // permute r12 8 times --- - bx lr - -/******************************************************************************* -* Applies P^10 on the tweakey state in a bitsliced manner. -*******************************************************************************/ -.align 2 -p10: - movw r4, #0x0033 - movt r4, #0x3300 //r4 <- 0x33000033 - movw r3, #0xcc33 //r3 <- 0x0000cc33 - and r1, r5, r3, ror #8 // --- permute r5 10 times - and r2, r4, r5, ror #26 - orr r2, r2, r1, ror #8 - and r1, r5, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r5, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r5, #0x0000cc00 - orr r5, r2, r1, lsr #2 // permute r5 10 times --- - and r1, r6, r3, ror #8 // --- permute r6 10 times - and r2, r4, r6, ror #26 - orr r2, r2, r1, ror #8 - and r1, r6, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r6, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r6, #0x0000cc00 - orr r6, r2, r1, lsr #2 // permute r6 10 times --- - and r1, r7, r3, ror #8 // --- permute r7 10 times - and r2, r4, r7, ror #26 - orr r2, r2, r1, ror #8 - and r1, r7, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r7, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r7, #0x0000cc00 - orr r7, r2, r1, lsr #2 // permute r7 10 times --- - and r1, r8, r3, ror #8 // --- permute r8 10 times - and r2, r4, r8, ror #26 - orr r2, r2, r1, ror #8 - and r1, r8, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r8, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r8, #0x0000cc00 - orr r8, r2, r1, lsr #2 // permute r8 10 times --- - and r1, r9, r3, ror #8 // --- permute r9 10 times - and r2, r4, r9, ror #26 - orr r2, r2, r1, ror #8 - and r1, r9, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r9, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r9, #0x0000cc00 - orr r9, r2, r1, lsr #2 // permute r9 10 times --- - and r1, r10, r3, ror #8 // --- permute r10 10 times - and r2, r4, r10, ror #26 - orr r2, r2, r1, ror #8 - and r1, r10, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r10, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r10, #0x0000cc00 - orr r10, r2, r1, lsr #2 // permute r10 10 times --- - and r1, r11, r3, ror #8 // --- permute r11 10 times - and r2, r4, r11, ror #26 - orr r2, r2, r1, ror #8 - and r1, r11, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r11, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r11, #0x0000cc00 - orr r11, r2, r1, lsr #2 // permute r11 10 times --- - and r1, r12, r3, ror #8 // --- permute r12 10 times - and r2, r4, r12, ror #26 - orr r2, r2, r1, ror #8 - and r1, r12, r4, ror #24 - orr r2, r2, r1, ror #22 - and r1, r12, #0x00330000 - orr r2, r2, r1, lsr #14 - and r1, r12, #0x0000cc00 - orr r12, r2, r1, lsr #2 // permute r12 10 times --- - bx lr - -/******************************************************************************* -* Applies P^12 on the tweakey state in a bitsliced manner. -*******************************************************************************/ -.align 2 -p12: - str.w r14, [sp] //store r14 on the stack - movw r14, #0xcc33 //r14<- 0x0000cc33 - movw r4, #0x00cc - movt r4, #0x00cc //r4 <- 0x00cc00cc - movw r3, #0x3300 - movt r3, #0xcc00 //r3 <- 0xcc003300 - and r1, r14, r5, ror #8 // --- permute r5 12 times - and r2, r4, r5, ror #30 - orr r2, r2, r1 - and r1, r3, r5, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r5, r1, ror #8 - orr r5, r2, r1, ror #10 // permute r5 12 times --- - and r1, r14, r6, ror #8 // --- permute r6 12 times - and r2, r4, r6, ror #30 - orr r2, r2, r1 - and r1, r3, r6, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r6, r1, ror #8 - orr r6, r2, r1, ror #10 // permute r6 12 times --- - and r1, r14, r7, ror #8 // --- permute r7 12 times - and r2, r4, r7, ror #30 - orr r2, r2, r1 - and r1, r3, r7, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r7, r1, ror #8 - orr r7, r2, r1, ror #10 // permute r7 12 times --- - and r1, r14, r8, ror #8 // --- permute r8 12 times - and r2, r4, r8, ror #30 - orr r2, r2, r1 - and r1, r3, r8, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r8, r1, ror #8 - orr r8, r2, r1, ror #10 // permute r8 12 times --- - and r1, r14, r9, ror #8 // --- permute r9 12 times - and r2, r4, r9, ror #30 - orr r2, r2, r1 - and r1, r3, r9, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r9, r1, ror #8 - orr r9, r2, r1, ror #10 // permute r9 12 times --- - and r1, r14, r10, ror #8 // --- permute r10 12 times - and r2, r4, r10, ror #30 - orr r2, r2, r1 - and r1, r3, r10, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r10, r1, ror #8 - orr r10, r2, r1, ror #10 // permute r10 12 times --- - and r1, r14, r11, ror #8 // --- permute r11 12 times - and r2, r4, r11, ror #30 - orr r2, r2, r1 - and r1, r3, r11, ror #16 - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r11, r1, ror #8 - orr r11, r2, r1, ror #10 // permute r11 12 times --- - and r1, r14, r12, ror #8 // --- permute r12 12 times - and r2, r4, r12, ror #30 - orr r2, r2, r1 - and r1, r3, r12, ror #16 - ldr.w r14, [sp] - orr r2, r2, r1 - movw r1, #0xcccc //r1 <- 0x0000cccc - and r1, r12, r1, ror #8 - orr r12, r2, r1, ror #10 // permute r12 12 times --- - bx lr - -/******************************************************************************* -* Applies P^14 on the tweakey state in a bitsliced manner. -*******************************************************************************/ -.align 2 -p14: - movw r3, #0xcc00 - movt r3, #0x0033 //r3 <- 0x0033cc00 - movw r4, #0xcc00 - movt r4, #0xcc00 //r4 <- 0x33003300 - and r1, r3, r5, ror #24 // --- permute r5 14 times - and r2, r5, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r5, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r5, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r5, r4 - orr r5, r2, r1, ror #18 // permute r5 14 times --- - and r1, r3, r6, ror #24 // --- permute r6 14 times - and r2, r6, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r6, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r6, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r6, r4 - orr r6, r2, r1, ror #18 // permute r6 14 times --- - and r1, r3, r7, ror #24 // --- permute r7 14 times - and r2, r7, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r7, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r7, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r7, r4 - orr r7, r2, r1, ror #18 // permute r7 14 times --- - and r1, r3, r8, ror #24 // --- permute r8 14 times - and r2, r8, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r8, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r8, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r8, r4 - orr r8, r2, r1, ror #18 // permute r8 14 times --- - and r1, r3, r9, ror #24 // --- permute r9 14 times - and r2, r9, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r9, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r9, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r9, r4 - orr r9, r2, r1, ror #18 // permute r9 14 times --- - and r1, r3, r10, ror #24 // --- permute r10 14 times - and r2, r10, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r10, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r10, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r10, r4 - orr r10, r2, r1, ror #18 // permute r10 14 times --- - and r1, r3, r11, ror #24 // --- permute r11 14 times - and r2, r11, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r11, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r11, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r11, r4 - orr r11, r2, r1, ror #18 // permute r11 14 times --- - and r1, r3, r12, ror #24 // --- permute r12 14 times - and r2, r12, #0x00000033 - orr r2, r1, r2, ror #14 - and r1, r12, #0x33000000 - orr r2, r2, r1, ror #30 - and r1, r12, #0x00ff0000 - orr r2, r2, r1, ror #16 - and r1, r12, r4 - orr r12, r2, r1, ror #18 // permute r12 14 times --- - bx lr - -/******************************************************************************* -* Packs the input byte array into the fixsliced representation. -*******************************************************************************/ -.align 2 -packing: - eor r4, r5, r6, lsr #1 - and r4, r4, r2 - eor r5, r5, r4 - eor r6, r6, r4, lsl #1 //SWAPMOVE(r6, r5, 0x55555555, 1) - eor r4, r7, r8, lsr #1 - and r4, r4, r2 - eor r7, r7, r4 - eor r8, r8, r4, lsl #1 //SWAPMOVE(r8, r7, 0x55555555, 1) - eor r4, r9, r10, lsr #1 - and r4, r4, r2 - eor r9, r9, r4 - eor r10, r10, r4, lsl #1 //SWAPMOVE(r10, r9, 0x55555555, 1) - eor r4, r11, r12, lsr #1 - and r4, r4, r2 - eor r11, r11, r4 - eor r12, r12, r4, lsl #1 //SWAPMOVE(r12, r11, 0x55555555, 1) - eor r4, r5, r7, lsr #2 - and r4, r4, r3 - eor r5, r5, r4 - eor r7, r7, r4, lsl #2 //SWAPMOVE(r7, r5, 0x30303030, 2) - eor r4, r5, r9, lsr #4 - and r4, r4, r3, lsr #2 - eor r5, r5, r4 - eor r9, r9, r4, lsl #4 //SWAPMOVE(r9, r5, 0x0c0c0c0c, 4) - eor r4, r5, r11, lsr #6 - and r4, r4, r3, lsr #4 - eor r5, r5, r4 - eor r11, r11, r4, lsl #6 //SWAPMOVE(r11, r5, 0x03030303, 6) - eor r4, r6, r8, lsr #2 - and r4, r4, r3 - eor r6, r6, r4 - eor r8, r8, r4, lsl #2 //SWAPMOVE(r8, r6, 0x30303030, 2) - eor r4, r6, r10, lsr #4 - and r4, r4, r3, lsr #2 - eor r6, r6, r4 - eor r10, r10, r4, lsl #4 //SWAPMOVE(r10, r6, 0x0c0c0c0c, 4) - eor r4, r6, r12, lsr #6 - and r4, r4, r3, lsr #4 - eor r6, r6, r4 - eor r12, r12, r4, lsl #6 //SWAPMOVE(r12, r6, 0x03030303, 6) - eor r4, r7, r9, lsr #2 - and r4, r4, r3, lsr #2 - eor r7, r7, r4 - eor r9, r9, r4, lsl #2 //SWAPMOVE(r9, r7, 0x0c0c0c0c, 2) - eor r4, r7, r11, lsr #4 - and r4, r4, r3, lsr #4 - eor r7, r7, r4 - eor r11, r11, r4, lsl #4 //SWAPMOVE(r11, r7, 0x03030303, 4) - eor r4, r8, r10, lsr #2 - and r4, r4, r3, lsr #2 - eor r8, r8, r4 - eor r10, r10, r4, lsl #2 //SWAPMOVE(r10, r8, 0x0c0c0c0c, 2) - eor r4, r8, r12, lsr #4 - and r4, r4, r3, lsr #4 - eor r8, r8, r4 - eor r12, r12, r4, lsl #4 //SWAPMOVE(r12, r8, 0x03030303, 4) - eor r4, r9, r11, lsr #2 - and r4, r4, r3, lsr #4 - eor r9, r9, r4 - eor r11, r11, r4, lsl #2 //SWAPMOVE(r11, r9, 0x03030303, 2) - eor r4, r10, r12, lsr #2 - and r4, r4, r3, lsr #4 - eor r10, r10, r4 - eor r12, r12, r4, lsl #2 //SWAPMOVE(r12, r10, 0x03030303, 2) - bx lr - -/******************************************************************************* -* Unpacks the internal state in fixsliced representation into a byte array. -*******************************************************************************/ -.align 2 -unpacking: - movw r2, #0x5555 - movt r2, #0x5555 //r2 <- 0x55555555 - movw r3, #0x3030 - movt r3, #0x3030 //r3 <- 0x30303030 - eor r4, r9, r11, lsr #2 - and r4, r4, r3, lsr #4 - eor r9, r9, r4 - eor r11, r11, r4, lsl #2 //SWAPMOVE(r11, r9, 0x03030303, 2) - eor r4, r10, r12, lsr #2 - and r4, r4, r3, lsr #4 - eor r10, r10, r4 - eor r12, r12, r4, lsl #2 //SWAPMOVE(r12, r10, 0x03030303, 2) - eor r4, r8, r10, lsr #2 - and r4, r4, r3, lsr #2 - eor r8, r8, r4 - eor r10, r10, r4, lsl #2 //SWAPMOVE(r10, r8, 0x0c0c0c0c, 2) - eor r4, r8, r12, lsr #4 - and r4, r4, r3, lsr #4 - eor r8, r8, r4 - eor r12, r12, r4, lsl #4 //SWAPMOVE(r12, r8, 0x03030303, 4) - eor r4, r7, r9, lsr #2 - and r4, r4, r3, lsr #2 - eor r7, r7, r4 - eor r9, r9, r4, lsl #2 //SWAPMOVE(r9, r7, 0x0c0c0c0c, 2) - eor r4, r7, r11, lsr #4 - and r4, r4, r3, lsr #4 - eor r7, r7, r4 - eor r11, r11, r4, lsl #4 //SWAPMOVE(r11, r7, 0x03030303, 4) - eor r4, r6, r12, lsr #6 - and r4, r4, r3, lsr #4 - eor r6, r6, r4 - eor r12, r12, r4, lsl #6 //SWAPMOVE(r12, r6, 0x03030303, 6) - eor r4, r6, r10, lsr #4 - and r4, r4, r3, lsr #2 - eor r6, r6, r4 - eor r10, r10, r4, lsl #4 //SWAPMOVE(r10, r6, 0x0c0c0c0c, 4) - eor r4, r6, r8, lsr #2 - and r4, r4, r3 - eor r6, r6, r4 - eor r8, r8, r4, lsl #2 //SWAPMOVE(r8, r6, 0x30303030, 2) - eor r4, r5, r11, lsr #6 - and r4, r4, r3, lsr #4 - eor r5, r5, r4 - eor r11, r11, r4, lsl #6 //SWAPMOVE(r11, r5, 0x03030303, 6) - eor r4, r5, r9, lsr #4 - and r4, r4, r3, lsr #2 - eor r5, r5, r4 - eor r9, r9, r4, lsl #4 //SWAPMOVE(r9, r5, 0x0c0c0c0c, 4) - eor r4, r5, r7, lsr #2 - and r4, r4, r3 - eor r5, r5, r4 - eor r7, r7, r4, lsl #2 //SWAPMOVE(r7, r5, 0x30303030, 2) - eor r4, r5, r6, lsr #1 - and r4, r4, r2 - eor r5, r5, r4 - eor r6, r6, r4, lsl #1 //SWAPMOVE(r6, r5, 0x55555555, 1) - eor r4, r7, r8, lsr #1 - and r4, r4, r2 - eor r7, r7, r4 - eor r8, r8, r4, lsl #1 //SWAPMOVE(r8, r7, 0x55555555, 1) - eor r4, r9, r10, lsr #1 - and r4, r4, r2 - eor r9, r9, r4 - eor r10, r10, r4, lsl #1 //SWAPMOVE(r10, r9, 0x55555555, 1) - eor r4, r11, r12, lsr #1 - and r4, r4, r2 - eor r11, r11, r4 - eor r12, r12, r4, lsl #1 //SWAPMOVE(r12, r11, 0x55555555, 1) - bx lr - - - -/****************************************************************************** -* Compute TK = LFSR2(TK2) for all rounds. -******************************************************************************/ -@ void tkschedule_lfsr_2(u32* rtk, const u8* tk2, const u8* tk2_bis, const int rounds) -.global tkschedule_lfsr_2 -.type tkschedule_lfsr_2,%function -.align 2 -tkschedule_lfsr_2: - push {r0-r12, r14} - ldm r1, {r5,r7,r9,r11} // load the 1st block in r5,r7,r9,r11 - ldm r2, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 - mov.w r1, r3 //load loop counter in r1 - movw r2, #0x5555 - movt r2, #0x5555 //r2 <- 0x55555555 - movw r3, #0x3030 - movt r3, #0x3030 //r3 <- 0x30303030 - bl packing - stmia r0!, {r5-r12} - loop_2: - eor r5, r5, r7 // apply LFSR2 to tk2 - stmia r0!, {r6-r12} - str.w r5, [r0], #36 - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r6, r6, r8 // apply LFSR2 to tk2 - stmia r0!, {r7-r12} - strd r5, r6, [r0], #40 - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r7, r7, r9 // apply LFSR2 to tk2 - stmia r0!, {r8-r12} - stmia r0!, {r5-r7} - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r8, r8, r10 // apply LFSR2 to tk2 - stmia r0!, {r9-r12} - stmia r0!, {r5-r8} - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r9, r9, r11 // apply LFSR2 to tk2 - stmia r0!, {r10-r12} - stmia r0!, {r5-r9} - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r10, r10, r12 // apply LFSR2 to tk2 - strd r11, r12, [r0], #8 - stmia r0!, {r5-r10} - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r11, r11, r5 // apply LFSR2 to tk2 - str.w r12, [r0], #4 - stmia r0!, {r5-r11} - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // r1 = 0 => we are done - eor r12, r12, r6 // apply LFSR2 to tk2 - stmia r0!, {r5-r12} - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - bne loop_2 // if not 0 then we run the loop again - exit_lfsr: - pop {r0-r12, r14} - bx lr - - -/****************************************************************************** -* Compute TK ^= LFSR3(TK3) for all rounds. -******************************************************************************/ -@ void tkschedule_lfsr_3(u32* rtk, const u8* tk2, const u8* tk2_bis, -@ const int rounds) -.global tkschedule_lfsr_3 -.type tkschedule_lfsr_3,%function -.align 2 -tkschedule_lfsr_3: - push {r0-r12, r14} - ldm r1, {r5,r7,r9,r11} // load the 1st block in r5,r7,r9,r11 - ldm r2, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 - mov.w r1, r3 //load loop counter in r1 - movw r2, #0x5555 - movt r2, #0x5555 //r2 <- 0x55555555 - movw r3, #0x3030 - movt r3, #0x3030 //r3 <- 0x30303030 - bl packing - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r5 // rtk <- tk2 ^ tk3 - eor r3, r3, r6 // rtk <- tk2 ^ tk3 - eor r4, r4, r7 // rtk <- tk2 ^ tk3 - eor r14, r14, r8 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r9 // rtk <- tk2 ^ tk3 - eor r3, r3, r10 // rtk <- tk2 ^ tk3 - eor r4, r4, r11 // rtk <- tk2 ^ tk3 - eor r14, r14, r12 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - loop_3: - eor r12, r12, r6 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r12 // rtk <- tk2 ^ tk3 - eor r3, r3, r5 // rtk <- tk2 ^ tk3 - eor r4, r4, r6 // rtk <- tk2 ^ tk3 - eor r14, r14, r7 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r8 // rtk <- tk2 ^ tk3 - eor r3, r3, r9 // rtk <- tk2 ^ tk3 - eor r4, r4, r10 // rtk <- tk2 ^ tk3 - eor r14, r14, r11 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r11, r11, r5 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r11 // rtk <- tk2 ^ tk3 - eor r3, r3, r12 // rtk <- tk2 ^ tk3 - eor r4, r4, r5 // rtk <- tk2 ^ tk3 - eor r14, r14, r6 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r7 // rtk <- tk2 ^ tk3 - eor r3, r3, r8 // rtk <- tk2 ^ tk3 - eor r4, r4, r9 // rtk <- tk2 ^ tk3 - eor r14, r14, r10 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r10, r10, r12 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r10 // rtk <- tk2 ^ tk3 - eor r3, r3, r11 // rtk <- tk2 ^ tk3 - eor r4, r4, r12 // rtk <- tk2 ^ tk3 - eor r14, r14, r5 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r6 // rtk <- tk2 ^ tk3 - eor r3, r3, r7 // rtk <- tk2 ^ tk3 - eor r4, r4, r8 // rtk <- tk2 ^ tk3 - eor r14, r14, r9 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r9, r9, r11 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r9 // rtk <- tk2 ^ tk3 - eor r3, r3, r10 // rtk <- tk2 ^ tk3 - eor r4, r4, r11 // rtk <- tk2 ^ tk3 - eor r14, r14, r12 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r5 // rtk <- tk2 ^ tk3 - eor r3, r3, r6 // rtk <- tk2 ^ tk3 - eor r4, r4, r7 // rtk <- tk2 ^ tk3 - eor r14, r14, r8 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r8, r8, r10 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r8 // rtk <- tk2 ^ tk3 - eor r3, r3, r9 // rtk <- tk2 ^ tk3 - eor r4, r4, r10 // rtk <- tk2 ^ tk3 - eor r14, r14, r11 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r12 // rtk <- tk2 ^ tk3 - eor r3, r3, r5 // rtk <- tk2 ^ tk3 - eor r4, r4, r6 // rtk <- tk2 ^ tk3 - eor r14, r14, r7 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r7, r7, r9 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r7 // rtk <- tk2 ^ tk3 - eor r3, r3, r8 // rtk <- tk2 ^ tk3 - eor r4, r4, r9 // rtk <- tk2 ^ tk3 - eor r14, r14, r10 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r11 // rtk <- tk2 ^ tk3 - eor r3, r3, r12 // rtk <- tk2 ^ tk3 - eor r4, r4, r5 // rtk <- tk2 ^ tk3 - eor r14, r14, r6 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r6, r6, r8 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r6 // rtk <- tk2 ^ tk3 - eor r3, r3, r7 // rtk <- tk2 ^ tk3 - eor r4, r4, r8 // rtk <- tk2 ^ tk3 - eor r14, r14, r9 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r10 // rtk <- tk2 ^ tk3 - eor r3, r3, r11 // rtk <- tk2 ^ tk3 - eor r4, r4, r12 // rtk <- tk2 ^ tk3 - eor r14, r14, r5 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 2 - beq exit_lfsr // if 0 then we are done - eor r5, r5, r7 // apply LFSR3 to tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r5 // rtk <- tk2 ^ tk3 - eor r3, r3, r6 // rtk <- tk2 ^ tk3 - eor r4, r4, r7 // rtk <- tk2 ^ tk3 - eor r14, r14, r8 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) - eor r2, r2, r9 // rtk <- tk2 ^ tk3 - eor r3, r3, r10 // rtk <- tk2 ^ tk3 - eor r4, r4, r11 // rtk <- tk2 ^ tk3 - eor r14, r14, r12 // rtk <- tk2 ^ tk3 - stmia r0!, {r2-r4,r14} // store rtk after adding tk3 - add r0, r0, #32 // same round tweakey every 2 rounds - subs r1, r1, #2 // decrease loop counter by 8 - bne loop_3 - pop {r0-r12, r14} - bx lr - -/****************************************************************************** -* Compute TK = rearrange(perm(TK ^ TK1)) for all rounds. -* The function 'rearrange' aims at reording bits for all round tweakeys to -* match the fixsliced implementation of the SKINNY block cipher. -******************************************************************************/ -@ void tkschedule_perm(u32* rtk) -.global tkschedule_perm -.type tkschedule_perm,%function -.align 2 -tkschedule_perm: - push {r0-r12, r14} - sub.w sp, #4 // to store 'lr' during subroutines - movw r4, #0xf0f0 - movt r4, #0xf0f0 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x0000000c // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - mvn r10, r10 // to save 1 NOT in Sbox calculations - mvn r6, r6 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x000000c0 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - strd r5, r6, [r0], #8 - strd r8, r12, [r0], #8 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - and r3, r4, r11, ror #26 - mvn r1, r1 - eor r2, r2, #0x00000300 - eor r3, r3, #0x00000300 - eor r3, r3, #0x30000000 - mvn r3, r3 - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #26 - and r2, r4, r6, ror #26 - and r3, r4, r7, ror #26 - mvn r1, r1 - mvn r2, r2 - mvn r3, r3 - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - mvn r1, r1 - stmia.w r0!, {r1-r2} - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #12 - and r1, r4, r6, ror #28 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #12 - and r1, r4, r7, ror #28 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #12 - and r1, r4, r8, ror #28 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #12 - and r1, r4, r9, ror #28 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #12 - and r1, r4, r10, ror #28 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #12 - and r1, r4, r11, ror #28 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #12 - and r1, r4, r12, ror #28 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- - mvn r8, r8 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x0c000000 // add rconst - str.w r8, [r0], #4 - stmia r0!, {r7,r9,r12} - eor r10, r10, #0x0c000000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - str.w r10, [r0], #4 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0xcc000000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - stmia r0!, {r5,r6,r11} - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p4 // apply the permutation 4 times - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x00300000 // add rconst - eor r2, r2, #0x00000003 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00300000 // add rconst - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x00300000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00300000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x00cc0000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - eor r10, r10, #0x00c00000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - mvn r6, r6 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00f00000 // add rconst - eor r9, r9, #0x00c00000 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 - strd r11, r10, [r0], #8 - strd r5, r6, [r0], #8 - strd r8, r12, [r0], #8 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p6 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x00c00000 // add rconst - eor r3, r3, #0x03c00000 // add rconst - eor r3, r3, #0x00003000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #28 - and r1, r4, r6, ror #12 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #28 - and r1, r4, r7, ror #12 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #28 - and r1, r4, r8, ror #12 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #28 - and r1, r4, r9, ror #12 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #28 - and r1, r4, r10, ror #12 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #28 - and r1, r4, r11, ror #12 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #28 - and r1, r4, r12, ror #12 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- - mvn r7, r7 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - eor r9, r9, #0x00000c00 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00000c00 // add rconst - eor r12, r12, #0x03000000 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x00000c00 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0x0000c000 // add rconst - eor r11, r11, #0x03000000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p8 - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - eor r1, r1, #0x00000c30 // add rconst - eor r3, r3, #0x00000c30 // add rconst - eor r3, r3, #0x00030000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00000030 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x000000fc // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - eor r10, r10, #0x000000c0 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - mvn r6, r6 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x000000f0 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - strd r5, r6, [r0], #8 - strd r8, r12, [r0], #8 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p10 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - eor r1, r1, #0x00000300 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x00000300 // add rconst - strd r1, r2, [r0], #8 - and r1, r4, r11, ror #26 - and r2, r4, r10, ror #26 - eor r1, r1, #0x30000000 // add rconst - eor r1, r1, #0x000003c0 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x00000300 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r1, r4, r6, ror #26 - and r2, r4, r7, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #12 - and r1, r4, r6, ror #28 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #12 - and r1, r4, r7, ror #28 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #12 - and r1, r4, r8, ror #28 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #12 - and r1, r4, r9, ror #28 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #12 - and r1, r4, r10, ror #28 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #12 - and r1, r4, r11, ror #28 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #12 - and r1, r4, r12, ror #28 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- - mvn r8, r8 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - eor r9, r9, #0x0c000000 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00000300 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x0c000000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0xcc000000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p12 - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r3, r3, #0x0c000000 // add rconst - eor r2, r2, #0x00000003 // add rconst - eor r2, r2, #0x0c000000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x00300000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00300000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x003c0000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - strd r5, r6, [r0], #8 - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00f00000 // add rconst - strd r8, r12, [r0], #8 - eor r9, r9, #0x00c00000 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p14 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x03c00000 // add rconst - eor r3, r3, #0x03c00000 // add rconst - eor r3, r3, #0x00003000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #28 - and r1, r4, r6, ror #12 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #28 - and r1, r4, r7, ror #12 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #28 - and r1, r4, r8, ror #12 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #28 - and r1, r4, r9, ror #12 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #28 - and r1, r4, r10, ror #12 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #28 - and r1, r4, r11, ror #12 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #28 - and r1, r4, r12, ror #12 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- - mvn r7, r7 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00000c00 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x00000c00 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0x0000cc00 // add rconst - eor r11, r11, #0x03000000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - eor r3, r3, #0x00000030 // add rconst - eor r3, r3, #0x00030000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - eor r1, r1, #0x00000030 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00000030 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x0000000c // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - eor r10, r10, #0x000000c0 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - strd r5, r6, [r0], #8 - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x000000f0 // add rconst - strd r8, r12, [r0], #8 - eor r9, r9, #0x000000c0 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - and r3, r4, r11, ror #26 - eor r1, r1, #0x00000300 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x000000c0 // add rconst - eor r3, r3, #0x000003c0 // add rconst - eor r3, r3, #0x30000000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #26 - and r2, r4, r6, ror #26 - and r3, r4, r7, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r2} - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #12 - and r1, r4, r6, ror #28 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #12 - and r1, r4, r7, ror #28 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #12 - and r1, r4, r8, ror #28 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #12 - and r1, r4, r9, ror #28 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #12 - and r1, r4, r10, ror #28 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #12 - and r1, r4, r11, ror #28 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #12 - and r1, r4, r12, ror #28 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- - mvn r8, r8 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x0c000000 // add rconst - eor r12, r12, #0x00000300 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x0c000000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0xc0000000 // add rconst - eor r11, r11, #0x00000300 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p4 // apply the permutation 4 times - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x0c300000 // add rconst - eor r2, r2, #0x00000003 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00300000 // add rconst - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x00300000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x00cc0000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - eor r10, r10, #0x00c00000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - mvn r6, r6 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00300000 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 - strd r11, r10, [r0], #8 - strd r5, r6, [r0], #8 - strd r8, r12, [r0], #8 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p6 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00c00000 // add rconst - eor r3, r3, #0x00003000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #28 - and r1, r4, r6, ror #12 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #28 - and r1, r4, r7, ror #12 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #28 - and r1, r4, r8, ror #12 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #28 - and r1, r4, r9, ror #12 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #28 - and r1, r4, r10, ror #12 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #28 - and r1, r4, r11, ror #12 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #28 - and r1, r4, r12, ror #12 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- - mvn r7, r7 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - eor r9, r9, #0x00000c00 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x03000000 // add rconst - strd r9, r12, [r0], #8 - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0x0000c000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p8 - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - eor r1, r1, #0x00000c00 // add rconst - eor r3, r3, #0x00030c00 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x0000003c // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - mvn r10, r10 // to save 1 NOT in Sbox calculations - mvn r6, r6 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x000000c0 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - strd r5, r6, [r0], #8 - strd r8, r12, [r0], #8 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p10 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r1, r4, r11, ror #26 - and r2, r4, r10, ror #26 - eor r1, r1, #0x30000000 // add rconst - eor r1, r1, #0x00000300 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r1, r4, r6, ror #26 - and r2, r4, r7, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #12 - and r1, r4, r6, ror #28 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #12 - and r1, r4, r7, ror #28 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #12 - and r1, r4, r8, ror #28 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #12 - and r1, r4, r9, ror #28 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #12 - and r1, r4, r10, ror #28 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #12 - and r1, r4, r11, ror #28 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #12 - and r1, r4, r12, ror #28 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- - mvn r8, r8 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x0c000000 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x0c000000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0xc0000000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p12 - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r3, r3, #0x00300000 // add rconst - eor r2, r2, #0x00000003 // add rconst - eor r2, r2, #0x00300000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x00300000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x00cc0000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - eor r10, r10, #0x00c00000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - strd r5, r6, [r0], #8 - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00f00000 // add rconst - strd r8, r12, [r0], #8 - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p14 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x03c00000 // add rconst - eor r3, r3, #0x00003000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #28 - and r1, r4, r6, ror #12 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #28 - and r1, r4, r7, ror #12 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #28 - and r1, r4, r8, ror #12 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #28 - and r1, r4, r9, ror #12 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #28 - and r1, r4, r10, ror #12 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #28 - and r1, r4, r11, ror #12 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #28 - and r1, r4, r12, ror #12 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- - mvn r7, r7 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - eor r9, r9, #0x00000c00 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x03000000 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x00000c00 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0x0000c000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - eor r1, r1, #0x00000c00 // add rconst - eor r3, r3, #0x00030c00 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00000030 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x0000003c // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r11, r10, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - strd r5, r6, [r0], #8 - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x000000f0 // add rconst - strd r8, r12, [r0], #8 - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - and r3, r4, r11, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x00000300 // add rconst - eor r3, r3, #0x000003c0 // add rconst - eor r3, r3, #0x30000000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #26 - and r2, r4, r6, ror #26 - and r3, r4, r7, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - mvn r1, r1 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r2} - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #12 - and r1, r4, r6, ror #28 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #12 - and r1, r4, r7, ror #28 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #12 - and r1, r4, r8, ror #28 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #12 - and r1, r4, r9, ror #28 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #12 - and r1, r4, r10, ror #28 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #12 - and r1, r4, r11, ror #28 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #12 - and r1, r4, r12, ror #28 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- - mvn r8, r8 // to save 1 NOT in Sbox calculations - mvn r7, r7 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - mvn r9, r9 // to save 1 NOT in Sbox calculations - strd r9, r12, [r0], #8 - eor r10, r10, #0x0c000000 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0xcc000000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p4 // apply the permutation 4 times - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r3, r3, #0x00300000 // add rconst - eor r2, r2, #0x00000003 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - eor r2, r2, #0x00300000 // add rconst - mvn r2, r2 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00300000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - eor r11, r11, #0x00cc0000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - mvn r10, r10 // to save 1 NOT in Sbox calculations - mvn r6, r6 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00f00000 // add rconst - eor r9, r9, #0x00c00000 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - mvn r7, r7 - strd r11, r10, [r0], #8 - strd r5, r6, [r0], #8 - strd r8, r12, [r0], #8 - strd r9, r7, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p6 - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r2, r2, #0x00c00000 // add rconst - eor r3, r3, #0x03c00000 // add rconst - eor r3, r3, #0x00003000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - eor r1, r1, #0x03000000 // add rconst - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r2, r2 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing - and r5, r5, r4, lsl #6 - orr r5, r1, r5, ror #28 - and r1, r4, r6, ror #12 - and r6, r6, r4, lsl #6 - orr r6, r1, r6, ror #28 - and r1, r4, r7, ror #12 - and r7, r7, r4, lsl #6 - orr r7, r1, r7, ror #28 - and r1, r4, r8, ror #12 - and r8, r8, r4, lsl #6 - orr r8, r1, r8, ror #28 - and r1, r4, r9, ror #12 - and r9, r9, r4, lsl #6 - orr r9, r1, r9, ror #28 - and r1, r4, r10, ror #12 - and r10, r10, r4, lsl #6 - orr r10, r1, r10, ror #28 - and r1, r4, r11, ror #12 - and r11, r11, r4, lsl #6 - orr r11, r1, r11, ror #28 - and r1, r4, r12, ror #12 - and r12, r12, r4, lsl #6 - orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- - mvn r7, r7 // to save 1 NOT in Sbox calculations - mvn r8, r8 // to save 1 NOT in Sbox calculations - strd r8, r7, [r0], #8 - eor r9, r9, #0x00000c00 // add rconst - mvn r9, r9 // to save 1 NOT in Sbox calculations - eor r12, r12, #0x00000c00 // add rconst - strd r9, r12, [r0], #8 - eor r10, r10, #0x00000c00 // add rconst - mvn r10, r10 // to save 1 NOT in Sbox calculations - strd r10, r5, [r0], #8 - mvn r6, r6 // to save 1 NOT in Sbox calculations - eor r11, r11, #0x03000000 // add rconst - eor r11, r11, #0x0000c000 // add rconst - mvn r11, r11 // to save 1 NOT in Sbox calculations - strd r6, r11, [r0], #8 - ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) - bl p8 - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - eor r1, r1, #0x00000c00 // add rconst - eor r3, r3, #0x00000030 // add rconst - eor r3, r3, #0x00030000 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - mvn r1, r1 // to save 1 NOT in Sbox calculations - eor r3, r3, #0x00000030 // add rconst - mvn r3, r3 // to save 1 NOT in Sbox calculations - strd r1, r3, [r0], #8 - add.w sp, #4 - pop {r0-r12, r14} - bx lr - -/****************************************************************************** -* Compute TK = rearrange(perm(TK ^ TK1)) for all rounds. -* The function 'rearrange' aims at reording bits for all round tweakeys to -* match the fixsliced implementation of the SKINNY block cipher. -******************************************************************************/ -@ void tkschedule_perm_tk1(u32* rtk) -.global tkschedule_perm_tk1 -.type tkschedule_perm_tk1,%function -.align 2 -tkschedule_perm_tk1: - push {r0-r12, r14} - sub.w sp, #32 // to store packed tk1 - ldm r1, {r5,r7,r9,r11} // load the 1st block in r5,r7,r9,r11 - ldm r2, {r6,r8,r10,r12} // load the 1st block in r5,r7,r9,r11 - movw r2, #0x5555 - movt r2, #0x5555 // r2 <- 0x55555555 - movw r3, #0x3030 - movt r3, #0x3030 // r3 <- 0x30303030 - bl packing - stm sp, {r5-r12} - movw r4, #0xf0f0 - movt r4, #0xf0f0 - and r1, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - strd r1, r2, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - and r3, r4, r11, ror #26 - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #26 - and r2, r4, r6, ror #26 - and r3, r4, r7, ror #26 - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - stmia.w r0!, {r1-r2} - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r8, ror #28 // --- ror and masks to match fixslicing - and r2, r8, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r7, ror #28 - and r3, r7, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - and r1, r4, r9, ror #28 - and r2, r9, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r12, ror #28 - and r3, r12, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - and r1, r4, r10, ror #28 - and r2, r10, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r5, ror #28 - and r3, r5, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - and r1, r4, r6, ror #28 - and r2, r6, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r11, ror #28 - and r3, r11, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r1, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - strd r1, r2, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - stmia r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - stmia r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r8, ror #12 // --- ror and masks to match fixslicing - and r2, r8, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r7, ror #12 - and r3, r7, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - and r1, r4, r9, ror #12 - and r2, r9, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r12, ror #12 - and r3, r12, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - and r1, r4, r10, ror #12 - and r2, r10, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r5, ror #12 - and r3, r5, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - and r1, r4, r6, ror #12 - and r2, r6, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r11, ror #12 - and r3, r11, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r1, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - strd r1, r2, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #26 - and r2, r4, r12, ror #26 - strd r1, r2, [r0], #8 - and r1, r4, r11, ror #26 - and r2, r4, r10, ror #26 - strd r1, r2, [r0], #8 - and r1, r4, r6, ror #26 - and r2, r4, r7, ror #26 - strd r1, r2, [r0], #8 - and r1, r4, r8, ror #26 - and r2, r4, r5, ror #26 - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r8, ror #28 // --- ror and masks to match fixslicing - and r2, r8, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r7, ror #28 - and r3, r7, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - and r1, r4, r9, ror #28 - and r2, r9, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r12, ror #28 - and r3, r12, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - and r1, r4, r10, ror #28 - and r2, r10, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r5, ror #28 - and r3, r5, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - and r1, r4, r6, ror #28 - and r2, r6, r4, lsl #6 - orr r2, r1, r2, ror #12 - and r1, r4, r11, ror #28 - and r3, r11, r4, lsl #6 - orr r3, r1, r3, ror #12 - strd r2, r3, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing - and r2, r5, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r6, ror #14 - and r3, r6, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - and r1, r4, r7, ror #14 - and r2, r7, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r8, ror #14 - and r3, r8, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - and r1, r4, r11, ror #14 - and r2, r11, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r12, ror #14 - and r3, r12, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - and r1, r4, r9, ror #14 - and r2, r9, r4, ror #4 - orr r2, r1, r2, ror #6 - and r1, r4, r10, ror #14 - and r3, r10, r4, ror #4 - orr r3, r1, r3, ror #6 - strd r3, r2, [r0], #8 - orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 - and r1, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r3, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - stmia r0!, {r1-r3} - and r1, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - and r2, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) - strd r1, r2, [r0], #8 - bl p2 // apply the permutation twice - movw r4, #0xc3c3 - movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 - and r1, r4, r9, ror #10 // ror and mask to match fixslicing - and r2, r4, r12, ror #10 // ror and mask to match fixslicing - and r3, r4, r11, ror #10 // ror and mask to match fixslicing - stmia.w r0!, {r1-r3} - and r1, r4, r10, ror #10 // ror and mask to match fixslicing - and r2, r4, r6, ror #10 // ror and mask to match fixslicing - and r3, r4, r7, ror #10 // ror and mask to match fixslicing - stmia.w r0!, {r1-r3} - and r1, r4, r8, ror #10 // ror and mask to match fixslicing - and r2, r4, r5, ror #10 // ror and mask to match fixslicing - strd r1, r2, [r0], #8 - and r4, r4, r4, lsr #6 // r4 <- 0x03030303 - and r1, r4, r8, ror #12 // --- ror and masks to match fixslicing - and r2, r8, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r7, ror #12 - and r3, r7, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - and r1, r4, r9, ror #12 - and r2, r9, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r12, ror #12 - and r3, r12, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - and r1, r4, r10, ror #12 - and r2, r10, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r5, ror #12 - and r3, r5, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - and r1, r4, r6, ror #12 - and r2, r6, r4, lsl #6 - orr r2, r1, r2, ror #28 - and r1, r4, r11, ror #12 - and r3, r11, r4, lsl #6 - orr r3, r1, r3, ror #28 - strd r2, r3, [r0], #8 - ldmia.w sp!, {r5-r12} - movw r4, #0x3030 - movt r4, #0x3030 // r4 <- 0x30303030 - and r1, r4, r6, ror #30 - and r2, r6, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r5, ror #30 - and r2, r5, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - and r1, r4, r8, ror #30 - and r2, r8, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r7, ror #30 - and r2, r7, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - and r1, r4, r12, ror #30 - and r2, r12, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r11, ror #30 - and r2, r11, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0], #8 - and r1, r4, r10, ror #30 - and r2, r10, r4, ror #4 - orr r1, r1, r2, ror #22 - and r3, r4, r9, ror #30 - and r2, r9, r4, ror #4 - orr r3, r3, r2, ror #22 - strd r1, r3, [r0] - pop {r0-r12, r14} - bx lr - -/****************************************************************************** -* Quadruple round of the SKINNY block cipher in a bitsliced manner. -******************************************************************************/ -.align 2 -quadruple_round: - str.w r14, [sp] // store r14 on the stack - orr r4, r5, r6 // state[0] | state[1] - eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) - orr r4, r9, r10 // state[4] | state[5] - eor r12, r12, r4 // state[7] ^= (state[4] | state[5]) - orr r4, r11, r10 // state[6] | state[5] - eor r6, r6, r4 // state[1] ^= (state[6] | state[5]) - and r4, r8, r12 // state[3] & state[7] - eor r7, r7, r4 // state[2] ^= (state[3] & state[7]) - orn r4, r9, r12 // ~state[7] | state[4] - eor r11, r11, r4 // state[6] ^= (~state[7] | state[4]) - orn r4, r7, r6 // state[2] | ~state[1] - eor r5, r5, r4 // state[0] ^= (state[2] | ~state[1]) - orn r4, r7, r8 // ~state[3] | state[2] - eor r9, r9, r4 // state[4] ^= (~state[3] | state[2]) - and r4, r5, r11 // state[0] & state[6] - eor r10, r10, r4 // state[5] ^= (state[6] & state[0]) - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_1 - eor r6, r6, r3 // add rtk_1 - eor r7, r7, r4 // add rtk_1 - eor r8, r8, r14 // add rtk_1 - ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_1 - eor r10, r10, r3 // add rtk_1 - eor r11, r11, r4 // add rtk_1 - eor r12, r12, r14 // add rtk_1 - movw r2, #0x3030 - movt r2, #0x3030 // r2 <- 0x30303030 - and r4, r2, r5, ror #30 // --- mixcolumns - eor r5, r5, r4, ror #24 - and r4, r2, r5, ror #18 - eor r5, r5, r4, ror #2 - and r4, r2, r5, ror #6 - eor r5, r5, r4, ror #4 - and r4, r2, r6, ror #30 - eor r6, r6, r4, ror #24 - and r4, r2, r6, ror #18 - eor r6, r6, r4, ror #2 - and r4, r2, r6, ror #6 - eor r6, r6, r4, ror #4 - and r4, r2, r7, ror #30 - eor r7, r7, r4, ror #24 - and r4, r2, r7, ror #18 - eor r7, r7, r4, ror #2 - and r4, r2, r7, ror #6 - eor r7, r7, r4, ror #4 - and r4, r2, r8, ror #30 - eor r8, r8, r4, ror #24 - and r4, r2, r8, ror #18 - eor r8, r8, r4, ror #2 - and r4, r2, r8, ror #6 - eor r8, r8, r4, ror #4 - and r4, r2, r9, ror #30 - eor r9, r9, r4, ror #24 - and r4, r2, r9, ror #18 - eor r9, r9, r4, ror #2 - and r4, r2, r9, ror #6 - eor r9, r9, r4, ror #4 - and r4, r2, r10, ror #30 - eor r10, r10, r4, ror #24 - and r4, r2, r10, ror #18 - eor r10, r10, r4, ror #2 - and r4, r2, r10, ror #6 - eor r10, r10, r4, ror #4 - and r4, r2, r11, ror #30 - eor r11, r11, r4, ror #24 - and r4, r2, r11, ror #18 - eor r11, r11, r4, ror #2 - and r4, r2, r11, ror #6 - eor r11, r11, r4, ror #4 - and r4, r2, r12, ror #30 - eor r12, r12, r4, ror #24 - and r4, r2, r12, ror #18 - eor r12, r12, r4, ror #2 - and r4, r2, r12, ror #6 - eor r12, r12, r4, ror #4 // mixcolumns --- - orr r4, r7, r8 // state[2] | state[3] - eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) - orr r4, r6, r11 // state[1] | state[6] - eor r10, r10, r4 // state[5] ^= (state[6] | state[1]) - orr r4, r5, r6 // state[0] | state[1] - eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) - and r4, r9, r10 // state[4] & state[5] - eor r12, r12, r4 // state[7] ^= (state[4] & state[5]) - orn r4, r11, r10 // ~state[5] | state[6] - eor r5, r5, r4 // state[0] ^= (~state[5] | state[6]) - orn r4, r12, r8 // state[7] | ~state[3] - eor r7, r7, r4 // state[2] ^= (state[7] | ~state[3]) - orn r4, r12, r9 // state[7] | ~state[4] - eor r11, r11, r4 // state[6] ^= (~state[4] | state[7]) - and r4, r5, r7 // state[0] & state[2] - eor r6, r6, r4 // state[1] ^= (state[0] & state[2]) - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_1 - eor r6, r6, r3 // add rtk_1 - eor r7, r7, r4 // add rtk_1 - eor r8, r8, r14 // add rtk_1 - ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_1 - eor r10, r10, r3 // add rtk_1 - eor r11, r11, r4 // add rtk_1 - eor r12, r12, r14 // add rtk_1 - movw r2, #0x3030 - movt r2, #0x3030 //r2 <- 0x30303030 - and r4, r2, r5, ror #16 // --- mixcolumns - eor r5, r5, r4, ror #30 - and r4, r2, r5, ror #28 - eor r5, r5, r4 - and r4, r2, r5, ror #16 - eor r5, r5, r4, ror #2 - and r4, r2, r6, ror #16 - eor r6, r6, r4, ror #30 - and r4, r2, r6, ror #28 - eor r6, r6, r4 - and r4, r2, r6, ror #16 - eor r6, r6, r4, ror #2 - and r4, r2, r7, ror #16 - eor r7, r7, r4, ror #30 - and r4, r2, r7, ror #28 - eor r7, r7, r4 - and r4, r2, r7, ror #16 - eor r7, r7, r4, ror #2 - and r4, r2, r8, ror #16 - eor r8, r8, r4, ror #30 - and r4, r2, r8, ror #28 - eor r8, r8, r4 - and r4, r2, r8, ror #16 - eor r8, r8, r4, ror #2 - and r4, r2, r9, ror #16 - eor r9, r9, r4, ror #30 - and r4, r2, r9, ror #28 - eor r9, r9, r4 - and r4, r2, r9, ror #16 - eor r9, r9, r4, ror #2 - and r4, r2, r10, ror #16 - eor r10, r10, r4, ror #30 - and r4, r2, r10, ror #28 - eor r10, r10, r4 - and r4, r2, r10, ror #16 - eor r10, r10, r4, ror #2 - and r4, r2, r11, ror #16 - eor r11, r11, r4, ror #30 - and r4, r2, r11, ror #28 - eor r11, r11, r4 - and r4, r2, r11, ror #16 - eor r11, r11, r4, ror #2 - and r4, r2, r12, ror #16 - eor r12, r12, r4, ror #30 - and r4, r2, r12, ror #28 - eor r12, r12, r4 - and r4, r2, r12, ror #16 - eor r12, r12, r4, ror #2 // mixcolumns --- - orr r4, r12, r9 // state[7] | state[4] - eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) - orr r4, r5, r8 // state[0] | state[3] - eor r6, r6, r4 // state[1] ^= (state[0] | state[3]) - orr r4, r7, r8 // state[2] | state[3] - eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) - and r4, r6, r11 // state[1] & state[6] - eor r10, r10, r4 // state[5] ^= (state[6] & state[1]) - orn r4, r5, r6 // ~state[1] | state[0] - eor r7, r7, r4 // state[2] ^= (~state[1] | state[0]) - orn r4, r10, r9 // state[5] | ~state[4] - eor r12, r12, r4 // state[7] ^= (state[5] | ~state[4]) - orn r4, r10, r11 // ~state[6] | state[5] - eor r5, r5, r4 // state[0] ^= (~state[6] | state[5]) - and r4, r7, r12 // state[2] & state[7] - eor r8, r8, r4 // state[3] ^= (state[2] & state[7]) - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_1 - eor r6, r6, r3 // add rtk_1 - eor r7, r7, r4 // add rtk_1 - eor r8, r8, r14 // add rtk_1 - ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_1 - eor r10, r10, r3 // add rtk_1 - eor r11, r11, r4 // add rtk_1 - eor r12, r12, r14 // add rtk_1 - movw r2, #0x3030 - movt r2, #0x3030 // r2 <- 0x30303030 - and r4, r2, r5, ror #10 // --- mixcolumns - eor r5, r5, r4, ror #4 - and r4, r2, r5, ror #6 - eor r5, r5, r4, ror #6 - and r4, r2, r5, ror #26 - eor r5, r5, r4 - and r4, r2, r6, ror #10 - eor r6, r6, r4, ror #4 - and r4, r2, r6, ror #6 - eor r6, r6, r4, ror #6 - and r4, r2, r6, ror #26 - eor r6, r6, r4 - and r4, r2, r7, ror #10 - eor r7, r7, r4, ror #4 - and r4, r2, r7, ror #6 - eor r7, r7, r4, ror #6 - and r4, r2, r7, ror #26 - eor r7, r7, r4 - and r4, r2, r8, ror #10 - eor r8, r8, r4, ror #4 - and r4, r2, r8, ror #6 - eor r8, r8, r4, ror #6 - and r4, r2, r8, ror #26 - eor r8, r8, r4 - and r4, r2, r9, ror #10 - eor r9, r9, r4, ror #4 - and r4, r2, r9, ror #6 - eor r9, r9, r4, ror #6 - and r4, r2, r9, ror #26 - eor r9, r9, r4 - and r4, r2, r10, ror #10 - eor r10, r10, r4, ror #4 - and r4, r2, r10, ror #6 - eor r10, r10, r4, ror #6 - and r4, r2, r10, ror #26 - eor r10, r10, r4 - and r4, r2, r11, ror #10 - eor r11, r11, r4, ror #4 - and r4, r2, r11, ror #6 - eor r11, r11, r4, ror #6 - and r4, r2, r11, ror #26 - eor r11, r11, r4 - and r4, r2, r12, ror #10 - eor r12, r12, r4, ror #4 - and r4, r2, r12, ror #6 - eor r12, r12, r4, ror #6 - and r4, r2, r12, ror #26 - eor r12, r12, r4 // mixcolumns --- - orr r4, r10, r11 // state[5] | state[6] - eor r5, r5, r4 // state[0] ^= (state[5] | state[6]) - orr r4, r7, r9 // state[2] | state[4] - eor r8, r8, r4 // state[3] ^= (state[2] | state[4]) - orr r4, r9, r12 // state[7] | state[4] - eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) - and r4, r5, r8 // state[0] & state[3] - eor r6, r6, r4 // state[1] ^= (state[0] & state[3]) - orn r4, r7, r8 // ~state[3] | state[2] - eor r12, r12, r4 // state[7] ^= (~state[3] | state[2]) - orn r4, r6, r11 // state[1] | ~state[6] - eor r10, r10, r4 // state[5] ^= (state[1] | ~state[6]) - orn r4, r6, r5 // ~state[0] | state[1] - eor r7, r7, r4 // state[2] ^= (~state[0] | state[1]) - and r4, r12, r10 // state[7] & state[5] - eor r9, r9, r4 // state[4] ^= (state[7] & state[5]) - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 - eor r5, r5, r2 // add rtk_1 - eor r6, r6, r3 // add rtk_1 - eor r7, r7, r4 // add rtk_1 - eor r8, r8, r14 // add rtk_1 - ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 - eor r9, r9, r2 // add rtk_1 - eor r10, r10, r3 // add rtk_1 - eor r11, r11, r4 // add rtk_1 - eor r12, r12, r14 // add rtk_1 - movw r2, #0x3030 - movt r2, #0x3030 // r2 <- 0x30303030 - and r4, r2, r5, ror #4 // --- mixcolumns - eor r5, r5, r4, ror #26 - and r4, r2, r5 - eor r5, r5, r4, ror #4 - and r4, r2, r5, ror #4 - eor r5, r5, r4, ror #22 - and r4, r2, r6, ror #4 - eor r6, r6, r4, ror #26 - and r4, r2, r6 - eor r6, r6, r4, ror #4 - and r4, r2, r6, ror #4 - eor r6, r6, r4, ror #22 - and r4, r2, r7, ror #4 - eor r7, r7, r4, ror #26 - and r4, r2, r7 - eor r7, r7, r4, ror #4 - and r4, r2, r7, ror #4 - eor r7, r7, r4, ror #22 - and r4, r2, r8, ror #4 - eor r8, r8, r4, ror #26 - and r4, r2, r8 - eor r8, r8, r4, ror #4 - and r4, r2, r8, ror #4 - eor r8, r8, r4, ror #22 - and r4, r2, r9, ror #4 - eor r9, r9, r4, ror #26 - and r4, r2, r9 - eor r9, r9, r4, ror #4 - and r4, r2, r9, ror #4 - eor r9, r9, r4, ror #22 - and r4, r2, r10, ror #4 - eor r10, r10, r4, ror #26 - and r4, r2, r10 - eor r10, r10, r4, ror #4 - and r4, r2, r10, ror #4 - eor r10, r10, r4, ror #22 - and r4, r2, r11, ror #4 - eor r11, r11, r4, ror #26 - and r4, r2, r11 - eor r11, r11, r4, ror #4 - and r4, r2, r11, ror #4 - eor r11, r11, r4, ror #22 - and r4, r2, r12, ror #4 - eor r12, r12, r4, ror #26 - and r4, r2, r12 - eor r12, r12, r4, ror #4 - and r4, r2, r12, ror #4 - eor r12, r12, r4, ror #22 // mixcolumns --- - // renaming slices for the sbox calculations - // can be avoided with an octuple_round routine=>increase of the code size - ldr.w r14, [sp] // restore link register - eor r5, r5, r6 // --- swap state[0] with state[1] - eor r6, r6, r5 - eor r5, r5, r6 // swap state[0] with state[1] --- - eor r7, r7, r8 // --- swap state[2] with state[3] - eor r8, r8, r7 - eor r7, r7, r8 // swap state[2] with state[3] --- - eor r9, r9, r12 // --- swap state[4] with state[7] - eor r12, r12, r9 - eor r9, r9, r12 // swap state[4] with state[7] --- - eor r11, r11, r10 // --- swap state[6] with state[5] - eor r10, r10, r11 - eor r11, r11, r10 // swap state[6] with state[5] --- - bx lr - -/****************************************************************************** -* Inverse quadruple round of fixsliced SKINNY-128 tweakable block cipher. -* The 2 blocks are stored in r5-r12 (fixsliced representation). -******************************************************************************/ -.align 2 -inv_quadruple_round: - str.w r14, [sp] // store r14 on the stack - eor r5, r5, r6 // --- swap state[0] with state[1] - eor r6, r6, r5 - eor r5, r5, r6 // swap state[0] with state[1] --- - eor r7, r7, r8 // --- swap state[2] with state[3] - eor r8, r8, r7 - eor r7, r7, r8 // swap state[2] with state[3] --- - eor r9, r9, r12 // --- swap state[4] with state[7] - eor r12, r12, r9 - eor r9, r9, r12 // swap state[4] with state[7] --- - eor r11, r11, r10 // --- swap state[6] with state[5] - eor r10, r10, r11 - eor r11, r11, r10 // swap state[6] with state[5] --- - movw r2, #0x3030 - movt r2, #0x3030 // mask for ininv_mixcolumns - and r4, r2, r5, ror #4 // --- inv_mixcolumns_3 - eor r5, r5, r4, ror #22 - and r4, r2, r5 - eor r5, r5, r4, ror #4 - and r4, r2, r5, ror #4 - eor r5, r5, r4, ror #26 - and r4, r2, r6, ror #4 - eor r6, r6, r4, ror #22 - and r4, r2, r6 - eor r6, r6, r4, ror #4 - and r4, r2, r6, ror #4 - eor r6, r6, r4, ror #26 - and r4, r2, r7, ror #4 - eor r7, r7, r4, ror #22 - and r4, r2, r7 - eor r7, r7, r4, ror #4 - and r4, r2, r7, ror #4 - eor r7, r7, r4, ror #26 - and r4, r2, r8, ror #4 - eor r8, r8, r4, ror #22 - and r4, r2, r8 - eor r8, r8, r4, ror #4 - and r4, r2, r8, ror #4 - eor r8, r8, r4, ror #26 - and r4, r2, r9, ror #4 - eor r9, r9, r4, ror #22 - and r4, r2, r9 - eor r9, r9, r4, ror #4 - and r4, r2, r9, ror #4 - eor r9, r9, r4, ror #26 - and r4, r2, r10, ror #4 - eor r10, r10, r4, ror #22 - and r4, r2, r10 - eor r10, r10, r4, ror #4 - and r4, r2, r10, ror #4 - eor r10, r10, r4, ror #26 - and r4, r2, r11, ror #4 - eor r11, r11, r4, ror #22 - and r4, r2, r11 - eor r11, r11, r4, ror #4 - and r4, r2, r11, ror #4 - eor r11, r11, r4, ror #26 - and r4, r2, r12, ror #4 - eor r12, r12, r4, ror #22 - and r4, r2, r12 - eor r12, r12, r4, ror #4 - and r4, r2, r12, ror #4 - eor r12, r12, r4, ror #26 // inv_mixcolumns_3 --- - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r11, r11, r4 // add rtk1 - eor r12, r12, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r9, r9, r2 // add rtk1 - eor r10, r10, r3 // add rtk1 - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r7, r7, r4 // add rtk1 - eor r8, r8, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r5, r5, r2 // add rtk1 - eor r6, r6, r3 // add rtk1 - and r4, r12, r10 // state[7] & state[5] - eor r9, r9, r4 // state[4] ^= (state[7] & state[5]) - orn r4, r6, r5 // ~state[0] | state[1] - eor r7, r7, r4 // state[2] ^= (~state[0] | state[1]) - orn r4, r6, r11 // state[1] | ~state[6] - eor r10, r10, r4 // state[5] ^= (state[1] | ~state[6]) - orn r4, r7, r8 // ~state[3] | state[2] - eor r12, r12, r4 // state[7] ^= (~state[3] | state[2]) - and r4, r5, r8 // state[0] & state[3] - eor r6, r6, r4 // state[1] ^= (state[0] & state[3]) - orr r4, r9, r12 // state[7] | state[4] - eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) - orr r4, r7, r9 // state[2] | state[4] - eor r8, r8, r4 // state[3] ^= (state[2] | state[4]) - orr r4, r10, r11 // state[5] | state[6] - eor r5, r5, r4 // state[0] ^= (state[5] | state[6]) - movw r2, #0x3030 - movt r2, #0x3030 // mask for inv_mixcolumns - and r4, r2, r5, ror #26 // --- inv_mixcolumns_2 - eor r5, r5, r4 - and r4, r2, r5, ror #6 - eor r5, r5, r4, ror #6 - and r4, r2, r5, ror #10 - eor r5, r5, r4, ror #4 - and r4, r2, r6, ror #26 - eor r6, r6, r4 - and r4, r2, r6, ror #6 - eor r6, r6, r4, ror #6 - and r4, r2, r6, ror #10 - eor r6, r6, r4, ror #4 - and r4, r2, r7, ror #26 - eor r7, r7, r4 - and r4, r2, r7, ror #6 - eor r7, r7, r4, ror #6 - and r4, r2, r7, ror #10 - eor r7, r7, r4, ror #4 - and r4, r2, r8, ror #26 - eor r8, r8, r4 - and r4, r2, r8, ror #6 - eor r8, r8, r4, ror #6 - and r4, r2, r8, ror #10 - eor r8, r8, r4, ror #4 - and r4, r2, r9, ror #26 - eor r9, r9, r4 - and r4, r2, r9, ror #6 - eor r9, r9, r4, ror #6 - and r4, r2, r9, ror #10 - eor r9, r9, r4, ror #4 - and r4, r2, r10, ror #26 - eor r10, r10, r4 - and r4, r2, r10, ror #6 - eor r10, r10, r4, ror #6 - and r4, r2, r10, ror #10 - eor r10, r10, r4, ror #4 - and r4, r2, r11, ror #26 - eor r11, r11, r4 - and r4, r2, r11, ror #6 - eor r11, r11, r4, ror #6 - and r4, r2, r11, ror #10 - eor r11, r11, r4, ror #4 - and r4, r2, r12, ror #26 - eor r12, r12, r4 - and r4, r2, r12, ror #6 - eor r12, r12, r4, ror #6 - and r4, r2, r12, ror #10 - eor r12, r12, r4, ror #4 // inv_mixcolumns_2 --- - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r11, r11, r4 // add rtk1 - eor r12, r12, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r9, r9, r2 // add rtk1 - eor r10, r10, r3 // add rtk1 - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r7, r7, r4 // add rtk1 - eor r8, r8, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r5, r5, r2 // add rtk1 - eor r6, r6, r3 // add rtk1 - and r4, r7, r12 // state[2] & state[7] - eor r8, r8, r4 // state[3] ^= (state[2] & state[7]) - orn r4, r10, r11 // ~state[6] | state[5] - eor r5, r5, r4 // state[0] ^= (~state[6] | state[5]) - orn r4, r10, r9 // state[5] | ~state[4] - eor r12, r12, r4 // state[7] ^= (state[5] | ~state[4]) - orn r4, r5, r6 // ~state[1] | state[0] - eor r7, r7, r4 // state[2] ^= (~state[1] | state[0]) - and r4, r6, r11 // state[1] & state[6] - eor r10, r10, r4 // state[5] ^= (state[6] & state[1]) - orr r4, r7, r8 // state[2] | state[3] - eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) - orr r4, r5, r8 // state[0] | state[3] - eor r6, r6, r4 // state[1] ^= (state[0] | state[3]) - orr r4, r12, r9 // state[7] | state[4] - eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) - movw r2, #0x3030 - movt r2, #0x3030 // mask for inv_mixcolumns - and r4, r2, r5, ror #16 // --- inv_mixcolumns_1 - eor r5, r5, r4, ror #2 - and r4, r2, r5, ror #28 - eor r5, r5, r4 - and r4, r2, r5, ror #16 - eor r5, r5, r4, ror #30 - and r4, r2, r6, ror #16 - eor r6, r6, r4, ror #2 - and r4, r2, r6, ror #28 - eor r6, r6, r4 - and r4, r2, r6, ror #16 - eor r6, r6, r4, ror #30 - and r4, r2, r7, ror #16 - eor r7, r7, r4, ror #2 - and r4, r2, r7, ror #28 - eor r7, r7, r4 - and r4, r2, r7, ror #16 - eor r7, r7, r4, ror #30 - and r4, r2, r8, ror #16 - eor r8, r8, r4, ror #2 - and r4, r2, r8, ror #28 - eor r8, r8, r4 - and r4, r2, r8, ror #16 - eor r8, r8, r4, ror #30 - and r4, r2, r9, ror #16 - eor r9, r9, r4, ror #2 - and r4, r2, r9, ror #28 - eor r9, r9, r4 - and r4, r2, r9, ror #16 - eor r9, r9, r4, ror #30 - and r4, r2, r10, ror #16 - eor r10, r10, r4, ror #2 - and r4, r2, r10, ror #28 - eor r10, r10, r4 - and r4, r2, r10, ror #16 - eor r10, r10, r4, ror #30 - and r4, r2, r11, ror #16 - eor r11, r11, r4, ror #2 - and r4, r2, r11, ror #28 - eor r11, r11, r4 - and r4, r2, r11, ror #16 - eor r11, r11, r4, ror #30 - and r4, r2, r12, ror #16 - eor r12, r12, r4, ror #2 - and r4, r2, r12, ror #28 - eor r12, r12, r4 - and r4, r2, r12, ror #16 - eor r12, r12, r4, ror #30 // inv_mixcolumns_1 --- - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r11, r11, r4 // add rtk1 - eor r12, r12, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r9, r9, r2 // add rtk1 - eor r10, r10, r3 // add rtk1 - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r7, r7, r4 // add rtk1 - eor r8, r8, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r5, r5, r2 // add rtk1 - eor r6, r6, r3 // add rtk1 - and r4, r5, r7 // state[0] & state[2] - eor r6, r6, r4 // state[1] ^= (state[0] & state[2]) - orn r4, r12, r9 // state[7] | ~state[4] - eor r11, r11, r4 // state[6] ^= (~state[4] | state[7]) - orn r4, r12, r8 // state[7] | ~state[3] - eor r7, r7, r4 // state[2] ^= (state[7] | ~state[3]) - orn r4, r11, r10 // ~state[5] | state[6] - eor r5, r5, r4 // state[0] ^= (~state[5] | state[6]) - and r4, r9, r10 // state[4] & state[5] - eor r12, r12, r4 // state[7] ^= (state[4] & state[5]) - orr r4, r5, r6 // state[0] | state[1] - eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) - orr r4, r6, r11 // state[1] | state[6] - eor r10, r10, r4 // state[5] ^= (state[6] | state[1]) - orr r4, r7, r8 // state[2] | state[3] - eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) - movw r2, #0x3030 - movt r2, #0x3030 // mask for inv_mixcolumns - and r4, r2, r5, ror #6 // --- inv_mixcolumns_0 - eor r5, r5, r4, ror #4 - and r4, r2, r5, ror #18 - eor r5, r5, r4, ror #2 - and r4, r2, r5, ror #30 - eor r5, r5, r4, ror #24 - and r4, r2, r6, ror #6 - eor r6, r6, r4, ror #4 - and r4, r2, r6, ror #18 - eor r6, r6, r4, ror #2 - and r4, r2, r6, ror #30 - eor r6, r6, r4, ror #24 - and r4, r2, r7, ror #6 - eor r7, r7, r4, ror #4 - and r4, r2, r7, ror #18 - eor r7, r7, r4, ror #2 - and r4, r2, r7, ror #30 - eor r7, r7, r4, ror #24 - and r4, r2, r8, ror #6 - eor r8, r8, r4, ror #4 - and r4, r2, r8, ror #18 - eor r8, r8, r4, ror #2 - and r4, r2, r8, ror #30 - eor r8, r8, r4, ror #24 - and r4, r2, r9, ror #6 - eor r9, r9, r4, ror #4 - and r4, r2, r9, ror #18 - eor r9, r9, r4, ror #2 - and r4, r2, r9, ror #30 - eor r9, r9, r4, ror #24 - and r4, r2, r10, ror #6 - eor r10, r10, r4, ror #4 - and r4, r2, r10, ror #18 - eor r10, r10, r4, ror #2 - and r4, r2, r10, ror #30 - eor r10, r10, r4, ror #24 - and r4, r2, r11, ror #6 - eor r11, r11, r4, ror #4 - and r4, r2, r11, ror #18 - eor r11, r11, r4, ror #2 - and r4, r2, r11, ror #30 - eor r11, r11, r4, ror #24 - and r4, r2, r12, ror #6 - eor r12, r12, r4, ror #4 - and r4, r2, r12, ror #18 - eor r12, r12, r4, ror #2 - and r4, r2, r12, ror #30 - eor r12, r12, r4, ror #24 - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r11, r11, r4 // add rtk_2_3 + rconst - eor r12, r12, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r9, r9, r2 // add rtk_2_3 + rconst - eor r10, r10, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r1], #-8 // load rtk_2_3 - eor r7, r7, r4 // add rtk_2_3 + rconst - eor r8, r8, r14 // add rtk_2_3 + rconst - ldrd r2, r3, [r1], #-8 // load rtk_2_3 - eor r5, r5, r2 // add rtk_2_3 + rconst - eor r6, r6, r3 // add rtk_2_3 + rconst - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r11, r11, r4 // add rtk1 - eor r12, r12, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r9, r9, r2 // add rtk1 - eor r10, r10, r3 // add rtk1 - ldrd r4, r14, [r0], #-8 // load rtk1 - eor r7, r7, r4 // add rtk1 - eor r8, r8, r14 // add rtk1 - ldrd r2, r3, [r0], #-8 // load rtk1 - eor r5, r5, r2 // add rtk1 - eor r6, r6, r3 // add rtk1 - ldr.w r14, [sp] // restore link register - and r4, r5, r11 // state[0] & state[6] - eor r10, r10, r4 // state[5] ^= (state[6] & state[0]) - orn r4, r7, r8 // ~state[3] | state[2] - eor r9, r9, r4 // state[4] ^= (~state[3] | state[2]) - orn r4, r7, r6 // state[2] | ~state[1] - eor r5, r5, r4 // state[0] ^= (state[2] | ~state[1]) - orn r4, r9, r12 // ~state[7] | state[4] - eor r11, r11, r4 // state[6] ^= (~state[7] | state[4]) - and r4, r8, r12 // state[3] & state[7] - eor r7, r7, r4 // state[2] ^= (state[3] & state[7]) - orr r4, r11, r10 // state[6] | state[5] - eor r6, r6, r4 // state[1] ^= (state[6] | state[5]) - orr r4, r9, r10 // state[4] | state[5] - eor r12, r12, r4 // state[7] ^= (state[4] | state[5]) - orr r4, r5, r6 // state[0] | state[1] - eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) - bx lr - -/****************************************************************************** -* Compute the SKINNY block cipher on a single block in a fixsliced manner. -******************************************************************************/ -@ void skinny128_384(u8* ctext, u8* ctext_bis, const u8* ptext, -@ const u8* ptext_bis, const u32* rtk_1, const u32* rtk_2_3) -.global skinny128_384 -.type skinny128_384,%function -.align 2 -skinny128_384: - push {r0-r12, r14} - sub.w sp, #4 // to store r14 during subroutines - ldm r2, {r5,r7,r9,r11} // load the 2nd block in r6,r8,r10,r12 - ldm r3, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 - movw r2, #0x5555 - movt r2, #0x5555 //r2 <- 0x55555555 - movw r3, #0x3030 - movt r3, #0x3030 //r3 <- 0x30303030 - bl packing - ldrd r0, r1, [sp, #60] // get rtk addr (1st stack argument) - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #512 - bl quadruple_round - bl quadruple_round - bl quadruple_round - bl quadruple_round - sub.w r0, #512 - bl quadruple_round - bl quadruple_round - bl unpacking - ldrd r0, r1, [sp, #4] - add.w sp, #12 - stm r0, {r5, r7, r9, r11} // store the 1st enc block in [r0] - stm r1, {r6, r8, r10, r12} // store the 2nd enc block in [r1] - pop {r2-r12, r14} - bx lr - -/****************************************************************************** -* Compute the SKINNY block cipher on a single block in a fixsliced manner. -******************************************************************************/ -@ void skinny128_384_inv(u8* ptext, u8* ptext_bis, const u8* ctext, -@ const u8* ctext_bis, const u32* rtk_1, const u32* rtk_2_3) -.global skinny128_384_inv -.type skinny128_384_inv,%function -.align 2 -skinny128_384_inv: - push {r0-r12, r14} - sub.w sp, #4 // to store r14 during subroutines - ldm r2, {r5,r7,r9,r11} // load the 2nd block in r6,r8,r10,r12 - ldm r3, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 - movw r2, #0x5555 - movt r2, #0x5555 //r2 <- 0x55555555 - movw r3, #0x3030 - movt r3, #0x3030 //r3 <- 0x30303030 - bl packing - ldrd r0, r1, [sp, #60] // get rtk addr (1st stack argument) - add.w r0, #248 // points to the last rtk1 - add.w r1, #1272 // points to the last rtk2_3 - bl inv_quadruple_round - bl inv_quadruple_round - add.w r0, #512 - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - add.w r0, #512 - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - bl inv_quadruple_round - bl unpacking - ldrd r0, r1, [sp, #4] - add.w sp, #12 - stm r0, {r5, r7, r9, r11} // store the 1st enc block in [r0] - stm r1, {r6, r8, r10, r12} // store the 2nd enc block in [r1] - pop {r2-r12,r14} - bx lr diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinnyaead.h deleted file mode 100644 index e41c204..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/armcortexm_2/skinnyaead.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef SKINNYAEADM1_H_ -#define SKINNYAEADM1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef unsigned long long u64; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) - -#define UPDATE_LFSR(lfsr) ({ \ - feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ - (lfsr) = ((lfsr) << 1) ^ feedback; \ -}) - -#define LE_STR_64(ptr, x) ({ \ - (ptr)[0] = (u8)(x); \ - (ptr)[1] = (u8)((x) >> 8); \ - (ptr)[2] = (u8)((x) >> 16); \ - (ptr)[3] = (u8)((x) >> 24); \ - (ptr)[4] = (u8)((x) >> 32); \ - (ptr)[5] = (u8)((x) >> 40); \ - (ptr)[6] = (u8)((x) >> 48); \ - (ptr)[7] = (u8)((x) >> 56); \ -}) - -//x ^= y with x, y 128-bit blocks -#define XOR_BLOCK(x,y) ({ \ - ((u32*)(x))[0] ^= ((u32*)(y))[0]; \ - ((u32*)(x))[1] ^= ((u32*)(y))[1]; \ - ((u32*)(x))[2] ^= ((u32*)(y))[2]; \ - ((u32*)(x))[3] ^= ((u32*)(y))[3]; \ -}) - -#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/api.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/api.h deleted file mode 100644 index a4aa567..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/crypto_aead.h deleted file mode 100644 index e2ca9b0..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/crypto_aead.h +++ /dev/null @@ -1,18 +0,0 @@ - -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 -); - -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 -); \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/encrypt.c deleted file mode 100644 index 4a1b26e..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/encrypt.c +++ /dev/null @@ -1,197 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). -* -* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include "skinny128.h" -#include "skinnyaead.h" -#include -#include - -/****************************************************************************** -* x ^= y where x, y are 128-bit blocks (16 bytes array). -******************************************************************************/ -static void xor_block(u8 * x, const u8* y) { - for(int i = 0; i < BLOCKBYTES; i++) - x[i] ^= y[i]; -} - -/****************************************************************************** -* Encryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u64 i,lfsr = 1; - u8 feedback; - u32 rtk1[4*16]; - u32 rtk2_3[4*SKINNY128_384_ROUNDS]; - u8 tmp[2*BLOCKBYTES], auth[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - precompute_rtk2_3(rtk2_3, npub, k); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(c + mlen, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (mlen >= BLOCKBYTES) { // while entire blocks to process - LE_STR_64(tmp, lfsr); - precompute_rtk1(rtk1, tmp); // precompute RTK1 given the LFSR - skinny128_384_plus_encrypt(c, m, rtk1, rtk2_3); - xor_block(c + mlen, m); // sum for tag computation - mlen -= BLOCKBYTES; - c += BLOCKBYTES; - m += BLOCKBYTES; - UPDATE_LFSR(lfsr); // update lfsr for next block - } - SET_DOMAIN(tmp, 0x04); // domain for tag computation - if (mlen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); // lfsr for last block - SET_DOMAIN(tmp, 0x01); // domain for padding - for(i = 0; i < mlen; i++) - c[mlen + i] ^= m[i]; // sum for tag computation - c[mlen + i] ^= 0x80; // padding - precompute_rtk1(rtk1, tmp); - skinny128_384_plus_encrypt(auth, auth, rtk1, rtk2_3); - for(i = 0; i < mlen; i++) - c[i] = auth[i] ^ m[i]; // encrypted padded block - c += mlen; - SET_DOMAIN(tmp, 0x05); // domain for tag computation - UPDATE_LFSR(lfsr); - } - LE_STR_64(tmp, lfsr); // lfsr for tag computation - precompute_rtk1(rtk1, tmp); - skinny128_384_plus_encrypt(c, c, rtk1, rtk2_3); // compute the tag - // ----------------- Process the plaintext ----------------- - - // ----------------- Process the associated data ----------------- - lfsr = 1; - SET_DOMAIN(tmp, 0x02); - memset(auth, 0x00, BLOCKBYTES); - while (adlen >= BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - precompute_rtk1(rtk1, tmp); - skinny128_384_plus_encrypt(tmp + BLOCKBYTES, ad, rtk1, rtk2_3); - xor_block(auth, tmp + BLOCKBYTES); - adlen -= BLOCKBYTES; - ad += BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - if (adlen > 0) { - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x03); // domain for padding ad - precompute_rtk1(rtk1, tmp); - memset(tmp, 0x00, BLOCKBYTES); // padding - memcpy(tmp, ad, adlen); // padding - tmp[adlen] ^= 0x80; // padding - skinny128_384_plus_encrypt(tmp, tmp, rtk1, rtk2_3); - xor_block(auth, tmp); - } - xor_block(c, auth); // XOR for tag computation - // ----------------- Process the associated data ----------------- - return 0; -} - -/****************************************************************************** -* Encryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u64 i,lfsr = 1; - u8 feedback; - u32 rtk1[4*16]; - u32 rtk2_3[4*SKINNY128_384_ROUNDS]; - u8 tmp[2*BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - clen -= TAGBYTES; - *mlen = clen; - precompute_rtk2_3(rtk2_3, npub, k); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(sum, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (clen >= BLOCKBYTES) { // while entire blocks to process - LE_STR_64(tmp, lfsr); - precompute_rtk1(rtk1, tmp); // precompute RTK1 given the LFSR - skinny128_384_plus_decrypt(m, c, rtk1, rtk2_3); - xor_block(sum, m); // sum for tag computation - clen -= BLOCKBYTES; - c += BLOCKBYTES; - m += BLOCKBYTES; - UPDATE_LFSR(lfsr); // update LFSR for the next block - } - SET_DOMAIN(tmp, 0x04); // domain for tag computation - if (clen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); // lfsr for last block - SET_DOMAIN(tmp, 0x01); // domain for padding - precompute_rtk1(rtk1, tmp); - skinny128_384_plus_encrypt(auth, auth, rtk1, rtk2_3); - for(i = 0; i < clen; i++) { - m[i] = auth[i] ^ c[i]; // encrypted padded block - sum[i] ^= m[i]; // sum for tag computation - } - sum[i] ^= 0x80; // padding - c += clen; - SET_DOMAIN(tmp, 0x05); // domain for tag computation - UPDATE_LFSR(lfsr); - } - LE_STR_64(tmp, lfsr); // lfsr for tag computation - precompute_rtk1(rtk1, tmp); - skinny128_384_plus_encrypt(sum, sum, rtk1, rtk2_3); // compute the tag - // ----------------- Process the plaintext ----------------- - - // ----------------- Process the associated data ----------------- - lfsr = 1; - SET_DOMAIN(tmp, 0x02); - memset(auth, 0x00, BLOCKBYTES); - while (adlen >= BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - precompute_rtk1(rtk1, tmp); - skinny128_384_plus_encrypt(tmp + BLOCKBYTES, ad, rtk1, rtk2_3); - xor_block(auth, tmp + BLOCKBYTES); - adlen -= BLOCKBYTES; - ad += BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - if (adlen > 0) { - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x03); // domain for padding ad - precompute_rtk1(rtk1, tmp); - memset(tmp, 0x00, BLOCKBYTES); // padding - memcpy(tmp, ad, adlen); // padding - tmp[adlen] ^= 0x80; // padding - skinny128_384_plus_encrypt(tmp, tmp, rtk1, rtk2_3); - xor_block(auth, tmp); - } - xor_block(sum, auth); // XOR for tag computation - feedback = 0; - for(i = 0; i < TAGBYTES; i++) - feedback |= sum[i] ^ c[i]; // constant-time tag verification - return feedback; - // ----------------- Process the associated data ----------------- -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.c deleted file mode 100644 index 2082889..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.c +++ /dev/null @@ -1,190 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of the SKINNY tweakable block ciphers. -* -* This implementation doesn't compute the ShiftRows operation. Some masks and -* shifts are applied during the MixColumns operation so that the proper bits -* are XORed together. Moreover, the row permutation within the MixColumns -* is omitted, as well as the bit permutation at the end of the Sbox. The rows -* are synchronized with the classical after only 4 rounds. Therefore, this -* implementation relies on a "QUADRUPLE_ROUND" routine. -* -* The Sbox computation takes advantage of some symmetry in the 8-bit Sbox to -* turn it into a 4-bit S-box computation. Although the last bit permutation -* within the Sbox is not computed, the bit ordering is synchronized with the -* classical representation after 2 calls. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include -#include "skinny128.h" -#include "tk_schedule.h" - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void mixcolumns_0(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],24) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,30); - tmp = ROR(state[i],16) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,4); - tmp = ROR(state[i],8) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 1 -******************************************************************************/ -void mixcolumns_1(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 2 -******************************************************************************/ -void mixcolumns_2(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],8) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,6); - tmp = ROR(state[i],16) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],24) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,2); - } -} - -/****************************************************************************** -* The MixColumns computation for rounds i such that (i % 4) == 3 -******************************************************************************/ -void mixcolumns_3(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x30303030; - state[i] ^= ROR(tmp,4); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,26); - } -} - -/****************************************************************************** -* The inverse MixColumns operation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void inv_mixcolumns_0(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],8) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,2); - tmp = ROR(state[i],16) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,4); - tmp = ROR(state[i],24) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,30); - } -} - -/****************************************************************************** -* The inverse MixColumns operation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void inv_mixcolumns_1(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,2); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,30); - } -} - -/****************************************************************************** -* The inverse MixColumns operation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void inv_mixcolumns_2(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = ROR(state[i],24) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,2); - tmp = ROR(state[i],16) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],8) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,6); - } -} - -/****************************************************************************** -* The inverse MixColumns operation for rounds i such that (i % 4) == 0 -******************************************************************************/ -void inv_mixcolumns_3(u32* state) { - u32 tmp; - for(int i = 0; i < 4; i++) { - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,26); - tmp = state[i] & 0x30303030; - state[i] ^= ROR(tmp,4); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,30); - } -} - -/****************************************************************************** -* Encryption of a single block without any operation mode using SKINNY-128-384. -* RTK1 and RTK2_3 are given separately to take advantage of the fact that -* TK2 and TK3 remains the same through the entire data encryption/decryption. -******************************************************************************/ -void skinny128_384_plus_encrypt(u8* ctext, const u8* ptext, const u32* rtk1, - const u32* rtk2_3) { - u32 tmp; // used in SWAPMOVE macro - u32 state[4]; // 128-bit state - packing(state, ptext); // from byte to bitsliced representation - QUADRUPLE_ROUND(state, rtk1, rtk2_3); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); - QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); - QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); - QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); - QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); - QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); - QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); - QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); - unpacking(ctext, state); // from bitsliced to byte representation -} - -/****************************************************************************** -* Decryption of a single block without any operation mode using SKINNY-128-384. -* RTK1 and RTK2_3 are given separately to take advantage of the fact that -* TK2 and TK3 remains the same through the entire data encryption/decryption. -******************************************************************************/ -void skinny128_384_plus_decrypt(u8* ctext, const u8* ptext, const u32* rtk1, - const u32* rtk2_3) { - u32 tmp; // used in SWAPMOVE macro - u32 state[4]; // 128-bit state - packing(state, ptext); // from byte to bitsliced representation - INV_QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); - INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); - INV_QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); - INV_QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); - INV_QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); - INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); - INV_QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); - INV_QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); - INV_QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); - INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3); - unpacking(ctext, state); // from bitsliced to byte representation -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.h deleted file mode 100644 index 28316ec..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinny128.h +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ - -#include "tk_schedule.h" - -void skinny128_384_plus_encrypt(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); -void skinny128_384_plus_decrypt(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); - -#define SKINNY128_384_ROUNDS 40 - -#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[0] ^= (rtk1)[0]; \ - state[1] ^= (rtk1)[1]; \ - state[2] ^= (rtk1)[2]; \ - state[3] ^= (rtk1)[3]; \ - state[0] ^= (rtk2_3)[0]; \ - state[1] ^= (rtk2_3)[1]; \ - state[2] ^= (rtk2_3)[2]; \ - state[3] ^= (rtk2_3)[3]; \ - mixcolumns_0(state); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[0] ^= (rtk1)[4]; \ - state[1] ^= (rtk1)[5]; \ - state[2] ^= (rtk1)[6]; \ - state[3] ^= (rtk1)[7]; \ - state[0] ^= (rtk2_3)[4]; \ - state[1] ^= (rtk2_3)[5]; \ - state[2] ^= (rtk2_3)[6]; \ - state[3] ^= (rtk2_3)[7]; \ - mixcolumns_1(state); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[0] ^= (rtk1)[8]; \ - state[1] ^= (rtk1)[9]; \ - state[2] ^= (rtk1)[10]; \ - state[3] ^= (rtk1)[11]; \ - state[0] ^= (rtk2_3)[8]; \ - state[1] ^= (rtk2_3)[9]; \ - state[2] ^= (rtk2_3)[10]; \ - state[3] ^= (rtk2_3)[11]; \ - mixcolumns_2(state); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[0] ^= (rtk1)[12]; \ - state[1] ^= (rtk1)[13]; \ - state[2] ^= (rtk1)[14]; \ - state[3] ^= (rtk1)[15]; \ - state[0] ^= (rtk2_3)[12]; \ - state[1] ^= (rtk2_3)[13]; \ - state[2] ^= (rtk2_3)[14]; \ - state[3] ^= (rtk2_3)[15]; \ - mixcolumns_3(state); \ -}) - -#define INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ - inv_mixcolumns_3(state); \ - state[0] ^= (rtk1)[12]; \ - state[1] ^= (rtk1)[13]; \ - state[2] ^= (rtk1)[14]; \ - state[3] ^= (rtk1)[15]; \ - state[0] ^= (rtk2_3)[12]; \ - state[1] ^= (rtk2_3)[13]; \ - state[2] ^= (rtk2_3)[14]; \ - state[3] ^= (rtk2_3)[15]; \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - inv_mixcolumns_2(state); \ - state[0] ^= (rtk1)[8]; \ - state[1] ^= (rtk1)[9]; \ - state[2] ^= (rtk1)[10]; \ - state[3] ^= (rtk1)[11]; \ - state[0] ^= (rtk2_3)[8]; \ - state[1] ^= (rtk2_3)[9]; \ - state[2] ^= (rtk2_3)[10]; \ - state[3] ^= (rtk2_3)[11]; \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - inv_mixcolumns_1(state); \ - state[0] ^= (rtk1)[4]; \ - state[1] ^= (rtk1)[5]; \ - state[2] ^= (rtk1)[6]; \ - state[3] ^= (rtk1)[7]; \ - state[0] ^= (rtk2_3)[4]; \ - state[1] ^= (rtk2_3)[5]; \ - state[2] ^= (rtk2_3)[6]; \ - state[3] ^= (rtk2_3)[7]; \ - SWAPMOVE(state[1], state[2], 0x55555555, 0); \ - state[3] ^= (state[0] | state[1]); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - inv_mixcolumns_0(state); \ - state[0] ^= (rtk1)[0]; \ - state[1] ^= (rtk1)[1]; \ - state[2] ^= (rtk1)[2]; \ - state[3] ^= (rtk1)[3]; \ - state[0] ^= (rtk2_3)[0]; \ - state[1] ^= (rtk2_3)[1]; \ - state[2] ^= (rtk2_3)[2]; \ - state[3] ^= (rtk2_3)[3]; \ - SWAPMOVE(state[3], state[0], 0x55555555, 0); \ - state[1] ^= (state[2] | state[3]); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ - SWAPMOVE(state[0], state[3], 0x55555555, 1); \ - SWAPMOVE(state[1], state[0], 0x55555555, 1); \ - state[1] ^= ~(state[2] | state[3]); \ - SWAPMOVE(state[3], state[2], 0x55555555, 1); \ - SWAPMOVE(state[2], state[1], 0x55555555, 1); \ - state[3] ^= ~(state[0] | state[1]); \ -}) - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinnyaead.h deleted file mode 100644 index 5500af8..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/skinnyaead.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SKINNYAEADM1_H_ -#define SKINNYAEADM1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef unsigned long long u64; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) - -#define UPDATE_LFSR(lfsr) ({ \ - feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ - (lfsr) = ((lfsr) << 1) ^ feedback; \ -}) - -#define LE_STR_64(ptr, x) ({ \ - (ptr)[0] = (u8)(x); \ - (ptr)[1] = (u8)((x) >> 8); \ - (ptr)[2] = (u8)((x) >> 16); \ - (ptr)[3] = (u8)((x) >> 24); \ - (ptr)[4] = (u8)((x) >> 32); \ - (ptr)[5] = (u8)((x) >> 40); \ - (ptr)[6] = (u8)((x) >> 48); \ - (ptr)[7] = (u8)((x) >> 56); \ -}) - -#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.c deleted file mode 100644 index 1da4277..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.c +++ /dev/null @@ -1,368 +0,0 @@ -/****************************************************************************** -* Implementation of the SKINNY tweakey schedule to match fixslicing. -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include //for memcmp -#include "tk_schedule.h" -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; - -/****************************************************************************** -* The round constants according to the new representation. -******************************************************************************/ -u32 rconst_32_bs[160] = { - 0x00000004, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000100, 0xfffffeff, 0x44000000, 0xfbffffff, 0x00000000, 0x04000000, - 0x00100000, 0x00100000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, - 0x00400000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffbfffff, - 0x01004000, 0xfefffbff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, - 0x00010410, 0xfffffbef, 0x00000054, 0xffffffaf, 0x00000000, 0x00000040, - 0x00000100, 0x00000100, 0x10000140, 0xfffffeff, 0x44000000, 0xfffffeff, - 0x04000000, 0x04000000, 0x00100000, 0x00100000, 0x04000001, 0xfbffffff, - 0x00140000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x00000000, - 0x01401000, 0xfebfffff, 0x01004400, 0xfffffbff, 0x00000000, 0x00000400, - 0x00000010, 0x00000010, 0x00010010, 0xffffffff, 0x00000004, 0xffffffaf, - 0x00000040, 0x00000040, 0x00000100, 0x00000000, 0x10000140, 0xffffffbf, - 0x40000100, 0xfbfffeff, 0x00000000, 0x04000000, 0x00100000, 0x00000000, - 0x04100001, 0xffefffff, 0x00440000, 0xffefffff, 0x00000000, 0x00400000, - 0x01000000, 0x01000000, 0x00401000, 0xffffffff, 0x00004000, 0xfeffffff, - 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00010400, 0xfffffbff, - 0x00000014, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000100, 0xffffffff, 0x40000000, 0xfbffffff, 0x00000000, 0x04000000, - 0x00100000, 0x00000000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, - 0x00000000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffffffff, - 0x00004000, 0xfeffffff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, - 0x00010400, 0xfffffbff, 0x00000014, 0xffffffaf, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x10000140, 0xfffffeff, 0x44000000, 0xffffffff, - 0x00000000, 0x04000000, 0x00100000, 0x00100000, 0x00000001, 0xffefffff, - 0x00440000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x01000000, - 0x01401000, 0xffbfffff, 0x01004000, 0xfffffbff, 0x00000400, 0x00000400, - 0x00000010, 0x00000000, 0x00010010, 0xfffffbff -}; - -/****************************************************************************** -* Pack the input into the bitsliced representation -* 24 28 56 60 88 92 120 124 | ... | 0 4 32 36 64 68 96 100 -* 25 29 57 61 89 93 121 125 | ... | 1 5 33 37 65 69 97 101 -* 26 30 58 62 90 94 122 126 | ... | 2 6 34 38 66 70 98 102 -* 27 31 59 63 91 95 123 127 | ... | 3 7 35 39 67 71 99 103 -******************************************************************************/ -void packing(u32* out, const u8* in) { - u32 tmp; - LE_LOAD(out, in); - LE_LOAD(out + 1, in + 8); - LE_LOAD(out + 2, in + 4); - LE_LOAD(out + 3, in + 12); - SWAPMOVE(out[0], out[0], 0x0a0a0a0a, 3); - SWAPMOVE(out[1], out[1], 0x0a0a0a0a, 3); - SWAPMOVE(out[2], out[2], 0x0a0a0a0a, 3); - SWAPMOVE(out[3], out[3], 0x0a0a0a0a, 3); - SWAPMOVE(out[2], out[0], 0x30303030, 2); - SWAPMOVE(out[1], out[0], 0x0c0c0c0c, 4); - SWAPMOVE(out[3], out[0], 0x03030303, 6); - SWAPMOVE(out[1], out[2], 0x0c0c0c0c, 2); - SWAPMOVE(out[3], out[2], 0x03030303, 4); - SWAPMOVE(out[3], out[1], 0x03030303, 2); -} - -/****************************************************************************** -* Unpack the input to a byte-wise representation -******************************************************************************/ -void unpacking(u8* out, u32 *in) { - u32 tmp; - SWAPMOVE(in[3], in[1], 0x03030303, 2); - SWAPMOVE(in[3], in[2], 0x03030303, 4); - SWAPMOVE(in[1], in[2], 0x0c0c0c0c, 2); - SWAPMOVE(in[3], in[0], 0x03030303, 6); - SWAPMOVE(in[1], in[0], 0x0c0c0c0c, 4); - SWAPMOVE(in[2], in[0], 0x30303030, 2); - SWAPMOVE(in[0], in[0], 0x0a0a0a0a, 3); - SWAPMOVE(in[1], in[1], 0x0a0a0a0a, 3); - SWAPMOVE(in[2], in[2], 0x0a0a0a0a, 3); - SWAPMOVE(in[3], in[3], 0x0a0a0a0a, 3); - LE_STORE(out, in[0]); - LE_STORE(out + 8, in[1]); - LE_STORE(out + 4, in[2]); - LE_STORE(out + 12, in[3]); -} - -/****************************************************************************** -* 0 4 1 5 -* 1 5 ---> 2 6 -* 2 6 3 7 -* 3 7 4 0 -******************************************************************************/ -void lfsr2_bs(u32* tk) { - u32 tmp; - tmp = tk[0] ^ (tk[2] & 0xaaaaaaaa); - tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); - tk[0] = tk[1]; - tk[1] = tk[2]; - tk[2] = tk[3]; - tk[3] = tmp; -} - -/****************************************************************************** -* 0 4 7 3 -* 1 5 ---> 0 4 -* 2 6 1 5 -* 3 7 2 6 -******************************************************************************/ -void lfsr3_bs(u32* tk) { - u32 tmp; - tmp = tk[3] ^ ((tk[1] & 0xaaaaaaaa) >> 1); - tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); - tk[3] = tk[2]; - tk[2] = tk[1]; - tk[1] = tk[0]; - tk[0] = tmp; -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, twice -******************************************************************************/ -void permute_tk_2(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,14) & 0xcc00cc00; - tk[i] |= (tmp & 0x000000ff) << 16; - tk[i] |= (tmp & 0xcc000000)>> 2; - tk[i] |= (tmp & 0x0033cc00) >> 8; - tk[i] |= (tmp & 0x00cc0000) >>18; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 4 times -******************************************************************************/ -void permute_tk_4(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,22) & 0xcc0000cc; - tk[i] |= ROR(tmp,16) & 0x3300cc00; - tk[i] |= ROR(tmp, 24) & 0x00cc3300; - tk[i] |= (tmp & 0x00cc00cc) >> 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 6 times -******************************************************************************/ -void permute_tk_6(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,6) & 0xcccc0000; - tk[i] |= ROR(tmp,24) & 0x330000cc; - tk[i] |= ROR(tmp,10) & 0x3333; - tk[i] |= (tmp & 0xcc) << 14; - tk[i] |= (tmp & 0x3300) << 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 8 times -******************************************************************************/ -void permute_tk_8(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0xcc000033; - tk[i] |= ROR(tmp,8) & 0x33cc0000; - tk[i] |= ROR(tmp,26) & 0x00333300; - tk[i] |= (tmp & 0x00333300) >> 6; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 10 times -******************************************************************************/ -void permute_tk_10(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc330000; - tk[i] |= ROR(tmp,26) & 0x33000033; - tk[i] |= ROR(tmp,22) & 0x00cccc00; - tk[i] |= (tmp & 0x00330000) >> 14; - tk[i] |= (tmp & 0xcc00) >> 2; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 12 times -******************************************************************************/ -void permute_tk_12(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc33; - tk[i] |= ROR(tmp,30) & 0x00cc00cc; - tk[i] |= ROR(tmp,10) & 0x33330000; - tk[i] |= ROR(tmp,16) & 0xcc003300; - } -} - -/****************************************************************************** -* Apply the permutation in a bitsliced manner, 14 times -******************************************************************************/ -void permute_tk_14(u32* tk) { - u32 tmp; - for(int i =0; i < 4; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0x0033cc00; - tk[i] |= ROR(tmp,14) & 0x00cc0000; - tk[i] |= ROR(tmp,30) & 0xcc000000; - tk[i] |= ROR(tmp,16) & 0x000000ff; - tk[i] |= ROR(tmp,18) & 0x33003300; - } -} - -/****************************************************************************** -* Precompute all LFSRs on TK2 -******************************************************************************/ -void precompute_lfsr_tk2(u32* tk, const u8* key, const int rounds) { - u32 tk2[4]; - packing(tk2, key); - memcpy(tk, tk2, 16); - for(int i = 0 ; i < rounds; i+=2) { - lfsr2_bs(tk2); - memcpy(tk+i*4+4, tk2, 16); - } -} - -/****************************************************************************** -* Precompute all LFSRs on TK3 -******************************************************************************/ -void precompute_lfsr_tk3(u32* tk, const u8* key, const int rounds) { - u32 tk3[4]; - packing(tk3, key); - tk[0] ^= tk3[0]; - tk[1] ^= tk3[1]; - tk[2] ^= tk3[2]; - tk[3] ^= tk3[3]; - for(int i = 0 ; i < rounds; i+=2) { - lfsr3_bs(tk3); - tk[i*4+4] ^= tk3[0]; - tk[i*4+5] ^= tk3[1]; - tk[i*4+6] ^= tk3[2]; - tk[i*4+7] ^= tk3[3]; - } -} - -/****************************************************************************** -* XOR TK with TK1 before applying the permutations. -* The key is then rearranged to match the barrel shiftrows representation. -******************************************************************************/ -void permute_tk(u32* tk, const u8* key, const int rounds) { - u32 test; - u32 tk1[4], tmp[4]; - packing(tk1, key); - memcpy(tmp, tk, 16); - tmp[0] ^= tk1[0]; - tmp[1] ^= tk1[1]; - tmp[2] ^= tk1[2]; - tmp[3] ^= tk1[3]; - for(int i = 0 ; i < rounds; i += 8) { - test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P - tk[i*4] = tmp[2] & 0xf0f0f0f0; - tk[i*4+1] = tmp[3] & 0xf0f0f0f0; - tk[i*4+2] = tmp[0] & 0xf0f0f0f0; - tk[i*4+3] = tmp[1] & 0xf0f0f0f0; - memcpy(tmp, tk+i*4+4, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_2(tmp); // applies P^2 - else - permute_tk_10(tmp); // applies P^10 - tk[i*4+4] = ROR(tmp[0],26) & 0xc3c3c3c3; - tk[i*4+5] = ROR(tmp[1],26) & 0xc3c3c3c3; - tk[i*4+6] = ROR(tmp[2],26) & 0xc3c3c3c3; - tk[i*4+7] = ROR(tmp[3],26) & 0xc3c3c3c3; - tk[i*4+8] = ROR(tmp[2],28) & 0x03030303; - tk[i*4+8] |= ROR(tmp[2],12) & 0x0c0c0c0c; - tk[i*4+9] = ROR(tmp[3],28) & 0x03030303; - tk[i*4+9] |= ROR(tmp[3],12) & 0x0c0c0c0c; - tk[i*4+10] = ROR(tmp[0],28) & 0x03030303; - tk[i*4+10] |= ROR(tmp[0],12) & 0x0c0c0c0c; - tk[i*4+11] = ROR(tmp[1],28) & 0x03030303; - tk[i*4+11] |= ROR(tmp[1],12) & 0x0c0c0c0c; - memcpy(tmp, tk+i*4+12, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_4(tmp); // applies P^4 - else - permute_tk_12(tmp); // applies P^12 - for(int j = 0; j < 4; j++) { - tk[i*4+12+j] = ROR(tmp[j],14) & 0x30303030; - tk[i*4+12+j] |= ROR(tmp[j],6) & 0x0c0c0c0c; - } - tk[i*4+16] = ROR(tmp[2], 16) & 0xf0f0f0f0; - tk[i*4+17] = ROR(tmp[3], 16) & 0xf0f0f0f0; - tk[i*4+18] = ROR(tmp[0], 16) & 0xf0f0f0f0; - tk[i*4+19] = ROR(tmp[1], 16) & 0xf0f0f0f0; - memcpy(tmp, tk+i*4+20, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_6(tmp); // applies P^6 - else - permute_tk_14(tmp); // applies P^14 - tk[i*4+20] = ROR(tmp[0], 10) & 0xc3c3c3c3; - tk[i*4+21] = ROR(tmp[1], 10) & 0xc3c3c3c3; - tk[i*4+22] = ROR(tmp[2], 10) & 0xc3c3c3c3; - tk[i*4+23] = ROR(tmp[3], 10) & 0xc3c3c3c3; - tk[i*4+24] = ROR(tmp[2],12) & 0x03030303; - tk[i*4+24] |= ROR(tmp[2],28) & 0x0c0c0c0c; - tk[i*4+25] = ROR(tmp[3],12) & 0x03030303; - tk[i*4+25] |= ROR(tmp[3],28) & 0x0c0c0c0c; - tk[i*4+26] = ROR(tmp[0],12) & 0x03030303; - tk[i*4+26] |= ROR(tmp[0],28) & 0x0c0c0c0c; - tk[i*4+27] = ROR(tmp[1],12) & 0x03030303; - tk[i*4+27] |= ROR(tmp[1],28) & 0x0c0c0c0c; - memcpy(tmp, tk+i*4+28, 16); - XOR_BLOCKS(tmp, tk1); - if (test) - permute_tk_8(tmp); // applies P^8 - for(int j = 0; j < 4; j++) { - tk[i*4+28+j] = ROR(tmp[j],30) & 0x30303030; - tk[i*4+28+j] |= ROR(tmp[j],22) & 0x0c0c0c0c; - } - if (test && (i+8 < rounds)) { //only if next loop iteration - tk[i*4+32] = tmp[2] & 0xf0f0f0f0; - tk[i*4+33] = tmp[3] & 0xf0f0f0f0; - tk[i*4+34] = tmp[0] & 0xf0f0f0f0; - tk[i*4+35] = tmp[1] & 0xf0f0f0f0; - } - } -} - -/****************************************************************************** -* Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst. -******************************************************************************/ -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3) { - memset(rtk, 0x00, 16*SKINNY128_384_ROUNDS); - precompute_lfsr_tk2(rtk, tk2, SKINNY128_384_ROUNDS); - precompute_lfsr_tk3(rtk, tk3, SKINNY128_384_ROUNDS); - permute_tk(rtk, (u8*)(rtk+8), SKINNY128_384_ROUNDS); // rtk+8 is NULL - for(int i = 0; i < SKINNY128_384_ROUNDS; i++) { // add rconsts - for(int j = 0; j < 4; j++) - rtk[i*4+j] ^= rconst_32_bs[i*4+j]; - } -} - -/****************************************************************************** -* Precompute RTK1. -******************************************************************************/ -void precompute_rtk1(u32* rtk1, const u8* tk1) { - memset(rtk1, 0x00, 16*16); - permute_tk(rtk1, tk1, 16); -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.h deleted file mode 100644 index 5615cbd..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_1/tk_schedule.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef TK_SCHEDULE_H_ -#define TK_SCHEDULE_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -void packing(u32* out, const u8* in); -void unpacking(u8* out, u32 *in); -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3); -void precompute_rtk1(u32* rtk1, const u8* tk1); - -#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) - -#define XOR_BLOCKS(x,y) ({ \ - (x)[0] ^= (y)[0]; \ - (x)[1] ^= (y)[1]; \ - (x)[2] ^= (y)[2]; \ - (x)[3] ^= (y)[3]; \ -}) - -#define SWAPMOVE(a, b, mask, n) ({ \ - tmp = (b ^ (a >> n)) & mask; \ - b ^= tmp; \ - a ^= (tmp << n); \ -}) - -#define LE_LOAD(x, y) \ - *(x) = (((u32)(y)[3] << 24) | \ - ((u32)(y)[2] << 16) | \ - ((u32)(y)[1] << 8) | \ - (y)[0]); - -#define LE_STORE(x, y) \ - (x)[0] = (y) & 0xff; \ - (x)[1] = ((y) >> 8) & 0xff; \ - (x)[2] = ((y) >> 16) & 0xff; \ - (x)[3] = (y) >> 24; - -#endif // TK_SCHEDULE_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/api.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/api.h deleted file mode 100644 index a4aa567..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#define CRYPTO_KEYBYTES 16 -#define CRYPTO_NSECBYTES 0 -#define CRYPTO_NPUBBYTES 16 -#define CRYPTO_ABYTES 16 -#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/crypto_aead.h deleted file mode 100644 index e2ca9b0..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/crypto_aead.h +++ /dev/null @@ -1,18 +0,0 @@ - -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 -); - -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 -); \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/encrypt.c deleted file mode 100644 index fa46817..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/encrypt.c +++ /dev/null @@ -1,293 +0,0 @@ -/****************************************************************************** -* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). -* -* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include "skinny128.h" -#include "skinnyaead.h" -#include -#include - -/****************************************************************************** -* x ^= y where x, y are 128-bit blocks (16 bytes array). -******************************************************************************/ -static void xor_block(u8 * x, const u8* y) { - for(int i = 0; i < BLOCKBYTES; i++) - x[i] ^= y[i]; -} - -/****************************************************************************** -* Process the associated data. Common to SKINNY-AEAD-M1 encrypt and decrypt -* functions. -******************************************************************************/ -static void skinny_aead_m1_auth(u8* auth, u8* c, u8* tag, tweakey* tk, - u64 mlen, const u8* ad, u64 adlen) { - u64 lfsr = 1; - u8 feedback; - u8 tmp[2*BLOCKBYTES]; - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - SET_DOMAIN(tmp, 0x02); - while (adlen >= 2*BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x02); - precompute_rtk1(tk->rtk1, tmp, tmp+BLOCKBYTES); - skinny128_384_plus_encrypt(tmp, tmp+BLOCKBYTES, ad, ad+BLOCKBYTES, *tk); - xor_block(auth, tmp); - xor_block(auth, tmp + BLOCKBYTES); - adlen -= 2*BLOCKBYTES; - ad += 2*BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - if (adlen > BLOCKBYTES) { // pad and process 2 blocs in // - LE_STR_64(tmp, lfsr); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); - SET_DOMAIN(tmp + BLOCKBYTES, 0x03); // domain for padding ad - precompute_rtk1(tk->rtk1, tmp, tmp + BLOCKBYTES); - adlen -= BLOCKBYTES; - memset(tmp, 0x00, BLOCKBYTES); - memcpy(tmp, ad + BLOCKBYTES, adlen); - tmp[adlen] ^= 0x80; // padding - skinny128_384_plus_encrypt(tmp + BLOCKBYTES, tmp, ad, tmp, *tk); - xor_block(auth, tmp); - xor_block(auth, tmp + BLOCKBYTES); - } else if (adlen == BLOCKBYTES) { - LE_STR_64(tmp, lfsr); - if (mlen == 0) { // if tag has *NOT* been calculated yet - precompute_rtk1(tk->rtk1, tmp, tag); // compute the tag - skinny128_384_plus_encrypt(auth, c, ad, c, *tk); - } else { // if tag has been calculated yet - precompute_rtk1(tk->rtk1, tmp, tmp); // process last ad block - skinny128_384_plus_encrypt(auth, auth, ad, ad, *tk); - } - } else if (adlen > 0) { - LE_STR_64(tmp, lfsr); - SET_DOMAIN(tmp, 0x03); // domain for padding ad - memset(tmp + BLOCKBYTES, 0x00, BLOCKBYTES); // padding - memcpy(tmp + BLOCKBYTES, ad, adlen); // padding - tmp[BLOCKBYTES + adlen] ^= 0x80; // padding - if (mlen == 0) { // if tag has *NOT* been calculated yet - precompute_rtk1(tk->rtk1, tmp, tag); // compute the tag - skinny128_384_plus_encrypt(auth, c, tmp + BLOCKBYTES, c, *tk); - } else { // if tag has been calculated yet - precompute_rtk1(tk->rtk1, tmp, tmp); // process last ad block - skinny128_384_plus_encrypt(auth, auth, tmp + BLOCKBYTES, tmp + BLOCKBYTES, *tk); - } - } -} - -/****************************************************************************** -* Encryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u64 i,lfsr = 1; - u8 feedback; - tweakey tk; - u8 tmp[2*BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES]; - (void)nsec; - - // ----------------- Initialization ----------------- - *clen = mlen + TAGBYTES; - precompute_rtk2_3(tk.rtk2_3, npub, k, SKINNY128_384_ROUNDS); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(tag, 0x00, BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(c + mlen, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (mlen >= 2*BLOCKBYTES) { // process 2 blocks in // - LE_STR_64(tmp, lfsr); // lfsr for 1st block - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for 2nd block - precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384_plus_encrypt(c, c + BLOCKBYTES, m, m + BLOCKBYTES, tk); - xor_block(c + mlen, m); // sum for tag computation - xor_block(c + mlen, m + BLOCKBYTES); // sum for tag computation - mlen -= 2*BLOCKBYTES; - c += 2*BLOCKBYTES; - m += 2*BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - SET_DOMAIN(tag, 0x04); // domain for tag computation - if (mlen > BLOCKBYTES) { // pad and process 2 blocs in // - LE_STR_64(tmp, lfsr); // lfsr for 1st block - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for 2nd block - SET_DOMAIN(tmp + BLOCKBYTES, 0x01); // domain for padding m - precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384_plus_encrypt(c, auth, m, auth, tk); - xor_block(c + mlen, m); - for(i = 0; i < mlen - BLOCKBYTES; i++) { - c[BLOCKBYTES + i] = auth[i] ^ m[BLOCKBYTES + i]; - c[mlen + i] ^= m[BLOCKBYTES + i]; - } - c[mlen + i] ^= 0x80; // padding - SET_DOMAIN(tag, 0x05); // domain for tag computation - m += mlen; - c += mlen; - mlen = 0; - UPDATE_LFSR(lfsr); - } else if (mlen == BLOCKBYTES) { // last block is full - LE_STR_64(tmp, lfsr); // lfsr for last full block - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for tag computation - SET_DOMAIN(tmp + BLOCKBYTES, 0x04); // domain for tag computation - xor_block(c + mlen, m); // sum for tag computation - precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384_plus_encrypt(c, c + mlen, m, c + mlen, tk); - c += BLOCKBYTES; - } else if (mlen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); // lfsr for last block - SET_DOMAIN(tmp, 0x01); // domain for padding - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for tag computation - SET_DOMAIN(tmp + BLOCKBYTES, 0x05); // domain for tag computation - for(i = 0; i < mlen; i++) // sum for tag computation - c[mlen + i] ^= m[i]; // sum for tag computation - c[mlen + i] ^= 0x80; // padding - precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384_plus_encrypt(auth, c + mlen, auth, c + mlen, tk); - for(i = 0; i < mlen; i++) - c[i] = auth[i] ^ m[i]; // encrypted padded block - c += mlen; - } - if (mlen == 0) { // if tag has *NOT* been calculated yet - LE_STR_64(tag, lfsr); // lfsr for tag computation - if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { //if all AD can be processed in // - precompute_rtk1(tk.rtk1, tag, tag); - skinny128_384_plus_encrypt(c, c, c, c, tk); // compute the tag - } - } - // ----------------- Process the plaintext ----------------- - - // ----------------- Process the associated data ----------------- - skinny_aead_m1_auth(auth, c, tag, &tk, mlen, ad, adlen); - xor_block(c, auth); - // ----------------- Process the associated data ----------------- - - return 0; -} - - -/****************************************************************************** -* Decryption and authentication using SKINNY-AEAD-M1 -******************************************************************************/ -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) { - u64 i,lfsr = 1; - u8 feedback; - tweakey tk; - u8 tmp[2*BLOCKBYTES]; - u8 sum[BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES]; - (void)nsec; - - if (clen < TAGBYTES) - return -1; - - // ----------------- Initialization ----------------- - clen -= TAGBYTES; - *mlen = clen; - precompute_rtk2_3(tk.rtk2_3, npub, k, SKINNY128_384_ROUNDS); - memset(tmp, 0x00, 2*BLOCKBYTES); - memset(tag, 0x00, BLOCKBYTES); - memset(auth, 0x00, BLOCKBYTES); - memset(sum, 0x00, BLOCKBYTES); - // ----------------- Initialization ----------------- - - // ----------------- Process the plaintext ----------------- - while (clen >= 2*BLOCKBYTES) { // process 2 blocks in // - LE_STR_64(tmp, lfsr); // lfsr for 1st block - UPDATE_LFSR(lfsr); - LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for 2nd block - precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); - skinny128_384_plus_decrypt(m, m + BLOCKBYTES, c, c + BLOCKBYTES, tk); - xor_block(sum, m); // sum for tag computation - xor_block(sum, m + BLOCKBYTES); // sum for tag computation - clen -= 2*BLOCKBYTES; - c += 2*BLOCKBYTES; - m += 2*BLOCKBYTES; - UPDATE_LFSR(lfsr); - } - SET_DOMAIN(tag, 0x04); // domain for tag computation - if (clen > BLOCKBYTES) { // pad and process 2 blocs in // - LE_STR_64(tmp, lfsr); // lfsr for 1st block - precompute_rtk1(tk.rtk1, tmp, tmp); - skinny128_384_plus_decrypt(m, m, c, c, tk); - xor_block(sum, m); - UPDATE_LFSR(lfsr); - LE_STR_64(tmp, lfsr); // lfsr for 2nd block - SET_DOMAIN(tmp, 0x01); // domain for padding m - precompute_rtk1(tk.rtk1, tmp, tmp); - skinny128_384_plus_encrypt(auth, auth, auth, auth, tk); - for(i = 0; i < clen - BLOCKBYTES; i++) { - m[BLOCKBYTES + i] = auth[i] ^ c[BLOCKBYTES + i]; - sum[i] ^= m[BLOCKBYTES + i]; - } - sum[i] ^= 0x80; // padding - SET_DOMAIN(tag, 0x05); // domain for tag computation - m += clen; - c += clen; - clen = 0; - UPDATE_LFSR(lfsr); - } else if (clen == BLOCKBYTES) { // last block is full - LE_STR_64(tmp, lfsr); // lfsr for last full block - precompute_rtk1(tk.rtk1, tmp, tmp); - skinny128_384_plus_decrypt(m, m, c, c, tk); - xor_block(sum, m); // sum for tag computation - SET_DOMAIN(tag, 0x04); // domain for tag computation - UPDATE_LFSR(lfsr); - c += BLOCKBYTES; - clen = 0; - } else if (clen > 0) { // last block is partial - LE_STR_64(tmp, lfsr); // lfsr for last block - SET_DOMAIN(tmp, 0x01); // domain for padding - precompute_rtk1(tk.rtk1, tmp, tmp); - skinny128_384_plus_encrypt(auth, auth, auth, auth, tk); - for(i = 0; i < clen; i++) { - m[i] = auth[i] ^ c[i]; // encrypted padded block - sum[i] ^= m[i]; // sum for tag computation - } - sum[i] ^= 0x80; // padding - SET_DOMAIN(tag, 0x05); // domain for tag computation - UPDATE_LFSR(lfsr); - m += clen; - c += clen; - clen = 0; - } - if (clen == 0) { // if tag has *NOT* been calculated yet - LE_STR_64(tag, lfsr); // lfsr for tag computation - if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { - precompute_rtk1(tk.rtk1, tag, tag); //if AD can be processed in // - skinny128_384_plus_encrypt(sum, sum, sum, sum, tk); // compute the tag - } - } - - // ----------------- Process the associated data ----------------- - skinny_aead_m1_auth(auth, sum, tag, &tk, clen, ad, adlen); - xor_block(sum, auth); - feedback = 0; - for(i = 0; i < TAGBYTES; i++) - feedback |= sum[i] ^ c[i]; // constant-time tag verification - return feedback; - // ----------------- Process the associated data ----------------- -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.c deleted file mode 100644 index ed1e619..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.c +++ /dev/null @@ -1,202 +0,0 @@ -/****************************************************************************** -* Fixsliced implementation of SKINNY-128-384. -* Two blocks are processed in parallel. -* -* This implementation doesn't compute the ShiftRows operation. Some masks and -* shifts are applied during the MixColumns operation so that the proper bits -* are XORed together. Moreover, the row permutation within the MixColumns -* is omitted, as well as the bit permutation at the end of the Sbox. The rows -* are synchronized with the classical after only 4 rounds. However, the Sbox -* permutation requires 8 rounds for a synchronization. To limit the impact -* on code size, we compute the permutation every 4 rounds. Therefore, this -* implementation relies on a "QUADRUPLE_ROUND" routine. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -******************************************************************************/ -#include -#include -#include "skinny128.h" -#include "tk_schedule.h" - -/**************************************************************************** -* The MixColumns operation for rounds i such that (i % 4) == 0. -****************************************************************************/ -void mixcolumns_0(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = ROR(state[i],24) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,30); - tmp = ROR(state[i],16) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,4); - tmp = ROR(state[i],8) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,2); - } -} - -/**************************************************************************** -* The MixColumns operation for rounds i such that (i % 4) == 1. -****************************************************************************/ -void mixcolumns_1(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,2); - } -} - -/**************************************************************************** -* The MixColumns operation for rounds i such that (i % 4) == 2. -****************************************************************************/ -void mixcolumns_2(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = ROR(state[i],8) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,6); - tmp = ROR(state[i],16) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],24) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,2); - } -} - -/**************************************************************************** -* The MixColumns operation for rounds i such that (i % 4) == 3. -****************************************************************************/ -void mixcolumns_3(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,30); - tmp = state[i] & 0x30303030; - state[i] ^= ROR(tmp,4); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,26); - } -} - -/**************************************************************************** -* The inverse MixColumns oepration for rounds i such that (i % 4) == 0 -****************************************************************************/ -void inv_mixcolumns_0(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = ROR(state[i],8) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,2); - tmp = ROR(state[i],16) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,4); - tmp = ROR(state[i],24) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,30); - } -} - -/**************************************************************************** -* The inverse MixColumns oepration for rounds i such that (i % 4) == 1 -****************************************************************************/ -void inv_mixcolumns_1(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,2); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],16) & 0x30303030; - state[i] ^= ROR(tmp,30); - } -} - -/**************************************************************************** -* The inverse MixColumns oepration for rounds i such that (i % 4) == 2 -****************************************************************************/ -void inv_mixcolumns_2(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = ROR(state[i],24) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,2); - tmp = ROR(state[i],16) & 0x0c0c0c0c; - state[i] ^= ROR(tmp,28); - tmp = ROR(state[i],8) & 0xc0c0c0c0; - state[i] ^= ROR(tmp,6); - } -} - -/**************************************************************************** -* The inverse MixColumns oepration for rounds i such that (i % 4) == 3 -****************************************************************************/ -void inv_mixcolumns_3(u32* state) { - u32 tmp; - for(int i = 0; i < 8; i++) { - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,26); - tmp = state[i] & 0x30303030; - state[i] ^= ROR(tmp,4); - tmp = state[i] & 0x03030303; - state[i] ^= ROR(tmp,30); - } -} - -/**************************************************************************** -* Adds the tweakey (including the round constants) to the state. -****************************************************************************/ -void add_tweakey(u32* state, const u32* rtk1, const u32* rtk2_3) { - state[0] ^= rtk1[0] ^ rtk2_3[0]; - state[1] ^= rtk1[1] ^ rtk2_3[1]; - state[2] ^= rtk1[2] ^ rtk2_3[2]; - state[3] ^= rtk1[3] ^ rtk2_3[3]; - state[4] ^= rtk1[4] ^ rtk2_3[4]; - state[5] ^= rtk1[5] ^ rtk2_3[5]; - state[6] ^= rtk1[6] ^ rtk2_3[6]; - state[7] ^= rtk1[7] ^ rtk2_3[7]; -} - -/**************************************************************************** -* Encryption of 2 blocks in parallel using SKINNY-128-384. -* The input parameters 'rtk1' and 'rtk2_3' are given seperately to avoid -* unnecessary recomputations of the entire tk schedule during SKINNY-AEAD-M1. -****************************************************************************/ -void skinny128_384_plus_encrypt(u8* ctext, u8* ctext_bis, const u8* ptext, - const u8* ptext_bis, const tweakey tk) { - u32 state[8]; - packing(state, ptext, ptext_bis); - QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3); - QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+32); - QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+64); - QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+96); - QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+128); - QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+160); - QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+192); - QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+224); - QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+256); - QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+288); - unpacking(ctext, ctext_bis, state); -} - -/**************************************************************************** -* Decryption of 2 blocks in parallel using SKINNY-128-384. -* The input parameters 'rtk1' and 'rtk2_3' are given seperately to avoid -* unnecessary recomputations of the entire tk schedule during SKINNY-AEAD-M1. -****************************************************************************/ -void skinny128_384_plus_decrypt(u8* ptext, u8* ptext_bis, const u8* ctext, - const u8* ctext_bis, const tweakey tk) { - u32 state[8]; - packing(state, ctext, ctext_bis); - INV_QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+288); - INV_QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+256); - INV_QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+224); - INV_QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+192); - INV_QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+160); - INV_QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+128); - INV_QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+96); - INV_QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+64); - INV_QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+32); - INV_QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3); - unpacking(ptext, ptext_bis, state); -} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.h deleted file mode 100644 index 01dd271..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinny128.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef SKINNY128_H_ -#define SKINNY128_H_ -#include "tk_schedule.h" - -void skinny128_384_plus_encrypt(u8* ctext, u8* ctext_bis, const u8* ptext, - const u8* ptext_bis, const tweakey tk); - -void skinny128_384_plus_decrypt(u8* ctext, u8* ctext_bis, const u8* ptext, - const u8* ptext_bis, const tweakey tk); - -#define SKINNY128_384_ROUNDS 40 - -#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) - -#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ - state[3] ^= (state[0] | state[1]); \ - state[7] ^= (state[4] | state[5]); \ - state[1] ^= (state[6] | state[5]); \ - state[2] ^= (state[3] & state[7]); \ - state[6] ^= (~state[7] | state[4]); \ - state[0] ^= (state[2] | ~state[1]); \ - state[4] ^= (~state[3] | state[2]); \ - state[5] ^= (state[6] & state[0]); \ - add_tweakey(state, rtk1, rtk2_3); \ - mixcolumns_0(state); \ - state[4] ^= (state[2] | state[3]); \ - state[5] ^= (state[6] | state[1]); \ - state[3] ^= (state[0] | state[1]); \ - state[7] ^= (state[4] & state[5]); \ - state[0] ^= (~state[5] | state[6]); \ - state[2] ^= (state[7] | ~state[3]); \ - state[6] ^= (~state[4] | state[7]); \ - state[1] ^= (state[0] & state[2]); \ - add_tweakey(state, rtk1+8, rtk2_3+8); \ - mixcolumns_1(state); \ - state[6] ^= (state[7] | state[4]); \ - state[1] ^= (state[0] | state[3]); \ - state[4] ^= (state[2] | state[3]); \ - state[5] ^= (state[6] & state[1]); \ - state[2] ^= (~state[1] | state[0]); \ - state[7] ^= (state[5] | ~state[4]); \ - state[0] ^= (~state[6] | state[5]); \ - state[3] ^= (state[2] & state[7]); \ - add_tweakey(state, rtk1+16, rtk2_3+16); \ - mixcolumns_2(state); \ - state[0] ^= (state[5] | state[6]); \ - state[3] ^= (state[2] | state[4]); \ - state[6] ^= (state[7] | state[4]); \ - state[1] ^= (state[0] & state[3]); \ - state[7] ^= (~state[3] | state[2]); \ - state[5] ^= (state[1] | ~state[6]); \ - state[2] ^= (~state[0] | state[1]); \ - state[4] ^= (state[7] & state[5]); \ - add_tweakey(state, rtk1+24, rtk2_3+24); \ - mixcolumns_3(state); \ - state[0] ^= state[1]; \ - state[1] ^= state[0]; \ - state[0] ^= state[1]; \ - state[2] ^= state[3]; \ - state[3] ^= state[2]; \ - state[2] ^= state[3]; \ - state[4] ^= state[7]; \ - state[7] ^= state[4]; \ - state[4] ^= state[7]; \ - state[5] ^= state[6]; \ - state[6] ^= state[5]; \ - state[5] ^= state[6]; \ -}) - -#define INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ - state[0] ^= state[1]; \ - state[1] ^= state[0]; \ - state[0] ^= state[1]; \ - state[2] ^= state[3]; \ - state[3] ^= state[2]; \ - state[2] ^= state[3]; \ - state[4] ^= state[7]; \ - state[7] ^= state[4]; \ - state[4] ^= state[7]; \ - state[5] ^= state[6]; \ - state[6] ^= state[5]; \ - state[5] ^= state[6]; \ - inv_mixcolumns_3(state); \ - add_tweakey(state, rtk1+24, rtk2_3+24); \ - state[4] ^= (state[7] & state[5]); \ - state[2] ^= (~state[0] | state[1]); \ - state[5] ^= (state[1] | ~state[6]); \ - state[7] ^= (~state[3] | state[2]); \ - state[1] ^= (state[0] & state[3]); \ - state[6] ^= (state[7] | state[4]); \ - state[3] ^= (state[2] | state[4]); \ - state[0] ^= (state[5] | state[6]); \ - inv_mixcolumns_2(state); \ - add_tweakey(state, rtk1+16, rtk2_3+16); \ - state[3] ^= (state[2] & state[7]); \ - state[0] ^= (~state[6] | state[5]); \ - state[7] ^= (state[5] | ~state[4]); \ - state[2] ^= (~state[1] | state[0]); \ - state[5] ^= (state[6] & state[1]); \ - state[4] ^= (state[2] | state[3]); \ - state[1] ^= (state[0] | state[3]); \ - state[6] ^= (state[7] | state[4]); \ - inv_mixcolumns_1(state); \ - add_tweakey(state, rtk1+8, rtk2_3+8); \ - state[1] ^= (state[0] & state[2]); \ - state[6] ^= (~state[4] | state[7]); \ - state[2] ^= (state[7] | ~state[3]); \ - state[0] ^= (~state[5] | state[6]); \ - state[7] ^= (state[4] & state[5]); \ - state[3] ^= (state[0] | state[1]); \ - state[5] ^= (state[6] | state[1]); \ - state[4] ^= (state[2] | state[3]); \ - inv_mixcolumns_0(state); \ - add_tweakey(state, rtk1, rtk2_3); \ - state[5] ^= (state[6] & state[0]); \ - state[4] ^= (~state[3] | state[2]); \ - state[0] ^= (state[2] | ~state[1]); \ - state[6] ^= (~state[7] | state[4]); \ - state[2] ^= (state[3] & state[7]); \ - state[1] ^= (state[6] | state[5]); \ - state[7] ^= (state[4] | state[5]); \ - state[3] ^= (state[0] | state[1]); \ -}) - -#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinnyaead.h deleted file mode 100644 index 5500af8..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/skinnyaead.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SKINNYAEADM1_H_ -#define SKINNYAEADM1_H_ - -#include "skinny128.h" - -typedef unsigned char u8; -typedef unsigned int u32; -typedef unsigned long long u64; - -#define TAGBYTES 16 -#define KEYBYTES 16 -#define BLOCKBYTES 16 - -#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) - -#define UPDATE_LFSR(lfsr) ({ \ - feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ - (lfsr) = ((lfsr) << 1) ^ feedback; \ -}) - -#define LE_STR_64(ptr, x) ({ \ - (ptr)[0] = (u8)(x); \ - (ptr)[1] = (u8)((x) >> 8); \ - (ptr)[2] = (u8)((x) >> 16); \ - (ptr)[3] = (u8)((x) >> 24); \ - (ptr)[4] = (u8)((x) >> 32); \ - (ptr)[5] = (u8)((x) >> 40); \ - (ptr)[6] = (u8)((x) >> 48); \ - (ptr)[7] = (u8)((x) >> 56); \ -}) - -#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.c b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.c deleted file mode 100644 index ae7a820..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.c +++ /dev/null @@ -1,464 +0,0 @@ -/******************************************************************************* -* Implementation of the tweakey schedule according to the fixsliced -* representation. -* -* For more details, see the paper at: https:// -* -* @author Alexandre Adomnicai, Nanyang Technological University, -* alexandre.adomnicai@ntu.edu.sg -* -* @date May 2020 -*******************************************************************************/ -#include -#include -#include "tk_schedule.h" - -typedef unsigned char u8; -typedef unsigned int u32; - -/**************************************************************************** -* The round constants according to the fixsliced representation. -****************************************************************************/ -u32 rconst_32_bs[320] = { - 0xfffffff3, 0xffffffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x000000c0, 0xffffffff, 0xffffffff, - 0xffffffff, 0x00000300, 0xcffffcff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xffffffff, 0x0c000000, - 0xf3ffffff, 0x00000000, 0xffffffff, 0x33ffffff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00300000, 0xffcffffc, 0xffcfffff, 0xffcfffff, - 0xff33ffff, 0xff3fffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x00f00000, 0xff3fffff, 0xffffffff, - 0xfcffffff, 0x00c00000, 0xfc3fcfff, 0xfcffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xfffff3ff, 0x03000c00, - 0xfffff3ff, 0x00000000, 0xffffffff, 0xfcff3fff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00000c30, 0xfffcf3cf, 0xffffffff, 0xffffffcf, - 0xffffff03, 0xffffff3f, 0x00000000, 0xffffffff, - 0xffffffff, 0x000000f0, 0xffffffff, 0xffffffff, - 0xfffffcff, 0x00000300, 0xcffffc3f, 0xfffffcff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xf3ffffff, 0x00000300, - 0xf3ffffff, 0x00000000, 0xffffffff, 0x33ffffff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x0c000000, 0xf3fffffc, 0xffcfffff, 0xffcfffff, - 0xffc3ffff, 0xffffffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x00f00000, 0xff3fffff, 0xffffffff, - 0xffffffff, 0x03c00000, 0xfc3fcfff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000c00, - 0xfffff3ff, 0x00000000, 0xffffffff, 0xfcff33ff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00000000, 0xfffcffcf, 0xffffffcf, 0xffffffcf, - 0xfffffff3, 0xffffff3f, 0x00000000, 0xffffffff, - 0xffffffff, 0x000000f0, 0xffffff3f, 0xffffffff, - 0xfffffcff, 0x000000c0, 0xcffffc3f, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xffffffff, 0x0c000300, - 0xf3ffffff, 0x00000000, 0xffffffff, 0x3ffffcff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00300000, 0xf3cffffc, 0xffffffff, 0xffcfffff, - 0xff33ffff, 0xff3fffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x00300000, 0xffffffff, 0xffffffff, - 0xfcffffff, 0x00000000, 0xff3fcfff, 0xfcffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xfffff3ff, 0x03000000, - 0xffffffff, 0x00000000, 0xffffffff, 0xffff3fff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00000c00, 0xfffcf3ff, 0xffffffff, 0xffffffff, - 0xffffffc3, 0xffffffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x000000c0, 0xffffffff, 0xffffffff, - 0xffffffff, 0x00000000, 0xcffffcff, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xffffffff, 0x0c000000, - 0xf3ffffff, 0x00000000, 0xffffffff, 0x3fffffff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00300000, 0xffcffffc, 0xffffffff, 0xffcfffff, - 0xff33ffff, 0xff3fffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x00f00000, 0xffffffff, 0xffffffff, - 0xfcffffff, 0x00000000, 0xfc3fcfff, 0xfcffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xfffff3ff, 0x03000000, - 0xfffff3ff, 0x00000000, 0xffffffff, 0xffff3fff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00000c00, 0xfffcf3ff, 0xffffffff, 0xffffffcf, - 0xffffffc3, 0xffffffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x000000f0, 0xffffffff, 0xffffffff, - 0xffffffff, 0x00000300, 0xcffffc3f, 0xffffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xf3ffffff, 0x00000000, 0xffffffff, 0x33ffffff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00300000, 0xfffffffc, 0xffcfffff, 0xffcfffff, - 0xff33ffff, 0xffffffff, 0x00000000, 0xffffffff, - 0xffffffff, 0x00f00000, 0xff3fffff, 0xffffffff, - 0xffffffff, 0x00c00000, 0xfc3fcfff, 0xfcffffff, - 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, - 0xffffffff, 0xffffffff, 0xfffff3ff, 0x00000c00, - 0xfffff3ff, 0x00000000, 0xffffffff, 0xfcff3fff, - 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, - 0x00000c00, 0xfffcffcf, 0xffffffff, 0xffffffcf -}; - -/**************************************************************************** -* Packs 2 input blocks B, B' into the state using a bitsliced representation. -* Once the packing process is complete, the 256-bit state consists of 8 -* 32-bit word and the input blocks bit positioning is as follows: -* -* 24 24' 56 56' 88 88' 120 120' | ... | 0 0' 32 32' 64 64' 96 96' -* 25 25' 57 57' 89 89' 121 121' | ... | 1 1' 33 33' 65 65' 97 97' -* 26 26' 58 58' 90 90' 122 122' | ... | 2 2' 34 34' 66 66' 98 98' -* 27 27' 59 59' 91 91' 123 123' | ... | 3 3' 35 35' 67 67' 99 99' -* 28 28' 60 60' 92 92' 124 124' | ... | 4 4' 36 36' 68 68' 100 100' -* 29 29' 61 61' 93 93' 125 125' | ... | 5 5' 37 37' 69 69' 101 101' -* 30 30' 62 62' 94 94' 126 126' | ... | 6 6' 38 38' 70 70' 102 102' -* 31 31' 63 63' 95 95' 127 127' | ... | 7 7' 39 39' 71 71' 103 103' -****************************************************************************/ -void packing(u32* out, const u8* block0, const u8* block1) { - u32 tmp; - LE_LOAD(out, block0); - LE_LOAD(out + 1, block1); - LE_LOAD(out + 2, block0 + 4); - LE_LOAD(out + 3, block1 + 4); - LE_LOAD(out + 4, block0 + 8); - LE_LOAD(out + 5, block1 + 8); - LE_LOAD(out + 6, block0 + 12); - LE_LOAD(out + 7, block1 + 12); - SWAPMOVE(out[1], out[0], 0x55555555, 1); - SWAPMOVE(out[3], out[2], 0x55555555, 1); - SWAPMOVE(out[5], out[4], 0x55555555, 1); - SWAPMOVE(out[7], out[6], 0x55555555, 1); - SWAPMOVE(out[2], out[0], 0x30303030, 2); - SWAPMOVE(out[4], out[0], 0x0c0c0c0c, 4); - SWAPMOVE(out[6], out[0], 0x03030303, 6); - SWAPMOVE(out[3], out[1], 0x30303030, 2); - SWAPMOVE(out[5], out[1], 0x0c0c0c0c, 4); - SWAPMOVE(out[7], out[1], 0x03030303, 6); - SWAPMOVE(out[4], out[2], 0x0c0c0c0c, 2); - SWAPMOVE(out[6], out[2], 0x03030303, 4); - SWAPMOVE(out[5], out[3], 0x0c0c0c0c, 2); - SWAPMOVE(out[7], out[3], 0x03030303, 4); - SWAPMOVE(out[6], out[4], 0x03030303, 2); - SWAPMOVE(out[7], out[5], 0x03030303, 2); -} - -/**************************************************************************** -* Unacks the 256-bit state into the 32-byte output byte array. -* Once the unpacking process is complete, the byte ordering within the output -* array is as follows: -* -* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -* 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 -****************************************************************************/ -void unpacking(u8* out, u8* out_bis, u32 *in) { - u32 tmp; - SWAPMOVE(in[6], in[4], 0x03030303, 2); - SWAPMOVE(in[7], in[5], 0x03030303, 2); - SWAPMOVE(in[5], in[3], 0x0c0c0c0c, 2); - SWAPMOVE(in[7], in[3], 0x03030303, 4); - SWAPMOVE(in[4], in[2], 0x0c0c0c0c, 2); - SWAPMOVE(in[6], in[2], 0x03030303, 4); - SWAPMOVE(in[7], in[1], 0x03030303, 6); - SWAPMOVE(in[5], in[1], 0x0c0c0c0c, 4); - SWAPMOVE(in[3], in[1], 0x30303030, 2); - SWAPMOVE(in[6], in[0], 0x03030303, 6); - SWAPMOVE(in[4], in[0], 0x0c0c0c0c, 4); - SWAPMOVE(in[2], in[0], 0x30303030, 2); - SWAPMOVE(in[1], in[0], 0x55555555, 1); - SWAPMOVE(in[3], in[2], 0x55555555, 1); - SWAPMOVE(in[5], in[4], 0x55555555, 1); - SWAPMOVE(in[7], in[6], 0x55555555, 1); - LE_STORE(out, in[0]); - LE_STORE(out_bis, in[1]); - LE_STORE(out + 4, in[2]); - LE_STORE(out_bis + 4, in[3]); - LE_STORE(out + 8, in[4]); - LE_STORE(out_bis + 8, in[5]); - LE_STORE(out + 12, in[6]); - LE_STORE(out_bis + 12, in[7]); -} - - -//Apply the permutation in a bitsliced manner, twice -void permute_tk_2(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,14) & 0xcc00cc00; - tk[i] |= (tmp & 0x000000ff) << 16; - tk[i] |= (tmp & 0xcc000000)>> 2; - tk[i] |= (tmp & 0x0033cc00) >> 8; - tk[i] |= (tmp & 0x00cc0000) >>18; - } -} - -//Apply the permutation in a bitsliced manner, 4 times -void permute_tk_4(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,22) & 0xcc0000cc; - tk[i] |= ROR(tmp,16) & 0x3300cc00; - tk[i] |= ROR(tmp, 24) & 0x00cc3300; - tk[i] |= (tmp & 0x00cc00cc) >> 2; - } -} - -//Apply the permutation in a bitsliced manner, 6 times -void permute_tk_6(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,6) & 0xcccc0000; - tk[i] |= ROR(tmp,24) & 0x330000cc; - tk[i] |= ROR(tmp,10) & 0x3333; - tk[i] |= (tmp & 0xcc) << 14; - tk[i] |= (tmp & 0x3300) << 2; - } -} - -//Apply the permutation in a bitsliced manner, 8 times -void permute_tk_8(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0xcc000033; - tk[i] |= ROR(tmp,8) & 0x33cc0000; - tk[i] |= ROR(tmp,26) & 0x00333300; - tk[i] |= (tmp & 0x00333300) >> 6; - } -} - -//Apply the permutation in a bitsliced manner, 10 times -void permute_tk_10(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc330000; - tk[i] |= ROR(tmp,26) & 0x33000033; - tk[i] |= ROR(tmp,22) & 0x00cccc00; - tk[i] |= (tmp & 0x00330000) >> 14; - tk[i] |= (tmp & 0xcc00) >> 2; - } -} - -//Apply the permutation in a bitsliced manner, 12 times -void permute_tk_12(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,8) & 0xcc33; - tk[i] |= ROR(tmp,30) & 0x00cc00cc; - tk[i] |= ROR(tmp,10) & 0x33330000; - tk[i] |= ROR(tmp,16) & 0xcc003300; - } -} - -//Apply the permutation in a bitsliced manner, 14 times -void permute_tk_14(u32* tk) { - u32 tmp; - for(int i =0; i < 8; i++) { - tmp = tk[i]; - tk[i] = ROR(tmp,24) & 0x0033cc00; //red - tk[i] |= ROR(tmp,14) & 0x00cc0000; //green - tk[i] |= ROR(tmp,30) & 0xcc000000; //blue - tk[i] |= ROR(tmp,16) & 0x000000ff; //yellow - tk[i] |= ROR(tmp,18) & 0x33003300; //purp - } -} - -void precompute_lfsr_tk2(u32* tk, const u8* tk2_0, - const u8* tk2_1, const int rounds) { - u32 tmp; - u32 state[8]; - packing(state, tk2_0, tk2_1); - memcpy(tk, state, 32); - for(int i = 0 ; i < rounds; i+=2) { - LFSR2(state); - memcpy(tk+i*8+8, state, 32); - } -} - -void precompute_lfsr_tk3(u32* tk, const u8* tk3_0, - const u8* tk3_1, const int rounds) { - u32 tmp; - u32 state[8]; - packing(state, tk3_0, tk3_1); - for(int i = 0; i < 8; i++) - tk[i] ^= state[i]; - for(int i = 0 ; i < rounds; i+=2) { - LFSR3(state); - tk[i*8+8] ^= state[0]; - tk[i*8+9] ^= state[1]; - tk[i*8+10] ^= state[2]; - tk[i*8+11] ^= state[3]; - tk[i*8+12] ^= state[4]; - tk[i*8+13] ^= state[5]; - tk[i*8+14] ^= state[6]; - tk[i*8+15] ^= state[7]; - } -} - -/**************************************************************************** -* XOR with TK with TK1 before applying the permutations. -* The key is then rearranged to match the fixsliced representation. -****************************************************************************/ -void permute_tk(u32* tk, const u8* tk1_0, const u8* tk1_1, const int rounds) { - u32 test; - u32 tk1[8], tmp[8]; - packing(tk1, tk1_0, tk1_1); - memcpy(tmp, tk, 32); - XOR_BLOCK(tmp, tk1); - tk[0] = tmp[6] & 0xf0f0f0f0; //mask to extract rows 1&2 only - tk[1] = tmp[5] & 0xf0f0f0f0; - tk[2] = tmp[0] & 0xf0f0f0f0; - tk[3] = tmp[1] & 0xf0f0f0f0; - tk[4] = tmp[3] & 0xf0f0f0f0; - tk[5] = tmp[7] & 0xf0f0f0f0; - tk[6] = tmp[4] & 0xf0f0f0f0; - tk[7] = tmp[2] & 0xf0f0f0f0; - for(int i = 0 ; i < rounds; i+=8) { - test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P - memcpy(tmp, tk+i*8+8, 32); - XOR_BLOCK(tmp, tk1); - if (test) - permute_tk_2(tmp); // applies P^2 - else - permute_tk_10(tmp); // applies P^10 - tk[i*8+8] = ROR(tmp[4],26) & 0xc3c3c3c3; //mask to extract rows 1&2 only - tk[i*8+9] = ROR(tmp[7],26) & 0xc3c3c3c3; //rotation to match fixslicing - tk[i*8+10] = ROR(tmp[6],26) & 0xc3c3c3c3; - tk[i*8+11] = ROR(tmp[5],26) & 0xc3c3c3c3; - tk[i*8+12] = ROR(tmp[1],26) & 0xc3c3c3c3; - tk[i*8+13] = ROR(tmp[2],26) & 0xc3c3c3c3; - tk[i*8+14] = ROR(tmp[3],26) & 0xc3c3c3c3; - tk[i*8+15] = ROR(tmp[0],26) & 0xc3c3c3c3; - tk[i*8+16] = ROR(tmp[3],28) & 0x03030303; //mask to extract rows 1&2 only - tk[i*8+16] |= ROR(tmp[3],12) & 0x0c0c0c0c; //rotation to match fixslicing - tk[i*8+17] = ROR(tmp[2],28) & 0x03030303; - tk[i*8+17] |= ROR(tmp[2],12) & 0x0c0c0c0c; - tk[i*8+18] = ROR(tmp[4],28) & 0x03030303; - tk[i*8+18] |= ROR(tmp[4],12) & 0x0c0c0c0c; - tk[i*8+19] = ROR(tmp[7],28) & 0x03030303; - tk[i*8+19] |= ROR(tmp[7],12) & 0x0c0c0c0c; - tk[i*8+20] = ROR(tmp[5],28) & 0x03030303; - tk[i*8+20] |= ROR(tmp[5],12) & 0x0c0c0c0c; - tk[i*8+21] = ROR(tmp[0],28) & 0x03030303; - tk[i*8+21] |= ROR(tmp[0],12) & 0x0c0c0c0c; - tk[i*8+22] = ROR(tmp[1],28) & 0x03030303; - tk[i*8+22] |= ROR(tmp[1],12) & 0x0c0c0c0c; - tk[i*8+23] = ROR(tmp[6],28) & 0x03030303; - tk[i*8+23] |= ROR(tmp[6],12) & 0x0c0c0c0c; - memcpy(tmp, tk+i*8+24, 32); - XOR_BLOCK(tmp, tk1); - if (test) - permute_tk_4(tmp); // applies P^4 - else - permute_tk_12(tmp); // applies P^12 - tk[i*8+24] = ROR(tmp[1],14) & 0x30303030; //mask to extract rows 1&2 only - tk[i*8+24] |= ROR(tmp[1],6) & 0x0c0c0c0c; //rotation to match fixslicing - tk[i*8+25] = ROR(tmp[0],14) & 0x30303030; - tk[i*8+25] |= ROR(tmp[0],6) & 0x0c0c0c0c; - tk[i*8+26] = ROR(tmp[3],14) & 0x30303030; - tk[i*8+26] |= ROR(tmp[3],6) & 0x0c0c0c0c; - tk[i*8+27] = ROR(tmp[2],14) & 0x30303030; - tk[i*8+27] |= ROR(tmp[2],6) & 0x0c0c0c0c; - tk[i*8+28] = ROR(tmp[7],14) & 0x30303030; - tk[i*8+28] |= ROR(tmp[7],6) & 0x0c0c0c0c; - tk[i*8+29] = ROR(tmp[6],14) & 0x30303030; - tk[i*8+29] |= ROR(tmp[6],6) & 0x0c0c0c0c; - tk[i*8+30] = ROR(tmp[5],14) & 0x30303030; - tk[i*8+30] |= ROR(tmp[5],6) & 0x0c0c0c0c; - tk[i*8+31] = ROR(tmp[4],14) & 0x30303030; - tk[i*8+31] |= ROR(tmp[4],6) & 0x0c0c0c0c; - tk[i*8+32] = ROR(tmp[6],16) & 0xf0f0f0f0; //mask to extract rows 1&2 only - tk[i*8+33] = ROR(tmp[5],16) & 0xf0f0f0f0; //rotation to match fixslicing - tk[i*8+34] = ROR(tmp[0],16) & 0xf0f0f0f0; - tk[i*8+35] = ROR(tmp[1],16) & 0xf0f0f0f0; - tk[i*8+36] = ROR(tmp[3],16) & 0xf0f0f0f0; - tk[i*8+37] = ROR(tmp[7],16) & 0xf0f0f0f0; - tk[i*8+38] = ROR(tmp[4],16) & 0xf0f0f0f0; - tk[i*8+39] = ROR(tmp[2],16) & 0xf0f0f0f0; - memcpy(tmp, tk+i*8+40, 32); - XOR_BLOCK(tmp, tk1); - if (test) - permute_tk_6(tmp); // applies P^6 - else - permute_tk_14(tmp); // applies P^14 - tk[i*8+40] = ROR(tmp[4],10) & 0xc3c3c3c3; //mask to extract rows 1&2 only - tk[i*8+41] = ROR(tmp[7],10) & 0xc3c3c3c3; //rotation to match fixslicing - tk[i*8+42] = ROR(tmp[6],10) & 0xc3c3c3c3; - tk[i*8+43] = ROR(tmp[5],10) & 0xc3c3c3c3; - tk[i*8+44] = ROR(tmp[1],10) & 0xc3c3c3c3; - tk[i*8+45] = ROR(tmp[2],10) & 0xc3c3c3c3; - tk[i*8+46] = ROR(tmp[3],10) & 0xc3c3c3c3; - tk[i*8+47] = ROR(tmp[0],10) & 0xc3c3c3c3; - tk[i*8+48] = ROR(tmp[3],12) & 0x03030303; //mask to extract rows 1&2 only - tk[i*8+48] |= ROR(tmp[3],28) & 0x0c0c0c0c; //rotation to match fixslicing - tk[i*8+49] = ROR(tmp[2],12) & 0x03030303; - tk[i*8+49] |= ROR(tmp[2],28) & 0x0c0c0c0c; - tk[i*8+50] = ROR(tmp[4],12) & 0x03030303; - tk[i*8+50] |= ROR(tmp[4],28) & 0x0c0c0c0c; - tk[i*8+51] = ROR(tmp[7],12) & 0x03030303; - tk[i*8+51] |= ROR(tmp[7],28) & 0x0c0c0c0c; - tk[i*8+52] = ROR(tmp[5],12) & 0x03030303; - tk[i*8+52] |= ROR(tmp[5],28) & 0x0c0c0c0c; - tk[i*8+53] = ROR(tmp[0],12) & 0x03030303; - tk[i*8+53] |= ROR(tmp[0],28) & 0x0c0c0c0c; - tk[i*8+54] = ROR(tmp[1],12) & 0x03030303; - tk[i*8+54] |= ROR(tmp[1],28) & 0x0c0c0c0c; - tk[i*8+55] = ROR(tmp[6],12) & 0x03030303; - tk[i*8+55] |= ROR(tmp[6],28) & 0x0c0c0c0c; - memcpy(tmp, tk+i*8+56, 32); - XOR_BLOCK(tmp, tk1); - if (test) - permute_tk_8(tmp); // applies P^8 - tk[i*8+56] = ROR(tmp[1],30) & 0x30303030; //mask to extract rows 1&2 only - tk[i*8+56] |= ROR(tmp[1],22) & 0x0c0c0c0c; //rotation to match fixslicing - tk[i*8+57] = ROR(tmp[0],30) & 0x30303030; - tk[i*8+57] |= ROR(tmp[0],22) & 0x0c0c0c0c; - tk[i*8+58] = ROR(tmp[3],30) & 0x30303030; - tk[i*8+58] |= ROR(tmp[3],22) & 0x0c0c0c0c; - tk[i*8+59] = ROR(tmp[2],30) & 0x30303030; - tk[i*8+59] |= ROR(tmp[2],22) & 0x0c0c0c0c; - tk[i*8+60] = ROR(tmp[7],30) & 0x30303030; - tk[i*8+60] |= ROR(tmp[7],22) & 0x0c0c0c0c; - tk[i*8+61] = ROR(tmp[6],30) & 0x30303030; - tk[i*8+61] |= ROR(tmp[6],22) & 0x0c0c0c0c; - tk[i*8+62] = ROR(tmp[5],30) & 0x30303030; - tk[i*8+62] |= ROR(tmp[5],22) & 0x0c0c0c0c; - tk[i*8+63] = ROR(tmp[4],30) & 0x30303030; - tk[i*8+63] |= ROR(tmp[4],22) & 0x0c0c0c0c; - //if (test && (i+8 < rounds)) { //only if next loop iteration - if (i+8 < rounds) { //only if next loop iteration - tk[i*8+64] = tmp[6] & 0xf0f0f0f0; //mask to extract rows 1&2 only - tk[i*8+65] = tmp[5] & 0xf0f0f0f0; - tk[i*8+66] = tmp[0] & 0xf0f0f0f0; - tk[i*8+67] = tmp[1] & 0xf0f0f0f0; - tk[i*8+68] = tmp[3] & 0xf0f0f0f0; - tk[i*8+69] = tmp[7] & 0xf0f0f0f0; - tk[i*8+70] = tmp[4] & 0xf0f0f0f0; - tk[i*8+71] = tmp[2] & 0xf0f0f0f0; - } - } -} - -//Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3, int rounds) { - memset(rtk, 0x00, 32*rounds); - precompute_lfsr_tk2(rtk, tk2, tk2, rounds); - precompute_lfsr_tk3(rtk, tk3, tk3, rounds); - permute_tk(rtk, (u8*)(rtk+16), (u8*)(rtk+16), rounds); // rtk+16 is NULL - for(int i = 0; i < rounds; i++) { // add rconsts - for(int j = 0; j < 8; j++) - rtk[i*8+j] ^= rconst_32_bs[i*8+j]; - } -} - -//Precompute TK1 -void precompute_rtk1(u32* rtk1, const u8* tk1, const u8* tk1_bis) { - memset(rtk1, 0x00, 32*16); - permute_tk(rtk1, tk1, tk1_bis, 16); -} diff --git a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.h b/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.h deleted file mode 100644 index 29a2ddb..0000000 --- a/skinny/Implementations/crypto_aead/skinnyaeadm1+v11/opt32_2/tk_schedule.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef TK_SCHEDULE_BS_H_ -#define TK_SCHEDULE_BS_H_ - -typedef unsigned char u8; -typedef unsigned int u32; - -typedef struct { - u32 rtk1[8*16]; - u32 rtk2_3[8*40]; -} tweakey; - -void packing(u32* out, const u8* block0, const u8* block1); -void unpacking(u8* out, u8* out_bis, u32 *in); -void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3, int rounds); -void precompute_rtk1(u32* rtk1, const u8* tk1, const u8* tk1_bis); - -#define LFSR2(tk) ({ \ - tmp = (tk)[0] ^ (tk)[2]; \ - (tk)[0] = (tk)[1]; \ - (tk)[1] = (tk)[2]; \ - (tk)[2] = (tk)[3]; \ - (tk)[3] = (tk)[4]; \ - (tk)[4] = (tk)[5]; \ - (tk)[5] = (tk)[6]; \ - (tk)[6] = (tk)[7]; \ - (tk)[7] = tmp; \ -}) - -#define LFSR3(tk) ({ \ - tmp = (tk)[7] ^ (tk)[1]; \ - (tk)[7] = (tk)[6]; \ - (tk)[6] = (tk)[5]; \ - (tk)[5] = (tk)[4]; \ - (tk)[4] = (tk)[3]; \ - (tk)[3] = (tk)[2]; \ - (tk)[2] = (tk)[1]; \ - (tk)[1] = (tk)[0]; \ - (tk)[0] = tmp; \ -}) - -#define XOR_BLOCK(x,y) ({ \ - (x)[0] ^= (y)[0]; \ - (x)[1] ^= (y)[1]; \ - (x)[2] ^= (y)[2]; \ - (x)[3] ^= (y)[3]; \ - (x)[4] ^= (y)[4]; \ - (x)[5] ^= (y)[5]; \ - (x)[6] ^= (y)[6]; \ - (x)[7] ^= (y)[7]; \ -}) - -#define SWAPMOVE(a, b, mask, n) ({ \ - tmp = (b ^ (a >> n)) & mask; \ - b ^= tmp; \ - a ^= (tmp << n); \ -}) - -#define LE_LOAD(x, y) \ - *(x) = (((u32)(y)[3] << 24) | \ - ((u32)(y)[2] << 16) | \ - ((u32)(y)[1] << 8) | \ - (y)[0]); - -#define LE_STORE(x, y) \ - (x)[0] = (y) & 0xff; \ - (x)[1] = ((y) >> 8) & 0xff; \ - (x)[2] = ((y) >> 16) & 0xff; \ - (x)[3] = (y) >> 24; - -#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) - -#endif // TK_SCHEDULE_BS_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/LWC_AEAD_KAT_128_128.txt b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/LWC_AEAD_KAT_128_128.txt new file mode 100644 index 0000000..5fa5db6 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/LWC_AEAD_KAT_128_128.txt @@ -0,0 +1,7623 @@ +Count = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = +CT = E352FC5FB5767FF5F2FF5495A8C8218F + +Count = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00 +CT = 63B6A50B4454EE32B3F177545D3A7C02 + +Count = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001 +CT = B43884D3BEDF17E676DA12608E582579 + +Count = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102 +CT = 97E0C5EFB8700DC8DD09962C13AE7728 + +Count = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203 +CT = 7D9CC11F45E213AD15CB347795EFCF90 + +Count = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001020304 +CT = E3BAEE04A820B4FD6B83F964F82BFA0C + +Count = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405 +CT = 314EE05FED3F602B463C7CEAB87A3397 + +Count = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203040506 +CT = 113F54E053619D5CDAA0A4C6B8975517 + +Count = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 0001020304050607 +CT = 1A0167242F9FD4BEDB4C35B724D72EF7 + +Count = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708 +CT = A3D0DFE59034892439C7E8283A46930B + +Count = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 00010203040506070809 +CT = 9F9FECF4AF18004CE65A58491011A47B + +Count = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A +CT = AC3AC5EBBC6B527E7B8D7606F78855FA + +Count = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B +CT = 0806B1B83A4F572CEDF082C701845672 + +Count = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C +CT = 7F7416FC91D101A70695F86A9A11AD92 + +Count = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D +CT = EA2AFEEA5839643270FA2DF5AB2D279C + +Count = 16 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E +CT = 66D9DD131F71F4E055E4F225F689FA23 + +Count = 17 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F +CT = AC347EAB569CE203301EECC167429023 + +Count = 18 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 0863E98295015DEE519269B45BDC0439 + +Count = 19 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 262E7D4B2F1AAEC4470B50F07C197964 + +Count = 20 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = ADEEC6D17668879A0768C0D257CD7B75 + +Count = 21 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 745B96471F00E0893CB872AAC4C2A312 + +Count = 22 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CBA2BBDD4AE518F8443AB08C8EFF7000 + +Count = 23 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = DD94D78FFC82B3131B57B085570CE819 + +Count = 24 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 63A5F205432F97E57E4F8A1D6E960620 + +Count = 25 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 14AC341D41D4BC9F67B2FC4972533C4C + +Count = 26 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 3B43198E32AD9749B7C393A114D1A07D + +Count = 27 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 3ED270F9A6485546F3AB9214A98363A1 + +Count = 28 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = B21F1DD80113930E1624135BC71BFA10 + +Count = 29 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = A80EB58C2E5DC05989E92EE41250CAC7 + +Count = 30 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 30EE65EDAC193AFD2DEFCA0BD3F47BDC + +Count = 31 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 8EF7EBA974302BF1E3455144A8440C2D + +Count = 32 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = D4860DC90AA69B0F7A1657E68907B6F3 + +Count = 33 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = BAF9A7EC2A3FE825E199136101316FA0 + +Count = 34 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = +CT = E5854125E62C76F605F9C9FCF34D599072 + +Count = 35 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00 +CT = E505A57CB2DD5467C2B8C7DF32B8ABCDFF + +Count = 36 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001 +CT = E5D22B5D6A27DF9E167DECBA066BC99484 + +Count = 37 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102 +CT = E5F1F31C5621708438D63F3E4AF63FC6D5 + +Count = 38 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203 +CT = E51B8F18A6DCE29A5D1EFD9C11707E7E6D + +Count = 39 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001020304 +CT = E585A937BD31203D0D60B551021DBA4BF1 + +Count = 40 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405 +CT = E5575D39E6743FE9DB4D0AD48C5DEB826A + +Count = 41 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203040506 +CT = E5772C8D59CA6114ACD1960CA05D06E4EA + +Count = 42 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 0001020304050607 +CT = E57C12BE9DB69F5D4ED07A9DD1C1469F0A + +Count = 43 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708 +CT = E5C5C3065C093400D432F1404EDFD722F6 + +Count = 44 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 00010203040506070809 +CT = E5F98C354D361889BCED6CF02FF5801586 + +Count = 45 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A +CT = E5CA291C52256BDB8E70BBDE601219E407 + +Count = 46 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B +CT = E56E156801A34FDEDCE6C62AA1E415E78F + +Count = 47 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C +CT = E51967CF4508D188570DA3500C7F801C6F + +Count = 48 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D +CT = E58C392753C139EDC27BCC85934EBC9661 + +Count = 49 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E +CT = E500CA04AA86717D105ED25A4313184BDE + +Count = 50 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F +CT = E5CA27A712CF9C6BF33B2844A782D321DE + +Count = 51 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E56E70303B0C01D41E5AA4C1D2BE4DB5C4 + +Count = 52 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E5403DA4F2B61A27344C3DF8969988C899 + +Count = 53 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E5CBFD1F68EF680E6A0C5E68B4B25CCA88 + +Count = 54 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E512484FFE86006979378EDACC215312EF + +Count = 55 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E5ADB16264D3E591084F0C18EA6B6EC1FD + +Count = 56 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E5BB870E3665823AE3106118E3B29D59E4 + +Count = 57 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E505B62BBCDA2F1E157579227B8B07B7DD + +Count = 58 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E572BFEDA4D8D4356F6C84542F97C28DB1 + +Count = 59 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E55D50C037ABAD1EB9BCF53BC7F1401180 + +Count = 60 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E558C1A9403F48DCB6F89D3A724C12D25C + +Count = 61 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E5D40CC46198131AFE1D12BB3D228A4BED + +Count = 62 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E5CE1D6C35B75D49A982DF8682F7C17B3A + +Count = 63 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E556FDBC543519B30D26D9626D3665CA21 + +Count = 64 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E5E8E43210ED30A201E873F9224DD5BDD0 + +Count = 65 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E5B295D47093A612FF7120FF806C96070E + +Count = 66 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E5DCEA7E55B33F61D5EAAFBB07E4A0DE5D + +Count = 67 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = +CT = E529A8C59E92614F212E2E6D0E8ABFC6B87C + +Count = 68 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00 +CT = E5292821C7C6906DB0E96F632D4B4A34E5F1 + +Count = 69 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001 +CT = E529FFAFE61E6AE6493DAA48487F9956BC8A + +Count = 70 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102 +CT = E529DC77A7226C495313019BCC3304A0EEDB + +Count = 71 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203 +CT = E529360BA3D291DB4D76C9596E6882E15663 + +Count = 72 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001020304 +CT = E529A82D8CC97C19EA26B711A37BEF2563FF + +Count = 73 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405 +CT = E5297AD9829239063EF09AAE26F5AF74AA64 + +Count = 74 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203040506 +CT = E5295AA8362D8758C3870632FED9AF99CCE4 + +Count = 75 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 0001020304050607 +CT = E529519605E9FBA68A6507DE6FA833D9B704 + +Count = 76 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708 +CT = E529E847BD28440DD7FFE555B2372D480AF8 + +Count = 77 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 00010203040506070809 +CT = E529D4088E397B215E973AC80256071F3D88 + +Count = 78 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A +CT = E529E7ADA72668520CA5A71F2C19E086CC09 + +Count = 79 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B +CT = E5294391D375EE7609F73162D8D8168ACF81 + +Count = 80 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C +CT = E52934E3743145E85F7CDA07A2758D1F3461 + +Count = 81 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D +CT = E529A1BD9C278C003AE9AC6877EABC23BE6F + +Count = 82 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E +CT = E5292D4EBFDECB48AA3B8976A83AE18763D0 + +Count = 83 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529E7A31C6682A5BCD8EC8CB6DE704C09D0 + +Count = 84 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E52943F48B4F413803358D0033AB4CD29DCA + +Count = 85 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E5296DB91F86FB23F01F9B990AEF6B17E097 + +Count = 86 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529E679A41CA251D941DBFA9ACD40C3E286 + +Count = 87 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E5293FCCF48ACB39BE52E02A28B5D3CC3AE1 + +Count = 88 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E5298035D9109EDC462398A8EA9399F1E9F3 + +Count = 89 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E5299603B54228BBEDC8C7C5EA9A400271EA + +Count = 90 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529283290C89716C93EA2DDD00279989FD3 + +Count = 91 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E5295F3B56D095EDE244BB20A656655DA5BF + +Count = 92 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E52970D47B43E694C9926B51C9BE03DF398E + +Count = 93 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E5297545123472710B9D2F39C80BBE8DFA52 + +Count = 94 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529F9887F15D52ACDD5CAB64944D01563E3 + +Count = 95 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529E399D741FA649E82557B74FB055E5334 + +Count = 96 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E5297B79072078206426F17D9014C4FAE22F + +Count = 97 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529C5608964A009752A3FD70B5BBF4A95DE + +Count = 98 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E5299F116F04DE9FC5D4A6840DF99E092F00 + +Count = 99 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529F16EC521FE06B6FE3D0B497E163FF653 + +Count = 100 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = +CT = E529B08D94449EB3BC9D56CE473A51A4267A28 + +Count = 101 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00 +CT = E529B00D701DCA429E0C918F49199051D427A5 + +Count = 102 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001 +CT = E529B0DAFE3C12B815F5454A627CA482B67EDE + +Count = 103 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102 +CT = E529B0F9267D2EBEBAEF6BE1B1F8E81F402C8F + +Count = 104 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203 +CT = E529B0135A79DE4328F10E29735AB399019437 + +Count = 105 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001020304 +CT = E529B08D7C56C5AEEA565E573B97A0F4C5A1AB + +Count = 106 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405 +CT = E529B05F88589EEBF582887A84122EB4946830 + +Count = 107 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203040506 +CT = E529B07FF9EC2155AB7FFFE618CA02B4790EB0 + +Count = 108 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 0001020304050607 +CT = E529B074C7DFE52955361DE7F45B7328397550 + +Count = 109 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708 +CT = E529B0CD16672496FE6B87057F86EC36A8C8AC + +Count = 110 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 00010203040506070809 +CT = E529B0F1595435A9D2E2EFDAE2368D1CFFFFDC + +Count = 111 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A +CT = E529B0C2FC7D2ABAA1B0DD473518C2FB660E5D + +Count = 112 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B +CT = E529B066C009793C85B58FD148EC030D6A0DD5 + +Count = 113 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C +CT = E529B011B2AE3D971BE3043A2D96AE96FFF635 + +Count = 114 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D +CT = E529B084EC462B5EF386914C424331A7C37C3B + +Count = 115 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E +CT = E529B0081F65D219BB1643695C9CE1FA67A184 + +Count = 116 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B0C2F2C66A505600A00CA682056BACCB84 + +Count = 117 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B066A5514393CBBF4D6D2A077057325F9E + +Count = 118 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B048E8C58A29D04C677BB33E3470F722C3 + +Count = 119 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B0C3287E1070A265393BD0AE165B2320D2 + +Count = 120 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B01A9D2E8619CA022A00001C6EC82CF8B5 + +Count = 121 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B0A564031C4C2FFA5B7882DE4882112BA7 + +Count = 122 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B0B3526F4EFA4851B027EFDE415BE2B3BE + +Count = 123 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B00D634AC445E5754642F7E4D962785D87 + +Count = 124 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07A6A8CDC471E5E3C5B0A928D7EBD67EB + +Count = 125 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B05585A14F346775EA8B7BFD65183FFBDA + +Count = 126 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B05014C838A082B7E5CF13FCD0A56D3806 + +Count = 127 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B0DCD9A51907D971AD2A9C7D9FCBF5A1B7 + +Count = 128 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B0C6C80D4D289722FAB55140201EBE9160 + +Count = 129 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B05E28DD2CAAD3D85E1157A4CFDF1A207B + +Count = 130 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B0E031536872FAC952DFFD3F80A4AA578A + +Count = 131 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B0BA40B5080C6C79AC46AE392285E9ED54 + +Count = 132 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B0D43F1F2D2CF50A86DD217DA50DDF3407 + +Count = 133 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = +CT = E529B07657411D891702C818EFE971A5557ED4A2 + +Count = 134 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00 +CT = E529B076D7A544DDE62059DFAEE75264A08C892F + +Count = 135 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001 +CT = E529B076002B65051CABA00B6BCC375073EED054 + +Count = 136 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102 +CT = E529B07623F324391A04BA25C01FB31CEE188205 + +Count = 137 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203 +CT = E529B076C98F20C9E796A44008DD114768593ABD + +Count = 138 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001020304 +CT = E529B07657A90FD20A5403107695DC54059D0F21 + +Count = 139 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405 +CT = E529B076855D01894F4BD7C65B2A59DA45CCC6BA + +Count = 140 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203040506 +CT = E529B076A52CB536F1152AB1C7B681F64521A03A + +Count = 141 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 0001020304050607 +CT = E529B076AE1286F28DEB6353C65A1087D961DBDA + +Count = 142 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708 +CT = E529B07617C33E3332403EC924D1CD18C7F06626 + +Count = 143 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 00010203040506070809 +CT = E529B0762B8C0D220D6CB7A1FB4C7D79EDA75156 + +Count = 144 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A +CT = E529B0761829243D1E1FE593669B53360A3EA0D7 + +Count = 145 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B +CT = E529B076BC15506E983BE0C1F0E6A7F7FC32A35F + +Count = 146 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C +CT = E529B076CB67F72A33A5B64A1B83DD5A67A758BF + +Count = 147 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D +CT = E529B0765E391F3CFA4DD3DF6DEC08C5569BD2B1 + +Count = 148 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E +CT = E529B076D2CA3CC5BD05430D48F2D7150B3F0F0E + +Count = 149 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07618279F7DF4E855EE2D08C9F19AF4650E + +Count = 150 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B076BC7008543775EA034C844C84A66AF114 + +Count = 151 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B076923D9C9D8D6E19295A1D75C081AF8C49 + +Count = 152 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07619FD2707D41C30771A7EE5E2AA7B8E58 + +Count = 153 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B076C0487791BD74576421AE579A3974563F + +Count = 154 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B0767FB15A0BE891AF15592C95BC7349852D + +Count = 155 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B076698736595EF604FE064195B5AABA1D34 + +Count = 156 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B076D7B613D3E15B20086359AF2D9320F30D + +Count = 157 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B076A0BFD5CBE3A00B727AA4D9798FE5C961 + +Count = 158 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B0768F50F85890D920A4AAD5B691E9675550 + +Count = 159 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B0768AC1912F043CE2ABEEBDB7245435968C + +Count = 160 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B076060CFC0EA36724E30B32366B3AAD0F3D + +Count = 161 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B0761C1D545A8C2977B494FF0BD4EFE63FEA + +Count = 162 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07684FD843B0E6D8D1030F9EF3B2E428EF1 + +Count = 163 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B0763AE40A7FD6449C1CFE53747455F2F900 + +Count = 164 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B0766095EC1FA8D22CE2670072D674B143DE + +Count = 165 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B0760EEA463A884B5FC8FC8F3651FC879A8D + +Count = 166 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = +CT = E529B07637871E339392367AA905EA2380E7F74674 + +Count = 167 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00 +CT = E529B0763707FA6AC76314EB6E44E4004112051BF9 + +Count = 168 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001 +CT = E529B07637D0744B1F999F12BA81CF6575C1674282 + +Count = 169 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102 +CT = E529B07637F3AC0A239F3008942A1CE1395C9110D3 + +Count = 170 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203 +CT = E529B0763719D00ED362A216F1E2DE4362DAD0A86B + +Count = 171 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001020304 +CT = E529B0763787F621C88F60B1A19C968E71B7149DF7 + +Count = 172 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405 +CT = E529B0763755022F93CA7F6577B1290BFFF745546C + +Count = 173 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203040506 +CT = E529B0763775739B2C742198002DB5D3D3F7A832EC + +Count = 174 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 0001020304050607 +CT = E529B076377E4DA8E808DFD1E22C5942A26BE8490C + +Count = 175 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708 +CT = E529B07637C79C1029B7748C78CED29F3D7579F4F0 + +Count = 176 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 00010203040506070809 +CT = E529B07637FBD3233888580510114F2F5C5F2EC380 + +Count = 177 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A +CT = E529B07637C8760A279B2B57228C980113B8B73201 + +Count = 178 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B +CT = E529B076376C4A7E741D0F52701AE5F5D24EBB3189 + +Count = 179 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C +CT = E529B076371B38D930B69104FBF1808F7FD52ECA69 + +Count = 180 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D +CT = E529B076378E6631267F79616E87EF5AE0E4124067 + +Count = 181 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637029512DF3831F1BCA2F18530B9B69DD8 + +Count = 182 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637C878B16771DCE75FC70B9BD4287DF7D8 + +Count = 183 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B076376C2F264EB24158B2A6871EA114E363C2 + +Count = 184 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B076374262B287085AAB98B01E27E533261E9F + +Count = 185 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637C9A2091D512882C6F07DB7C718F21C8E + +Count = 186 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B076371017598B3840E5D5CBAD05BF8BFDC4E9 + +Count = 187 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637AFEE74116DA51DA4B32FC799C1C017FB + +Count = 188 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637B9D81843DBC2B64FEC42C79018338FE2 + +Count = 189 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B0763707E93DC9646F92B9895AFD0821A961DB + +Count = 190 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B0763770E0FBD16694B9C390A78B5C3D6C5BB7 + +Count = 191 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B076375F0FD64215ED921540D6E4B45BEEC786 + +Count = 192 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B076375A9EBF358108501A04BEE501E6BC045A + +Count = 193 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637D653D21426539652E131644E88249DEB + +Count = 194 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637CC427A40091DC5057EFC59F15D6FAD3C + +Count = 195 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B0763754A2AA218B593FA1DAFABD1E9CCB1C27 + +Count = 196 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637EABB246553702EAD14502651E77B6BD6 + +Count = 197 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637B0CAC2052DE69E538D0320F3C638D108 + +Count = 198 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637DEB568200D7FED79168C64744E0E085B + +Count = 199 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = +CT = E529B07637F035257B77B8293A441A8F2323B92EB4F3 + +Count = 200 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00 +CT = E529B07637F0B5C12223490BAB835B8100E24CDCE97E + +Count = 201 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001 +CT = E529B07637F0624F03FBB38052579EAA65D69FBEB005 + +Count = 202 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102 +CT = E529B07637F0419742C7B52F48793579E19A0248E254 + +Count = 203 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203 +CT = E529B07637F0ABEB463748BD561CFDBB43C184095AEC + +Count = 204 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001020304 +CT = E529B07637F035CD692CA57FF14C83F38ED2E9CD6F70 + +Count = 205 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405 +CT = E529B07637F0E7396777E060259AAE4C0B5CA99CA6EB + +Count = 206 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203040506 +CT = E529B07637F0C748D3C85E3ED8ED32D0D370A971C06B + +Count = 207 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 0001020304050607 +CT = E529B07637F0CC76E00C22C0910F333C42013531BB8B + +Count = 208 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708 +CT = E529B07637F075A758CD9D6BCC95D1B79F9E2BA00677 + +Count = 209 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 00010203040506070809 +CT = E529B07637F049E86BDCA24745FD0E2A2FFF01F73107 + +Count = 210 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A +CT = E529B07637F07A4D42C3B13417CF93FD01B0E66EC086 + +Count = 211 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B +CT = E529B07637F0DE7136903710129D0580F5711062C30E + +Count = 212 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C +CT = E529B07637F0A90391D49C8E4416EEE58FDC8BF738EE + +Count = 213 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03C5D79C255662183988A5A43BACBB2E0 + +Count = 214 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F0B0AE5A3B122EB151BD948593E76F6F5F + +Count = 215 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F07A43F9835BC3A7B2D86E9B7776A4055F + +Count = 216 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F0DE146EAA985E185FB9E21E024A3A9145 + +Count = 217 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F0F059FA632245EB75AF7B27466DFFEC18 + +Count = 218 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F07B9941F97B37C22BEF18B764462BEE09 + +Count = 219 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F0A22C116F125FA538D4C8051CD524366E + +Count = 220 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F01DD53CF547BA5D49AC4AC73A9F19E57C + +Count = 221 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F00BE350A7F1DDF6A2F327C73346EA7D65 + +Count = 222 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F0B5D2752D4E70D254963FFDAB7F70935C + +Count = 223 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F0C2DBB3354C8BF92E8FC28BFF63B5A930 + +Count = 224 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F0ED349EA63FF2D2F85FB3E41705373501 + +Count = 225 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F0E8A5F7D1AB1710F71BDBE5A2B865F6DD + +Count = 226 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F064689AF00C4CD6BFFE5464EDD6FD6F6C + +Count = 227 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F07E7932A4230285E86199595203B65FBB + +Count = 228 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F0E699E2C5A1467F4CC59FBDBDC212EEA0 + +Count = 229 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F058806C81796F6E400B3526F2B9A29951 + +Count = 230 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F002F18AE107F9DEBE9266205098E1238F + +Count = 231 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F06C8E20C42760AD9409E964D710D7FADC + +Count = 232 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = +CT = E529B07637F03259C6069153227B6A19A5616202695A78 + +Count = 233 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00 +CT = E529B07637F032D9225FC5A200EAAD58AB42A3F79B07F5 + +Count = 234 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001 +CT = E529B07637F0320EAC7E1D588B13799D80279724F95E8E + +Count = 235 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102 +CT = E529B07637F0322D743F215E2409573653A3DBB90F0CDF + +Count = 236 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203 +CT = E529B07637F032C7083BD1A3B61732FE9101803F4EB467 + +Count = 237 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001020304 +CT = E529B07637F032592E14CA4E74B06280D9CC93528A81FB + +Count = 238 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405 +CT = E529B07637F0328BDA1A910B6B64B4AD66491D12DB4860 + +Count = 239 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203040506 +CT = E529B07637F032ABABAE2EB53599C331FA913112362EE0 + +Count = 240 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 0001020304050607 +CT = E529B07637F032A0959DEAC9CBD021301600408E765500 + +Count = 241 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708 +CT = E529B07637F0321944252B76608DBBD29DDDDF90E7E8FC + +Count = 242 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 00010203040506070809 +CT = E529B07637F032250B163A494C04D30D006DBEBAB0DF8C + +Count = 243 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A +CT = E529B07637F03216AE3F255A3F56E190D743F15D292E0D + +Count = 244 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B +CT = E529B07637F032B2924B76DC1B53B306AAB730AB252D85 + +Count = 245 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C +CT = E529B07637F032C5E0EC3277850538EDCFCD9D30B0D665 + +Count = 246 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03250BE0424BE6D60AD9BA01802018C5C6B + +Count = 247 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F032DC4D27DDF925F07FBEBEC7D25C2881D4 + +Count = 248 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03216A08465B0C8E69CDB44D936CDE3EBD4 + +Count = 249 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F032B2F7134C73555971BAC85C43F17D7FCE + +Count = 250 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F0329CBA8785C94EAA5BAC516507D6B80293 + +Count = 251 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F032177A3C1F903C8305EC32F525FD6C0082 + +Count = 252 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F032CECF6C89F954E416D7E2475D6E63D8E5 + +Count = 253 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03271364113ACB11C67AF60857B245E0BF7 + +Count = 254 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03267002D411AD6B78CF00D8572FDAD93EE + +Count = 255 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F032D93108CBA57B937A9515BFEAC4377DD7 + +Count = 256 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F032AE38CED3A780B8008CE8C9BED8F247BB + +Count = 257 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03281D7E340D4F993D65C99A656BE70DB8A + +Count = 258 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03284468A37401C51D918F1A7E303221856 + +Count = 259 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F032088BE716E7479791FD7E26AC6DBA81E7 + +Count = 260 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F032129A4F42C809C4C662B31B13B8F1B130 + +Count = 261 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F0328A7A9F234A4D3E62C6B5FFFC7955002B + +Count = 262 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F0323463116792642F6E081F64B302E577DA + +Count = 263 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F0326E12F707ECF29F90914C621123A6CD04 + +Count = 264 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F032006D5D22CC6BECBA0AC32696AB901457 + +Count = 265 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = +CT = E529B07637F03226B065804E4E9DE263EB0CA4DEA32E9CA3 + +Count = 266 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00 +CT = E529B07637F032263081D91ABFBF73A4AA02871F56DCC12E + +Count = 267 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001 +CT = E529B07637F03226E70FF8C245348A706F29E22B85BE9855 + +Count = 268 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102 +CT = E529B07637F03226C4D7B9FE439B905EC4FA66671848CA04 + +Count = 269 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203 +CT = E529B07637F032262EABBD0EBE098E3B0C38C43C9E0972BC + +Count = 270 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001020304 +CT = E529B07637F03226B08D921553CB296B7270092FF3CD4720 + +Count = 271 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405 +CT = E529B07637F0322662799C4E16D4FDBD5FCF8CA1B39C8EBB + +Count = 272 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203040506 +CT = E529B07637F03226420828F1A88A00CAC353548DB371E83B + +Count = 273 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 0001020304050607 +CT = E529B07637F0322649361B35D4744928C2BFC5FC2F3193DB + +Count = 274 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708 +CT = E529B07637F03226F0E7A3F46BDF14B22034186331A02E27 + +Count = 275 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 00010203040506070809 +CT = E529B07637F03226CCA890E554F39DDAFFA9A8021BF71957 + +Count = 276 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A +CT = E529B07637F03226FF0DB9FA4780CFE8627E864DFC6EE8D6 + +Count = 277 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B +CT = E529B07637F032265B31CDA9C1A4CABAF403728C0A62EB5E + +Count = 278 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C +CT = E529B07637F032262C436AED6A3A9C311F66082191F710BE + +Count = 279 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226B91D82FBA3D2F9A46909DDBEA0CB9AB0 + +Count = 280 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F0322635EEA102E49A69764C17026EFD6F470F + +Count = 281 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226FF0302BAAD777F9529ED1C8A6CA42D0F + +Count = 282 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F032265B5495936EEAC078486199FF503AB915 + +Count = 283 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F032267519015AD4F133525EF8A0BB77FFC448 + +Count = 284 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226FED9BAC08D831A0C1E9B30995C2BC659 + +Count = 285 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226276CEA56E4EB7D1F254B82E1CF241E3E + +Count = 286 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F032269895C7CCB10E856E5DC940C78519CD2C + +Count = 287 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F032268EA3AB9E07692E8502A440CE5CEA5535 + +Count = 288 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F0322630928E14B8C40A7367BC7A566570BB0C + +Count = 289 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226479B480CBA3F21097E410C0279B58160 + +Count = 290 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F032266874659FC9460ADFAE3063EA1F371D51 + +Count = 291 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F032266DE50CE85DA3C8D0EA58625FA265DE8D + +Count = 292 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226E12861C9FAF80E980FD7E310CCFD473C + +Count = 293 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226FB39C99DD5B65DCF901ADEAF19B677EB + +Count = 294 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F0322663D919FC57F2A76B341C3A40D812C6F0 + +Count = 295 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226DDC097B88FDBB667FAB6A10FA3A2B101 + +Count = 296 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F0322687B171D8F14D069963E5A7AD82E10BDF + +Count = 297 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226E9CEDBFDD1D475B3F86AE32A0AD7D28C + +Count = 298 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = +CT = E529B07637F03226829B767A18947DE02E3BCE6DD9E7B7E4E6 + +Count = 299 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00 +CT = E529B07637F03226821B92234C655F71E97AC04E181245B96B + +Count = 300 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001 +CT = E529B07637F0322682CC1C02949FD4883DBFEB2B2CC127E010 + +Count = 301 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102 +CT = E529B07637F0322682EFC443A8997B92131438AF605CD1B241 + +Count = 302 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203 +CT = E529B07637F032268205B8475864E98C76DCFA0D3BDA900AF9 + +Count = 303 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001020304 +CT = E529B07637F03226829B9E6843892B2B26A2B2C028B7543F65 + +Count = 304 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405 +CT = E529B07637F0322682496A6618CC34FFF08F0D45A6F705F6FE + +Count = 305 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203040506 +CT = E529B07637F0322682691BD2A7726A028713919D8AF7E8907E + +Count = 306 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 0001020304050607 +CT = E529B07637F03226826225E1630E944B65127D0CFB6BA8EB9E + +Count = 307 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708 +CT = E529B07637F0322682DBF459A2B13F16FFF0F6D16475395662 + +Count = 308 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 00010203040506070809 +CT = E529B07637F0322682E7BB6AB38E139F972F6B61055F6E6112 + +Count = 309 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A +CT = E529B07637F0322682D41E43AC9D60CDA5B2BC4F4AB8F79093 + +Count = 310 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B +CT = E529B07637F0322682702237FF1B44C8F724C1BB8B4EFB931B + +Count = 311 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C +CT = E529B07637F0322682075090BBB0DA9E7CCFA4C126D56E68FB + +Count = 312 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D +CT = E529B07637F0322682920E78AD7932FBE9B9CB14B9E452E2F5 + +Count = 313 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226821EFD5B543E7A6B3B9CD5CB69B9F63F4A + +Count = 314 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F0322682D410F8EC77977DD8F92FD58D283D554A + +Count = 315 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F032268270476FC5B40AC23598A350F814A3C150 + +Count = 316 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226825E0AFB0C0E11311F8E3A69BC3366BC0D + +Count = 317 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F0322682D5CA409657631841CE59F99E18B2BE1C + +Count = 318 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820C7F10003E0B7F52F5894BE68BBD667B + +Count = 319 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F0322682B3863D9A6BEE87238D0B89C0C180B569 + +Count = 320 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F0322682A5B051C8DD892CC8D26689C918732D70 + +Count = 321 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226821B8174426224083EB77EB35121E9C349 + +Count = 322 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226826C88B25A60DF2344AE83C5053D2CF925 + +Count = 323 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F032268243679FC913A608927EF2AAED5BAE6514 + +Count = 324 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F032268246F6F6BE8743CA9D3A9AAB58E6FCA6C8 + +Count = 325 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F0322682CA3B9B9F20180CD5DF152A1788643F79 + +Count = 326 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F0322682D02A33CB0F565F8240D817A85D2F0FAE + +Count = 327 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F032268248CAE3AA8D12A526E4DEF3479C8BBEB5 + +Count = 328 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F0322682F6D36DEE553BB42A2A746808E73BC944 + +Count = 329 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F0322682ACA28B8E2BAD04D4B3276EAAC678739A + +Count = 330 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F0322682C2DD21AB0B3477FE28A82A2D4E4EAAC9 + +Count = 331 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = +CT = E529B07637F03226820A9844034D40F2B63E6C4A528468D70F84 + +Count = 332 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00 +CT = E529B07637F03226820A18A05A19B1D027F92D4471459D255209 + +Count = 333 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001 +CT = E529B07637F03226820ACF2E7BC14B5BDE2DE86F14714E470B72 + +Count = 334 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102 +CT = E529B07637F03226820AECF63AFD4DF4C40343BC903DD3B15923 + +Count = 335 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203 +CT = E529B07637F03226820A068A3E0DB066DA668B7E326655F0E19B + +Count = 336 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001020304 +CT = E529B07637F03226820A98AC11165DA47D36F536FF753834D407 + +Count = 337 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405 +CT = E529B07637F03226820A4A581F4D18BBA9E0D8897AFB78651D9C + +Count = 338 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203040506 +CT = E529B07637F03226820A6A29ABF2A6E554974415A2D778887B1C + +Count = 339 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 0001020304050607 +CT = E529B07637F03226820A61179836DA1B1D7545F933A6E4C800FC + +Count = 340 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708 +CT = E529B07637F03226820AD8C620F765B040EFA772EE39FA59BD00 + +Count = 341 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 00010203040506070809 +CT = E529B07637F03226820AE48913E65A9CC98778EF5E58D00E8A70 + +Count = 342 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A +CT = E529B07637F03226820AD72C3AF949EF9BB5E538701737977BF1 + +Count = 343 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B +CT = E529B07637F03226820A73104EAACFCB9EE7734584D6C19B7879 + +Count = 344 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C +CT = E529B07637F03226820A0462E9EE6455C86C9820FE7B5A0E8399 + +Count = 345 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226820A913C01F8ADBDADF9EE4F2BE46B320997 + +Count = 346 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226820A1DCF2201EAF53D2BCB51F4343696D428 + +Count = 347 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226820AD72281B9A3182BC8AEABEAD0A75DBE28 + +Count = 348 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F03226820A7375169060859425CF276FA59BC32A32 + +Count = 349 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226820A5D388259DA9E670FD9BE56E1BC06576F + +Count = 350 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226820AD6F839C383EC4E5199DDC6C397D2557E + +Count = 351 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820A0F4D6955EA842942A20D74BB04DD8D19 + +Count = 352 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03226820AB0B444CFBF61D133DA8FB69D4EE05E0B + +Count = 353 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03226820AA682289D09067AD885E2B6949713C612 + +Count = 354 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226820A18B30D17B6AB5E2EE0FA8C0CAE89282B + +Count = 355 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226820A6FBACB0FB4507554F907FA58B24C1247 + +Count = 356 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03226820A4055E69CC7295E82297695B0D4CE8E76 + +Count = 357 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03226820A45C48FEB53CC9C8D6D1E9405699C4DAA + +Count = 358 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226820AC909E2CAF4975AC58891154A0704D41B + +Count = 359 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226820AD3184A9EDBD90992175C28F5D24FE4CC + +Count = 360 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F03226820A4BF89AFF599DF336B35ACC1A13EB55D7 + +Count = 361 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226820AF5E114BB81B4E23A7DF05755685B2226 + +Count = 362 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F03226820AAF90F2DBFF2252C4E4A351F7491898F8 + +Count = 363 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226820AC1EF58FEDFBB21EE7F2C1570C12E41AB + +Count = 364 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = +CT = E529B07637F03226820A44CCDA6FF8659E59F2FE774607D12B5AFF + +Count = 365 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00 +CT = E529B07637F03226820A444C3E36AC94BCC835BF7965C624D90772 + +Count = 366 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001 +CT = E529B07637F03226820A449BB017746E3731E17A5200F2F7BB5E09 + +Count = 367 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102 +CT = E529B07637F03226820A44B868564868982BCFD18184BE6A4D0C58 + +Count = 368 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203 +CT = E529B07637F03226820A44521452B8950A35AA194326E5EC0CB4E0 + +Count = 369 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001020304 +CT = E529B07637F03226820A44CC327DA378C892FA670BEBF681C8817C + +Count = 370 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405 +CT = E529B07637F03226820A441EC673F83DD7462C4AB46E78C19948E7 + +Count = 371 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203040506 +CT = E529B07637F03226820A443EB7C7478389BB5BD628B654C1742E67 + +Count = 372 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 0001020304050607 +CT = E529B07637F03226820A443589F483FF77F2B9D7C427255D345587 + +Count = 373 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708 +CT = E529B07637F03226820A448C584C4240DCAF23354FFABA43A5E87B + +Count = 374 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 00010203040506070809 +CT = E529B07637F03226820A44B0177F537FF0264BEAD24ADB69F2DF0B + +Count = 375 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A +CT = E529B07637F03226820A4483B2564C6C837479770564948E6B2E8A + +Count = 376 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B +CT = E529B07637F03226820A44278E221FEAA7712BE178905578672D02 + +Count = 377 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C +CT = E529B07637F03226820A4450FC855B413927A00A1DEAF8E3F2D6E2 + +Count = 378 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226820A44C5A26D4D88D142357C723F67D2CE5CEC + +Count = 379 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226820A4449514EB4CF99D2E7596CE0B78F6A8153 + +Count = 380 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226820A4483BCED0C8674C4043C96FE531EA1EB53 + +Count = 381 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F03226820A4427EB7A2545E97BE95D1A7B26223F7F49 + +Count = 382 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226820A4409A6EEECFFF288C34B83426205FA0214 + +Count = 383 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226820A4482665576A680A19D0BE0D2402E2E0005 + +Count = 384 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820A445BD305E0CFE8C68E30306038BD21D862 + +Count = 385 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03226820A44E42A287A9A0D3EFF48B2A21EF71C0B70 + +Count = 386 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03226820A44F21C44282C6A951417DFA2172EEF9369 + +Count = 387 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226820A444C2D61A293C7B1E272C7988F17757D50 + +Count = 388 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226820A443B24A7BA913C9A986B3AEEDB0BB0473C + +Count = 389 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03226820A4414CB8A29E245B14EBB4B81336D32DB0D + +Count = 390 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03226820A44115AE35E76A07341FF238086D06018D1 + +Count = 391 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226820A449D978E7FD1FBB5091AAC01C9BEF88160 + +Count = 392 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226820A448786262BFEB5E65E85613C766BB3B1B7 + +Count = 393 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F03226820A441F66F64A7CF11CFA2167D899AA1700AC + +Count = 394 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226820A44A17F780EA4D80DF6EFCD43D6D1A7775D + +Count = 395 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F03226820A44FB0E9E6EDA4EBD08769E4574F0E4CD83 + +Count = 396 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226820A449571344BFAD7CE22ED1101F378D214D0 + +Count = 397 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = +CT = E529B07637F03226820A4472D7D2BE580C734AAEB15EFBA88CB12FE9 + +Count = 398 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00 +CT = E529B07637F03226820A44725736E70CFD51DB69F050D86979437264 + +Count = 399 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001 +CT = E529B07637F03226820A447280B8C6D407DA22BD357BBD5DAA212B1F + +Count = 400 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102 +CT = E529B07637F03226820A4472A36087E8017538939EA8391137D7794E + +Count = 401 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203 +CT = E529B07637F03226820A4472491C8318FCE726F6566A9B4AB196C1F6 + +Count = 402 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001020304 +CT = E529B07637F03226820A4472D73AAC03112581A628225659DC52F46A + +Count = 403 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405 +CT = E529B07637F03226820A447205CEA258543A5570059DD3D79C033DF1 + +Count = 404 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203040506 +CT = E529B07637F03226820A447225BF16E7EA64A80799010BFB9CEE5B71 + +Count = 405 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 0001020304050607 +CT = E529B07637F03226820A44722E812523969AE1E598ED9A8A00AE2091 + +Count = 406 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708 +CT = E529B07637F03226820A447297509DE22931BC7F7A6647151E3F9D6D + +Count = 407 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 00010203040506070809 +CT = E529B07637F03226820A4472AB1FAEF3161D3517A5FBF7743468AA1D + +Count = 408 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A +CT = E529B07637F03226820A447298BA87EC056E6725382CD93BD3F15B9C + +Count = 409 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B +CT = E529B07637F03226820A44723C86F3BF834A6277AE512DFA25FD5814 + +Count = 410 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C +CT = E529B07637F03226820A44724BF454FB28D434FC45345757BE68A3F4 + +Count = 411 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226820A4472DEAABCEDE13C5169335B82C88F5429FA + +Count = 412 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226820A447252599F14A674C1BB16455D18D2F0F445 + +Count = 413 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226820A447298B43CACEF99D75873BF43FC433B9E45 + +Count = 414 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F03226820A44723CE3AB852C0468B51233C6897FA50A5F + +Count = 415 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226820A447212AE3F4C961F9B9F04AAFFCD58607702 + +Count = 416 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226820A4472996E84D6CF6DB2C144C96FEF73B47513 + +Count = 417 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820A447240DBD440A605D5D27F19DD97E0BBAD74 + +Count = 418 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03226820A4472FF22F9DAF3E02DA3079B1FB1AA867E66 + +Count = 419 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03226820A4472E91495884587864858F61FB87375E67F + +Count = 420 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226820A44725725B002FA2AA2BE3DEE25204AEF0846 + +Count = 421 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226820A4472202C761AF8D189C424135374562A322A + +Count = 422 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03226820A44720FC35B898BA8A212F4623C9C30A8AE1B + +Count = 423 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03226820A44720A5232FE1F4D601DB00A3D298DFA6DC7 + +Count = 424 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226820A4472869F5FDFB816A6555585BC66E362F476 + +Count = 425 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226820A44729C8EF78B9758F502CA4881D93629C4A1 + +Count = 426 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F03226820A4472046E27EA151C0FA66E4E6536F78D75BA + +Count = 427 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226820A4472BA77A9AECD351EAAA0E4FE798C3D024B + +Count = 428 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F03226820A4472E0064FCEB3A3AE5439B7F8DBAD7EB895 + +Count = 429 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226820A44728E79E5EB933ADD7EA238BC5C254861C6 + +Count = 430 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = +CT = E529B07637F03226820A4472B329CC91F861773318FA1BB9B25DC9E56C + +Count = 431 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00 +CT = E529B07637F03226820A4472B3A928C8AC9055A2DFBB159A73A83BB8E1 + +Count = 432 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001 +CT = E529B07637F03226820A4472B37EA6E9746ADE5B0B7E3EFF477B59E19A + +Count = 433 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102 +CT = E529B07637F03226820A4472B35D7EA8486C714125D5ED7B0BE6AFB3CB + +Count = 434 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203 +CT = E529B07637F03226820A4472B3B702ACB891E35F401D2FD95060EE0B73 + +Count = 435 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001020304 +CT = E529B07637F03226820A4472B3292483A37C21F810636714430D2A3EEF + +Count = 436 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405 +CT = E529B07637F03226820A4472B3FBD08DF8393E2CC64ED891CD4D7BF774 + +Count = 437 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203040506 +CT = E529B07637F03226820A4472B3DBA139478760D1B1D24449E14D9691F4 + +Count = 438 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 0001020304050607 +CT = E529B07637F03226820A4472B3D09F0A83FB9E9853D3A8D890D1D6EA14 + +Count = 439 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708 +CT = E529B07637F03226820A4472B3694EB2424435C5C93123050FCF4757E8 + +Count = 440 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 00010203040506070809 +CT = E529B07637F03226820A4472B3550181537B194CA1EEBEB56EE5106098 + +Count = 441 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A +CT = E529B07637F03226820A4472B366A4A84C686A1E9373699B2102899119 + +Count = 442 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B +CT = E529B07637F03226820A4472B3C298DC1FEE4E1BC1E5146FE0F4859291 + +Count = 443 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C +CT = E529B07637F03226820A4472B3B5EA7B5B45D04D4A0E71154D6F106971 + +Count = 444 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226820A4472B320B4934D8C3828DF781EC0D25E2CE37F + +Count = 445 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226820A4472B3AC47B0B4CB70B80D5D001F0203883EC0 + +Count = 446 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226820A4472B366AA130C829DAEEE38FA01E6924354C0 + +Count = 447 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F03226820A4472B3C2FD84254100110359768493AEDDC0DA + +Count = 448 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226820A4472B3ECB010ECFB1BE2294FEFBDD78918BD87 + +Count = 449 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226820A4472B36770AB76A269CB770F8C2DF5A2CCBF96 + +Count = 450 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820A4472B3BEC5FBE0CB01AC64345C9F8D31C367F1 + +Count = 451 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03226820A4472B3013CD67A9EE454154CDE5DAB7BFEB4E3 + +Count = 452 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03226820A4472B3170ABA282883FFFE13B35DA2A20D2CFA + +Count = 453 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226820A4472B3A93B9FA2972EDB0876AB673A9B97C2C3 + +Count = 454 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226820A4472B3DE3259BA95D5F0726F56116E8752F8AF + +Count = 455 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03226820A4472B3F1DD7429E6ACDBA4BF277E86E1D0649E + +Count = 456 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03226820A4472B3F44C1D5E724919ABFB4F7F335C82A742 + +Count = 457 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226820A4472B37881707FD512DFE31EC0FE7C321A3EF3 + +Count = 458 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226820A4472B36290D82BFA5C8CB4810DC3C3E7510E24 + +Count = 459 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F03226820A4472B3FA70084A78187610250B272C26F5BF3F + +Count = 460 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226820A4472B34469860EA031671CEBA1BC635D45C8CE + +Count = 461 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F03226820A4472B31E18606EDEA7D7E272F2BAC17C067210 + +Count = 462 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226820A4472B37067CA4BFE3EA4C8E97DFE46F430AB43 + +Count = 463 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = +CT = E529B07637F03226820A4472B394601DC7D0668BE50803A5698B50E1F3A7 + +Count = 464 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00 +CT = E529B07637F03226820A4472B394E0F99E8497A974CF42AB4A4AA513AE2A + +Count = 465 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001 +CT = E529B07637F03226820A4472B3943777BF5C6D228D1B87802F7E7671F751 + +Count = 466 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102 +CT = E529B07637F03226820A4472B39414AFFE606B8D97352C53AB32EB87A500 + +Count = 467 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203 +CT = E529B07637F03226820A4472B394FED3FA90961F8950E49109696DC61DB8 + +Count = 468 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001020304 +CT = E529B07637F03226820A4472B39460F5D58B7BDD2E009AD9C47A00022824 + +Count = 469 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405 +CT = E529B07637F03226820A4472B394B201DBD03EC2FAD6B76641F44053E1BF + +Count = 470 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203040506 +CT = E529B07637F03226820A4472B39492706F6F809C07A12BFA99D840BE873F + +Count = 471 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 0001020304050607 +CT = E529B07637F03226820A4472B394994E5CABFC624E432A1608A9DCFEFCDF + +Count = 472 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708 +CT = E529B07637F03226820A4472B394209FE46A43C913D9C89DD536C26F4123 + +Count = 473 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 00010203040506070809 +CT = E529B07637F03226820A4472B3941CD0D77B7CE59AB117006557E8387653 + +Count = 474 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A +CT = E529B07637F03226820A4472B3942F75FE646F96C8838AD74B180FA187D2 + +Count = 475 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B +CT = E529B07637F03226820A4472B3948B498A37E9B2CDD11CAABFD9F9AD845A + +Count = 476 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C +CT = E529B07637F03226820A4472B394FC3B2D73422C9B5AF7CFC57462387FBA + +Count = 477 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226820A4472B3946965C5658BC4FECF81A010EB5304F5B4 + +Count = 478 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226820A4472B394E596E69CCC8C6E1DA4BECF3B0EA0280B + +Count = 479 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226820A4472B3942F7B4524856178FEC144D1DF9F6B420B + +Count = 480 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F03226820A4472B3948B2CD20D46FCC713A0C854AAA3F5D611 + +Count = 481 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226820A4472B394A56146C4FCE73439B6516DEE8430AB4C + +Count = 482 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226820A4472B3942EA1FD5EA5951D67F632FDCCAFE4A95D + +Count = 483 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820A4472B394F714ADC8CCFD7A74CDE24FB43CEB713A + +Count = 484 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03226820A4472B39448ED805299188205B5608D9276D6A228 + +Count = 485 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03226820A4472B3945EDBEC002F7F29EEEA0D8D9BAF253A31 + +Count = 486 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226820A4472B394E0EAC98A90D20D188F15B70396BFD408 + +Count = 487 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226820A4472B39497E30F929229266296E8C1578A7AEE64 + +Count = 488 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03226820A4472B394B80C2201E1500DB44699AEBFECF87255 + +Count = 489 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03226820A4472B394BD9D4B7675B5CFBB02F1AF0A51AAB189 + +Count = 490 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226820A4472B39431502657D2EE09F3E77E2E453F322838 + +Count = 491 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226820A4472B3942B418E03FDA05AA478B313FAEA7918EF + +Count = 492 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F03226820A4472B394B3A15E627FE4A000DCB5F7152BDDA9F4 + +Count = 493 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226820A4472B3940DB8D026A7CDB10C121F6C5A506DDE05 + +Count = 494 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F03226820A4472B39457C93646D95B01F28B4C6AF8712E64DB + +Count = 495 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226820A4472B39439B69C63F9C272D810C32E7FF918BD88 + +Count = 496 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = +CT = E529B07637F03226820A4472B394652B61DE1B8898DA0DF4AD642E9D44C4DC + +Count = 497 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00 +CT = E529B07637F03226820A4472B39465AB85874F79BA4BCAB5A347EF68B69951 + +Count = 498 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001 +CT = E529B07637F03226820A4472B394657C0BA6978331B21E708822DBBBD4C02A + +Count = 499 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102 +CT = E529B07637F03226820A4472B394655FD3E7AB859EA830DB5BA6972622927B + +Count = 500 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203 +CT = E529B07637F03226820A4472B39465B5AFE35B780CB655139904CCA0632AC3 + +Count = 501 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304 +CT = E529B07637F03226820A4472B394652B89CC4095CE11056DD1C9DFCDA71F5F + +Count = 502 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405 +CT = E529B07637F03226820A4472B39465F97DC21BD0D1C5D3406E4C518DF6D6C4 + +Count = 503 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506 +CT = E529B07637F03226820A4472B39465D90C76A46E8F38A4DCF2947D8D1BB044 + +Count = 504 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304050607 +CT = E529B07637F03226820A4472B39465D232456012717146DD1E050C115BCBA4 + +Count = 505 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708 +CT = E529B07637F03226820A4472B394656BE3FDA1ADDA2CDC3F95D8930FCA7658 + +Count = 506 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506070809 +CT = E529B07637F03226820A4472B3946557ACCEB092F6A5B4E00868F2259D4128 + +Count = 507 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A +CT = E529B07637F03226820A4472B394656409E7AF8185F7867DDF46BDC204B0A9 + +Count = 508 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B +CT = E529B07637F03226820A4472B39465C03593FC07A1F2D4EBA2B27C3408B321 + +Count = 509 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C +CT = E529B07637F03226820A4472B39465B74734B8AC3FA45F00C7C8D1AF9D48C1 + +Count = 510 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D +CT = E529B07637F03226820A4472B394652219DCAE65D7C1CA76A81D4E9EA1C2CF + +Count = 511 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E +CT = E529B07637F03226820A4472B39465AEEAFF57229F511853B6C29EC3051F70 + +Count = 512 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F +CT = E529B07637F03226820A4472B3946564075CEF6B7247FB364CDC7A52CE7570 + +Count = 513 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = E529B07637F03226820A4472B39465C050CBC6A8EFF81657C0590F6E50E16A + +Count = 514 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = E529B07637F03226820A4472B39465EE1D5F0F12F40B3C4159604B49959C37 + +Count = 515 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E529B07637F03226820A4472B3946565DDE4954B862262013AF06962419E26 + +Count = 516 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = E529B07637F03226820A4472B39465BC68B40322EE45713AEA4211F14E4641 + +Count = 517 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = E529B07637F03226820A4472B3946503919999770BBD0042688037BB739553 + +Count = 518 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = E529B07637F03226820A4472B3946515A7F5CBC16C16EB1D05803E62800D4A + +Count = 519 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = E529B07637F03226820A4472B39465AB96D0417EC1321D781DBAA65B1AE373 + +Count = 520 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = E529B07637F03226820A4472B39465DC9F16597C3A196761E0CCF247DFD91F + +Count = 521 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = E529B07637F03226820A4472B39465F3703BCA0F4332B1B191A31A215D452E + +Count = 522 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = E529B07637F03226820A4472B39465F6E152BD9BA6F0BEF5F9A2AF9C0F86F2 + +Count = 523 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = E529B07637F03226820A4472B394657A2C3F9C3CFD36F6107623E0F2971F43 + +Count = 524 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = E529B07637F03226820A4472B39465603D97C813B365A18FBB1E5F27DC2F94 + +Count = 525 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = E529B07637F03226820A4472B39465F8DD47A991F79F052BBDFAB0E6789E8F + +Count = 526 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = E529B07637F03226820A4472B3946546C4C9ED49DE8E09E51761FF9DC8E97E + +Count = 527 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = E529B07637F03226820A4472B394651CB52F8D37483EF77C44675DBC8B53A0 + +Count = 528 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = E529B07637F03226820A4472B3946572CA85A817D14DDDE7CB23DA34BD8AF3 + +Count = 529 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBD751A91924DBD20180C9CAAFD795D5C4 + +Count = 530 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB57B5F04DD5F943C6C1C7E96E22678849 + +Count = 531 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB803BD1952F72BA1204EC8C5AF105D132 + +Count = 532 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBA3E390A929DDA03CAF3F08166CF38363 + +Count = 533 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB499F9459D44FBE5967FDAA4DEAB23BDB + +Count = 534 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBD7B9BB42398D190919B5675E87760E47 + +Count = 535 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB054DB5197C92CDDF340AE2D0C727C7DC + +Count = 536 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB253C01A6C2CC30A8A8963AFCC7CAA15C + +Count = 537 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB2E023262BE32794AA97AAB8D5B8ADABC + +Count = 538 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB97D38AA3019924D04BF17612451B6740 + +Count = 539 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBAB9CB9B23EB5ADB8946CC6736F4C5030 + +Count = 540 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB983990AD2DC6FF8A09BBE83C88D5A1B1 + +Count = 541 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3C05E4FEABE2FAD89FC61CFD7ED9A239 + +Count = 542 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB4B7743BA007CAC5374A36650E54C59D9 + +Count = 543 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBDE29ABACC994C9C602CCB3CFD470D3D7 + +Count = 544 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB52DA88558EDC591427D26C1F89D40E68 + +Count = 545 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB98372BEDC7314FF7422872FB181F6468 + +Count = 546 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3C60BCC404ACF01A23A4F78E2481F072 + +Count = 547 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB122D280DBEB70330353DCECA03448D2F + +Count = 548 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB99ED9397E7C52A6E755E5EE828908F3E + +Count = 549 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB4058C3018EAD4D7D4E8EEC90BB9F5759 + +Count = 550 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBFFA1EE9BDB48B50C360C2EB6F1A2844B + +Count = 551 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE99782C96D2F1EE769612EBF28511C52 + +Count = 552 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB57A6A743D2823A110C79142711CBF26B + +Count = 553 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB20AF615BD079116B158462730D0EC807 + +Count = 554 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB0F404CC8A3003ABDC5F50D9B6B8C5436 + +Count = 555 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB0AD125BF37E5F8B2819D0C2ED6DE97EA + +Count = 556 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB861C489E90BE3EFA64128D61B8460E5B + +Count = 557 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB9C0DE0CABFF06DADFBDFB0DE6D0D3E8C + +Count = 558 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB04ED30AB3DB497095FD95431ACA98F97 + +Count = 559 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBBAF4BEEFE59D86059173CF7ED719F866 + +Count = 560 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE085588F9B0B36FB0820C9DCF65A42B8 + +Count = 561 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB8EFAF2AABB9245D193AF8D5B7E6C9BEB + +Count = 562 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB388CEB23FB27FB333F0DE02623C31FAEF1 + +Count = 563 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB380C0F7AAFD6D9A2F84CEE05E236EDF37C + +Count = 564 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38DB815B772C525B2C89C560D6E58FAA07 + +Count = 565 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38F8591A4B2AFD41022216E49A7879F856 + +Count = 566 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3812251EBBD76F5F67EAD446C1FE3840EE + +Count = 567 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB388C0331A03AADF837949C8BD293FC7572 + +Count = 568 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385EF73FFB7FB22CE1B9230E5CD3ADBCE9 + +Count = 569 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB387E868B44C1ECD19625BFD670D340DA69 + +Count = 570 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3875B8B880BD129874245347014F00A189 + +Count = 571 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38CC69004102B9C5EEC6D89A9E51911C75 + +Count = 572 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38F02633503D954C8619452AFF7BC62B05 + +Count = 573 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C3831A4F2EE61EB4849204B09C5FDA84 + +Count = 574 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3867BF6E1CA8C21BE612EFF0716A53D90C + +Count = 575 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3810CDC958035C4D6DF98A8ADCF1C622EC + +Count = 576 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB388593214ECAB428F88FE55F43C0FAA8E2 + +Count = 577 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38096002B78DFCB82AAAFB80939D5E755D + +Count = 578 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C38DA10FC411AEC9CF019E770C951F5D + +Count = 579 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3867DA3626078C1124AE8D1B02300B8B47 + +Count = 580 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB384997A2EFBD97E20EB814224617CEF61A + +Count = 581 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C2571975E4E5CB50F877B2643C1AF40B + +Count = 582 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB381BE249E38D8DAC43C3A7001CAF152C6C + +Count = 583 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38A41B6479D8685432BB25C23AE528FF7E + +Count = 584 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38B22D082B6E0FFFD9E448C2333CDB6767 + +Count = 585 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB380C1C2DA1D1A2DB2F8150F8AB0541895E + +Count = 586 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB387B15EBB9D359F05598AD8EFF1984B332 + +Count = 587 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3854FAC62AA020DB8348DCE1177F062F03 + +Count = 588 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38516BAF5D34C5198C0CB4E0A2C254ECDF + +Count = 589 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38DDA6C27C939EDFC4E93B61EDACCC756E + +Count = 590 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38C7B76A28BCD08C9376F65C52798745B9 + +Count = 591 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385F57BA493E947637D2F0B8BDB823F4A2 + +Count = 592 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38E14E340DE6BD673B1C5A23F2C3938353 + +Count = 593 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38BB3FD26D982BD7C585092550E2D0398D + +Count = 594 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38D5407848B8B2A4EF1E8661D76AE6E0DE + +Count = 595 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850389E436D347ACC7269FCA2F2A3F8E014 + +Count = 596 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850B87A1A39C5585DB528F28133560ABD99 + +Count = 597 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38506FF43BE13FD3A461EDD9E4078568E4E2 + +Count = 598 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38504C2C7ADD397CBE4F460A604B189EB6B3 + +Count = 599 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850A6507E2DC4EEA02A8EC8C2109EDF0E0B + +Count = 600 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385038765136292C077AF0800F03F31B3B97 + +Count = 601 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850EA825F6D6C33D3ACDD3F8A8DB34AF20C + +Count = 602 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850CAF3EBD2D26D2EDB41A352A1B3A7948C + +Count = 603 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850C1CDD816AE936739404FC3D02FE7EF6C + +Count = 604 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850781C60D711383AA3A2C41E4F31765290 + +Count = 605 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850445353C62E14B3CB7D59AE2E1B2165E0 + +Count = 606 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385077F67AD93D67E1F9E08E8061FCB89461 + +Count = 607 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850D3CA0E8ABB43E4AB76F374A00AB497E9 + +Count = 608 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850A4B8A9CE10DDB2209D960E0D91216C09 + +Count = 609 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385031E641D8D935D7B5EBF9DB92A01DE607 + +Count = 610 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850BD1562219E7D4767CEE70442FDB93BB8 + +Count = 611 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385077F8C199D7905184AB1D1AA66C7251B8 + +Count = 612 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850D3AF56B0140DEE69CA919FD350ECC5A2 + +Count = 613 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850FDE2C279AE161D43DC08A6977729B8FF + +Count = 614 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850762279E3F764341D9C6B36B55CFDBAEE + +Count = 615 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850AF9729759E0C530EA7BB84CDCFF26289 + +Count = 616 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850106E04EFCBE9AB7FDF3946EB85CFB19B + +Count = 617 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850065868BD7D8E0094805446E25C3C2982 + +Count = 618 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850B8694D37C2232462E54C7C7A65A6C7BB + +Count = 619 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850CF608B2FC0D80F18FCB10A2E7963FDD7 + +Count = 620 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E08FA6BCB3A124CE2CC065C61FE161E6 + +Count = 621 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E51ECFCB2744E6C168A86473A2B3A23A + +Count = 622 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385069D3A2EA801F20898D27E53CCC2B3B8B + +Count = 623 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB385073C20ABEAF5173DE12EAD88319600B5C + +Count = 624 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850EB22DADF2D15897AB6EC3C6CD8C4BA47 + +Count = 625 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850553B549BF53C98767846A723A374CDB6 + +Count = 626 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB38500F4AB2FB8BAA2888E115A18182377768 + +Count = 627 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850613518DEAB335BA27A9AE5060A01AE3B + +Count = 628 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9BBCE0D22D50CEF67CE526B87A3BF7469 + +Count = 629 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E93B2A5476242E7EA08F5C4846564D29E4 + +Count = 630 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9ECA475AEDEA587744A772D72852F709F + +Count = 631 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9CF7C3492D80A9D5AE1A4A93E18D922CE + +Count = 632 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9250030622598833F29660B659E989A76 + +Count = 633 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9BB261F79C85A246F572EC676F35CAFEA + +Count = 634 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E969D211228D45F0B97A9143F8B30D6671 + +Count = 635 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E949A3A59D331B0DCEE60D9BD4B3E000F1 + +Count = 636 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9429D96594FE5442CE7E10AA52FA07B11 + +Count = 637 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9FB4C2E98F04E19B6056AD73A3131C6ED + +Count = 638 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9C7031D89CF6290DEDAF7675B1B66F19D + +Count = 639 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F4A63496DC11C2EC47204914FCFF001C + +Count = 640 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9509A40C55A35C7BED15DBDD50AF30394 + +Count = 641 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E927E8E781F1AB91353A38C7789166F874 + +Count = 642 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9B2B60F973843F4A04C5712E7A05A727A + +Count = 643 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E93E452C6E7F0B64726949CD37FDFEAFC5 + +Count = 644 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F4A88FD636E672910CB3D3D36C35C5C5 + +Count = 645 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E950FF18FFF57BCD7C6D3F56A650AB51DF + +Count = 646 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E97EB28C364F603E567BA66FE2776E2C82 + +Count = 647 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F57237AC161217083BC5FFC05CBA2E93 + +Count = 648 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E92CC7673A7F7A701B00154DB8CFB5F6F4 + +Count = 649 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9933E4AA02A9F886A78978F9E858825E6 + +Count = 650 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9850826F29CF8238127FA8F975C7BBDFF + +Count = 651 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E93B3903782355077742E2B50F65E153C6 + +Count = 652 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94C30C56021AE2C0D5B1FC35B792469AA + +Count = 653 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E963DFE8F352D707DB8B6EACB31FA6F59B + +Count = 654 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9664E8184C632C5D4CF06AD06A2F43647 + +Count = 655 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9EA83ECA56169039C2A892C49CC6CAFF6 + +Count = 656 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9F09244F14E2750CBB54411F619279F21 + +Count = 657 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E968729490CC63AA6F1142F519D8832E3A + +Count = 658 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9D66B1AD4144ABB63DFE86E56A33359CB + +Count = 659 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E98C1AFCB46ADC0B9D46BB68F48270E315 + +Count = 660 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E9E26556914A4578B7DD342C730A463A46 + +Count = 661 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D90BF81182AD5D9CE57A3FD6393DC267D + +Count = 662 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D105BD84CDBF7480916ADDEA2662E7BF0 + +Count = 663 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DC7D5F994217CB1DDD386BB96B54C228B + +Count = 664 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DE40DB8A827D3ABF378553FDA28BA70DA + +Count = 665 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D0E71BC58DA41B596B0979D81AEFBC862 + +Count = 666 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D90579343378312C6CEDF5092C33FFDFE + +Count = 667 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D42A39D18729CC610E360D51C836E3465 + +Count = 668 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D62D229A7CCC23B677FFC0D30838352E5 + +Count = 669 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D69EC1A63B03C72857E109C411FC32905 + +Count = 670 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DD03DA2A20F972F1F9C9B41DE015294F9 + +Count = 671 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DEC7291B330BBA6774306F1BF2B05A389 + +Count = 672 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDFD7B8AC23C8F445DED1DFF0CC9C5208 + +Count = 673 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D7BEBCCFFA5ECF11748AC2B313A905180 + +Count = 674 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D0C996BBB0E72A79CA3C9519CA105AA60 + +Count = 675 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D99C783ADC79AC209D5A684039039206E + +Count = 676 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D1534A05480D252DBF0B85BD3CD9DFDD1 + +Count = 677 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDFD903ECC93F4438954245375C5697D1 + +Count = 678 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D7B8E94C50AA2FBD5F4CEC04260C803CB + +Count = 679 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D55C3000CB0B908FFE257F906470D7E96 + +Count = 680 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDE03BB96E9CB21A1A23469246CD97C87 + +Count = 681 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D07B6EB0080A346B299E4DB5CFFD6A4E0 + +Count = 682 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DB84FC69AD546BEC3E166197AB5EB77F2 + +Count = 683 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DAE79AAC863211528BE0B19736C18EFEB + +Count = 684 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D10488F42DC8C31DEDB1323EB558201D2 + +Count = 685 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D6741495ADE771AA4C2EE55BF49473BBE + +Count = 686 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D48AE64C9AD0E3172129F3A572FC5A78F + +Count = 687 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D4D3F0DBE39EBF37D56F73BE292976453 + +Count = 688 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DC1F2609F9EB03535B378BAADFC0FFDE2 + +Count = 689 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DDBE3C8CBB1FE66622CB587122944CD35 + +Count = 690 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94D430318AA33BA9CC688B363FDE8E07C2E + +Count = 691 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DFD1A96EEEB938DCA4619F8B293500BDF + +Count = 692 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DA76B708E95053D34DF4AFE10B213B101 + +Count = 693 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DC914DAABB59C4E1E44C5BA973A256852 + +Count = 694 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFE6F49937E9BDA147D393F17A330913B5 + +Count = 695 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF6610C063189F3080929DD2BBC6FB4E38 + +Count = 696 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFB19EE1BBE214C95457B6B78F15991743 + +Count = 697 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9246A087E4BBD37AFC6533C3886F4512 + +Count = 698 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF783AA4771929CD1F34A791980E2EFDAA + +Count = 699 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFE61C8B6CF4EB6A4F4AEF5C8B63EAC836 + +Count = 700 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF34E88537B1F4BE996750D90523BB01AD + +Count = 701 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF149931880FAA43EEFBCC01292356672D + +Count = 702 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF1FA7024C73540A0CFA209058BF161CCD + +Count = 703 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA676BA8DCCFF579618AB4DC7A187A131 + +Count = 704 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9A39899CF3D3DEFEC736FDA68BD09641 + +Count = 705 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA99CA083E0A08CCC5AE1D3E96C4967C0 + +Count = 706 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF0DA0D4D06684899ECC9C27289A456448 + +Count = 707 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF7AD27394CD1ADF1527F95D8501D09FA8 + +Count = 708 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFEF8C9B8204F2BA805196881A30EC15A6 + +Count = 709 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF637FB87B43BA2A52748857CA6D48C819 + +Count = 710 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA9921BC30A573CB11172492EFC83A219 + +Count = 711 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF0DC58CEAC9CA835C70FECC5BC01D3603 + +Count = 712 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF2388182373D170766667F51FE7D84B5E + +Count = 713 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFA848A3B92AA359282604653DCC0C494F + +Count = 714 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF71FDF32F43CB3E3B1DD4D7455F039128 + +Count = 715 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFCE04DEB5162EC64A65561563153E423A + +Count = 716 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFD832B2E7A0496DA13A3B156ACCCDDA23 + +Count = 717 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF6603976D1FE449575F232FF2F557341A + +Count = 718 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF110A51751D1F622D46DE59A6E9920E76 + +Count = 719 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF3EE57CE66E6649FB96AF364E8F109247 + +Count = 720 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF3B741591FA838BF4D2C737FB3242519B + +Count = 721 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFB7B978B05DD84DBC3748B6B45CDAC82A + +Count = 722 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFADA8D0E472961EEBA8858B0B8991F8FD + +Count = 723 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF35480085F0D2E44F0C836FE4483549E6 + +Count = 724 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF8B518EC128FBF543C229F4AB33853E17 + +Count = 725 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFD12068A1566D45BD5B7AF20912C684C9 + +Count = 726 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBFBF5FC28476F43697C0F5B68E9AF05D9A + +Count = 727 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98797312339E7DE97B3682DC9AE41D3F06 + +Count = 728 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98F9974B676F5F78BC778CFF5B11EF628B + +Count = 729 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF982E196ABF95D48168B2A79A6FC28D3BF0 + +Count = 730 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF980DC12B83937B9B4619741E235F7B69A1 + +Count = 731 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98E7BD2F736EE98523D1B6BC78D93AD119 + +Count = 732 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98799B0068832B2273AFFE716BB4FEE485 + +Count = 733 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98AB6F0E33C634F6A58241F4E5F4AF2D1E + +Count = 734 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF988B1EBA8C786A0BD21EDD2CC9F4424B9E + +Count = 735 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9880208948049442301F31BDB86802307E + +Count = 736 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9839F13189BB3F1FAAFDBA602776938D82 + +Count = 737 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9805BE0298841396C22227D0465CC4BAF2 + +Count = 738 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98361B2B879760C4F0BFF0FE09BB5D4B73 + +Count = 739 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9892275FD41144C1A2298D0AC84D5148FB + +Count = 740 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98E555F890BADA9729C2E87065D6C4B31B + +Count = 741 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98700B10867332F2BCB487A5FAE7F83915 + +Count = 742 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98FCF8337F347A626E91997A2ABA5CE4AA + +Count = 743 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98361590C77D97748DF46364CE2B978EAA + +Count = 744 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98924207EEBE0ACB6095EFE1BB17091AB0 + +Count = 745 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98BC0F93270411384A8376D8FF30CC67ED + +Count = 746 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9837CF28BD5D631114C31548DD1B1865FC + +Count = 747 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98EE7A782B340B7607F8C5FAA58817BD9B + +Count = 748 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98518355B161EE8E7680473883C22A6E89 + +Count = 749 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9847B539E3D789259DDF2A388A1BD9F690 + +Count = 750 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98F9841C696824016BBA320212224318A9 + +Count = 751 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF988E8DDA716ADF2A11A3CF74463E8622C5 + +Count = 752 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98A162F7E219A601C773BE1BAE5804BEF4 + +Count = 753 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98A4F39E958D43C3C837D61A1BE5567D28 + +Count = 754 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98283EF3B42A180580D2599B548BCEE499 + +Count = 755 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98322F5BE0055656D74D94A6EB5E85D44E + +Count = 756 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98AACF8B818712AC73E99242049F216555 + +Count = 757 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9814D605C55F3BBD7F2738D94BE49112A4 + +Count = 758 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF984EA7E3A521AD0D81BE6BDFE9C5D2A87A + +Count = 759 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF9820D8498001347EAB25E49B6E4DE47129 + +Count = 760 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA315A271C403148CCC76B3CBEA9095699 + +Count = 761 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAB1BE7E48B113D90B86651F7F5CFB0B14 + +Count = 762 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA66305F904B9820DF434E7A4B8F99526F + +Count = 763 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA45E81EAC4D373AF1E89DFE07126F003E + +Count = 764 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAAF941A5CB0A52494205F5C5C942EB886 + +Count = 765 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA31B235475D6783C45E17914FF9EA8D1A + +Count = 766 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAE3463B1C1878571273A814C1B9BB4481 + +Count = 767 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAC3378FA3A626AA65EF34CCEDB9562201 + +Count = 768 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAC809BC67DAD8E387EED85D9C251659E1 + +Count = 769 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA71D804A66573BE1D0C5380033B87E41D + +Count = 770 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA4D9737B75A5F3775D3CE306211D0D36D + +Count = 771 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7E321EA8492C65474E191E2DF64922EC + +Count = 772 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CADA0E6AFBCF086015D864EAEC00452164 + +Count = 773 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAAD7CCDBF6496369E330190419BD0DA84 + +Count = 774 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA382225A9AD7E530B456E45DEAAEC508A + +Count = 775 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAB4D10650EA36C3D960709A0EF7488D35 + +Count = 776 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7E3CA5E8A3DBD53A058A84EA6683E735 + +Count = 777 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CADA6B32C160466AD76406019F5A1D732F + +Count = 778 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAF426A608DA5D99FD729F38DB7DD80E72 + +Count = 779 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7FE61D92832FB0A332FCA8F9560C0C63 + +Count = 780 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAA6534D04EA47D7B0092C1A81C503D404 + +Count = 781 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA19AA609EBFA22FC171AED8A78F3E0716 + +Count = 782 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA0F9C0CCC09C5842A2EC3D8AE56CD9F0F + +Count = 783 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAB1AD2946B668A0DC4BDBE2366F577136 + +Count = 784 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAC6A4EF5EB4938BA65226946273924B5A + +Count = 785 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAE94BC2CDC7EAA0708257FB8A1510D76B + +Count = 786 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAECDAABBA530F627FC63FFA3FA84214B7 + +Count = 787 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA6017C69BF454A43723B07B70C6DA8D06 + +Count = 788 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7A066ECFDB1AF760BC7D46CF1391BDD1 + +Count = 789 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CAE2E6BEAE595E0DC4187BA220D2350CCA + +Count = 790 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA5CFF30EA81771CC8D6D1396FA9857B3B + +Count = 791 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA068ED68AFFE1AC364F823FCD88C6C1E5 + +Count = 792 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA68F17CAFDF78DF1CD40D7B4A00F018B6 + +Count = 793 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D3879249A8815AA6E1E2FADA01DA93FB4 + +Count = 794 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DB89D7DCE79373BA95F218E61E85B6239 + +Count = 795 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D6F135C1683BCC27D9A0AEB553B393B42 + +Count = 796 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D4CCB1D2A8513D85331D96F19A6CF6913 + +Count = 797 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DA6B719DA7881C636F91BCD42208ED1AB + +Count = 798 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D389136C195436166875300514D4AE437 + +Count = 799 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DEA65389AD05CB5B0AAEC85DF0D1B2DAC + +Count = 800 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DCA148C256E0248C736705DF30DF64B2C + +Count = 801 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DC12ABFE112FC0125379CCC8291B630CC + +Count = 802 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D78FB0720AD575CBFD517111D8F278D30 + +Count = 803 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D44B43431927BD5D70A8AA17CA570BA40 + +Count = 804 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D77111D2E810887E5975D8F3342E94BC1 + +Count = 805 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DD32D697D072C82B701207BF2B4E54849 + +Count = 806 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DA45FCE39ACB2D43CEA45015F2F70B3A9 + +Count = 807 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D3101262F655AB1A99C2AD4C01E4C39A7 + +Count = 808 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DBDF205D62212217BB9340B1043E8E418 + +Count = 809 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D771FA66E6BFF3798DCCE15F4D2238E18 + +Count = 810 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DD3483147A8628875BD429081EEBD1A02 + +Count = 811 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DFD05A58E12797B5FABDBA9C5C978675F + +Count = 812 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D76C51E144B0B5201EBB839E7E2AC654E + +Count = 813 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DAF704E8222633512D0688B9F71A3BD29 + +Count = 814 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D108963187786CD63A8EA49B93B9E6E3B + +Count = 815 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D06BF0F4AC1E16688F78749B0E26DF622 + +Count = 816 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DB88E2AC07E4C427E929F7328DBF7181B + +Count = 817 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DCF87ECD87CB769048B62057CC7322277 + +Count = 818 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DE068C14B0FCE42D25B136A94A1B0BE46 + +Count = 819 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DE5F9A83C9B2B80DD1F7B6B211CE27D9A + +Count = 820 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D6934C51D3C704695FAF4EA6E727AE42B + +Count = 821 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D73256D49133E15C26539D7D1A731D4FC + +Count = 822 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7DEBC5BD28917AEF66C13F333E669565E7 + +Count = 823 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D55DC336C4953FE6A0F95A8711D251216 + +Count = 824 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D0FADD50C37C54E9496C6AED33C66A8C8 + +Count = 825 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D61D27F29175C3DBE0D49EA54B450719B + +Count = 826 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56D289C6B924DE277E1A8E88E768123B25 + +Count = 827 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526D9FEDD5FCB6B95B80AB269DE066A8 + +Count = 828 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5685E3BE352F774F6D9EABCE124E823FD3 + +Count = 829 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56A63BFF0929D8554335784A5ED3746D82 + +Count = 830 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D564C47FBF9D44A4B26FDBAE8055535D53A + +Count = 831 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56D261D4E23988EC7683F2251638F1E0A6 + +Count = 832 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D560095DAB97C9738A0AE4DA09878A0293D + +Count = 833 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5620E46E06C2C9C5D732D178B4784D4FBD + +Count = 834 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D562BDA5DC2BE378C35333DE9C5E40D345D + +Count = 835 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56920BE503019CD1AFD1B6345AFA9C89A1 + +Count = 836 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56AE44D6123EB058C70E2B843BD0CBBED1 + +Count = 837 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D569DE1FF0D2DC30AF593FCAA7437524F50 + +Count = 838 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5639DD8B5EABE70FA705815EB5C15E4CD8 + +Count = 839 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D564EAF2C1A0079592CEEE424185ACBB738 + +Count = 840 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56DBF1C40CC9913CB9988BF1876BF73D36 + +Count = 841 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565702E7F58ED9AC6BBD952E573653E089 + +Count = 842 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D569DEF444DC734BA88D86F30B3A7988A89 + +Count = 843 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5639B8D36404A90565B9E3B5C69B061E93 + +Count = 844 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5617F547ADBEB2F64FAF7A8C82BCC363CE + +Count = 845 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D569C35FC37E7C0DF11EF191CA0971761DF + +Count = 846 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D564580ACA18EA8B802D4C9AED80418B9B8 + +Count = 847 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56FA79813BDB4D4073AC4B6CFE4E256AAA + +Count = 848 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56EC4FED696D2AEB98F3266CF797D6F2B3 + +Count = 849 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56527EC8E3D287CF6E963E566FAE4C1C8A + +Count = 850 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5625770EFBD07CE4148FC3203BB28926E6 + +Count = 851 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D560A982368A305CFC25FB24FD3D40BBAD7 + +Count = 852 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D560F094A1F37E00DCD1BDA4E666959790B + +Count = 853 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5683C4273E90BBCB85FE55CF2907C1E0BA + +Count = 854 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5699D58F6ABFF598D26198F296D28AD06D + +Count = 855 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5601355F0B3DB16276C59E1679132E6176 + +Count = 856 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56BF2CD14FE598737A0B348D36689E1687 + +Count = 857 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56E55D372F9B0EC38492678B9449DDAC59 + +Count = 858 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D568B229D0ABB97B0AE09E8CF13C1EB750A + +Count = 859 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652EB73118CA18636EBDB576C67EE1D205E + +Count = 860 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526B9748D850A4A72C9A594FA61BEF7DD3 + +Count = 861 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652BC196900AA2F5EF85F722A92C88D24A8 + +Count = 862 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56529FC1283CAC8044D6F4A1AEDE557B76F9 + +Count = 863 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565275BD2CCC51125AB33C630C85D33ACE41 + +Count = 864 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652EB9B03D7BCD0FDE3422BC196BEFEFBDD + +Count = 865 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652396F0D8CF9CF29356F944418FEAF3246 + +Count = 866 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652191EB9334791D442F3089C34FE4254C6 + +Count = 867 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565212208AF73B6F9DA0F2E40D4562022F26 + +Count = 868 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652ABF1323684C4C03A106FD0DA7C9392DA + +Count = 869 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565297BE0127BBE84952CFF260BB56C4A5AA + +Count = 870 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A41B2838A89B1B6052254EF4B15D542B + +Count = 871 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565200275C6B2EBF1E32C458BA35475157A3 + +Count = 872 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56527755FB2F852148B92F3DC098DCC4AC43 + +Count = 873 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652E20B13394CC92D2C59521507EDF8264D + +Count = 874 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526EF830C00B81BDFE7C4CCAD7B05CFBF2 + +Count = 875 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A4159378426CAB1D19B6D433219791F2 + +Count = 876 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56520042045181F114F0783A51461D0905E8 + +Count = 877 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56522E0F90983BEAE7DA6EA368023ACC78B5 + +Count = 878 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A5CF2B026298CE842EC0F82011187AA4 + +Count = 879 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56527C7A7B940BF0A99715104A588217A2C3 + +Count = 880 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652C383560E5E1551E66D92887EC82A71D1 + +Count = 881 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652D5B53A5CE872FA0D32FF887711D9E9C8 + +Count = 882 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56526B841FD657DFDEFB57E7B2EF284307F1 + +Count = 883 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56521C8DD9CE5524F5814E1AC4BB34863D9D + +Count = 884 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56523362F45D265DDE579E6BAB535204A1AC + +Count = 885 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565236F39D2AB2B81C58DA03AAE6EF566270 + +Count = 886 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652BA3EF00B15E3DA103F8C2BA981CEFBC1 + +Count = 887 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652A02F585F3AAD8947A04116165485CB16 + +Count = 888 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565238CF883EB8E973E30447F2F995217A0D + +Count = 889 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565286D6067A60C062EFCAED69B6EE910DFC + +Count = 890 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652DCA7E01A1E56D21153BE6F14CFD2B722 + +Count = 891 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652B2D84A3F3ECFA13BC8312B9347E46E71 + +Count = 892 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246DE164A4E9E3FBCE56CDC9BFB7E8EA0AF + +Count = 893 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652465EF2131A6F1D2D222DD2B83A8B7CFD22 + +Count = 894 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246897C32C29596D4F6E8F9DD0E581EA459 + +Count = 895 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AAA473FE9339CED8432A5942C5E8F608 + +Count = 896 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524640D8770E6EABD0BD8BE8FB1943A94EB0 + +Count = 897 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246DEFE5815836977EDF5A0360A2E6D7B2C + +Count = 898 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460C0A564EC676A33BD81FB3846E3CB2B7 + +Count = 899 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652462C7BE2F178285E4C44836BA86ED1D437 + +Count = 900 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652462745D13504D617AE456FFAD9F291AFD7 + +Count = 901 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652469E9469F4BB7D4A34A7E42746EC00122B + +Count = 902 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246A2DB5AE58451C35C78799727C657255B + +Count = 903 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246917E73FA9722916EE5AEB96821CED4DA + +Count = 904 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246354207A91106943C73D34DA9D7C2D752 + +Count = 905 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652464230A0EDBA98C2B798B637044C572CB2 + +Count = 906 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246D76E48FB7370A722EED9E29B7D6BA6BC + +Count = 907 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652465B9D6B02343837F0CBC73D4B20CF7B03 + +Count = 908 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652469170C8BA7DD52113AE3D23AFB1041103 + +Count = 909 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524635275F93BE489EFECFB1A6DA8D9A8519 + +Count = 910 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652461B6ACB5A04536DD4D9289F9EAA5FF844 + +Count = 911 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524690AA70C05D21448A994B0FBC818BFA55 + +Count = 912 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246491F205634492399A29BBDC412842232 + +Count = 913 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246F6E60DCC61ACDBE8DA197FE258B9F120 + +Count = 914 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246E0D0619ED7CB700385747FEB814A6939 + +Count = 915 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652465EE14414686654F5E06C4573B8D08700 + +Count = 916 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524629E8820C6A9D7F8FF9913327A415BD6C + +Count = 917 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460607AF9F19E4545929E05CCFC297215D + +Count = 918 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460396C6E88D0196566D885D7A7FC5E281 + +Count = 919 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652468F5BABC92A5A501E8807DC35115D7B30 + +Count = 920 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246954A039D0514034917CAE18AC4164BE7 + +Count = 921 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D5652460DAAD3FC8750F9EDB3CC056505B2FAFC + +Count = 922 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246B3B35DB85F79E8E17D669E2A7E028D0D + +Count = 923 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246E9C2BBD821EF581FE43598885F4137D3 + +Count = 924 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D56524687BD11FD01762B357FBADC0FD777EE80 + +Count = 925 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADB5240A851D678E9A0392822781F0652A + +Count = 926 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD35C053D1EC451F5D429CA1E6740238A7 + +Count = 927 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADE24E720916CEE68987B7C4D2A76061DC + +Count = 928 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADC19633351061FCA72C64409E3A96338D + +Count = 929 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD2BEA37C5EDF3E2C2E4A6E2C5BCD78B35 + +Count = 930 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADB5CC18DE003145929AEE2FD6D113BEA9 + +Count = 931 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD67381685452E9144B751AA5891427732 + +Count = 932 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD4749A23AFB706C332BCD727491AF11B2 + +Count = 933 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD4C7791FE878E25D12A21E3050DEF6A52 + +Count = 934 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADF5A6293F3825784BC8AA3E9A137ED7AE + +Count = 935 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADC9E91A2E0709F12317378EFB3929E0DE + +Count = 936 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFA4C3331147AA3118AE0A0B4DEB0115F + +Count = 937 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD5E704762925EA6431C9D547528BC12D7 + +Count = 938 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD2902E02639C0F0C8F7F82ED8B329E937 + +Count = 939 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADBC5C0830F028955D8197FB4782156339 + +Count = 940 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD30AF2BC9B760058FA4892497DFB1BE86 + +Count = 941 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFA428871FE8D136CC1733A734E7AD486 + +Count = 942 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD5E151F583D10AC81A0FFBF0672E4409C + +Count = 943 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD70588B91870B5FABB666864255213DC1 + +Count = 944 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFB98300BDE7976F5F60516607EF53FD0 + +Count = 945 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD222D609DB71111E6CDD5A418EDFAE7B7 + +Count = 946 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD9DD44D07E2F4E997B557663EA7C734A5 + +Count = 947 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD8BE221555493427CEA3A66377E34ACBC + +Count = 948 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD35D304DFEB3E668A8F225CAF47AE4285 + +Count = 949 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD42DAC2C7E9C54DF096DF2AFB5B6B78E9 + +Count = 950 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD6D35EF549ABC662646AE45133DE9E4D8 + +Count = 951 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD68A486230E59A42902C644A680BB2704 + +Count = 952 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADE469EB02A9026261E749C5E9EE23BEB5 + +Count = 953 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADFE784356864C31367884F8563B688E62 + +Count = 954 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD669893370408CB92DC821CB9FACC3F79 + +Count = 955 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADD8811D73DC21DA9E122887F6817C4888 + +Count = 956 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD82F0FB13A2B76A608B7B8154A03FF256 + +Count = 957 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246ADEC8F5136822E194A10F4C5D328092B05 + +Count = 958 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02449FB931CB69C53A8FFFCFD806C36049 + +Count = 959 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02C47BE0653A4B54FDCEF1EC19F3313DC4 + +Count = 960 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0213F5C1BDC0C0AD290BDA892D205364BF + +Count = 961 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02302D8081C66FB707A0090D61BDA536EE + +Count = 962 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02DA5184713BFDA96268CBAF3A3BE48E56 + +Count = 963 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD024477AB6AD63F0E32168362295620BBCA + +Count = 964 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD029683A5319320DAE43B3CE7A716717251 + +Count = 965 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02B6F2118E2D7E2793A7A03F8B169C14D1 + +Count = 966 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02BDCC224A51806E71A64CAEFA8ADC6F31 + +Count = 967 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02041D9A8BEE2B33EB44C77365944DD2CD + +Count = 968 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD023852A99AD107BA839B5AC304BE1AE5BD + +Count = 969 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020BF78085C274E8B1068DED4B5983143C + +Count = 970 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02AFCBF4D64450EDE390F0198AAF8F17B4 + +Count = 971 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02D8B95392EFCEBB687B956327341AEC54 + +Count = 972 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD024DE7BB842626DEFD0DFAB6B80526665A + +Count = 973 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02C114987D616E4E2F28E469685882BBE5 + +Count = 974 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020BF93BC5288358CC4D1E778CC949D1E5 + +Count = 975 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02AFAEACECEB1EE7212C92F2F9F5D745FF + +Count = 976 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0281E338255105140B3A0BCBBDD21238A2 + +Count = 977 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020A2383BF08773D557A685B9FF9C63AB3 + +Count = 978 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02D396D329611F5A4641B8E9E76AC9E2D4 + +Count = 979 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD026C6FFEB334FAA237393A2BC120F431C6 + +Count = 980 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD027A5992E1829D09DC66572BC8F907A9DF + +Count = 981 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02C468B76B3D302D2A034F1150C09D47E6 + +Count = 982 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02B36171733FCB06501AB26704DC587D8A + +Count = 983 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD029C8E5CE04CB22D86CAC308ECBADAE1BB + +Count = 984 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02991F3597D857EF898EAB095907882267 + +Count = 985 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0215D258B67F0C29C16B2488166910BBD6 + +Count = 986 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020FC3F0E250427A96F4E9B5A9BC5B8B01 + +Count = 987 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0297232083D206803250EF51467DFF3A1A + +Count = 988 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02293AAEC70A2F913E9E45CA09064F4DEB + +Count = 989 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02734B48A774B921C00716CCAB270CF735 + +Count = 990 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD021D34E282542052EA9C99882CAF3A2E66 + +Count = 991 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207543A1A74389A92DB5117FCAA6311BF17 + +Count = 992 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207D4DE4320C9B8031C1019DF6B96E3E29A + +Count = 993 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207035062F83333FAC8D532BA5F4581BBE1 + +Count = 994 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207208823C4359CE0E67EE13E13D877E9B0 + +Count = 995 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207CAF42734C80EFE83B6239C485E365108 + +Count = 996 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020754D2082F25CC59D3C86B515B33F26494 + +Count = 997 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02078626067460D38D05E5D4D4D573A3AD0F + +Count = 998 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207A657B2CBDE8D707279480CF9734ECB8F + +Count = 999 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207AD69810FA273399078A49D88EF0EB06F + +Count = 1000 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020714B839CE1DD8640A9A2F4017F19F0D93 + +Count = 1001 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020728F70ADF22F4ED6245B2F076DBC83AE3 + +Count = 1002 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071B5223C03187BF50D865DE393C51CB62 + +Count = 1003 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207BF6E5793B7A3BA024E182AF8CA5DC8EA + +Count = 1004 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207C81CF0D71C3DEC89A57D505551C8330A + +Count = 1005 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02075D4218C1D5D5891CD31285CA60F4B904 + +Count = 1006 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207D1B13B38929D19CEF60C5A1A3D5064BB + +Count = 1007 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071B5C9880DB700F2D93F644FEAC9B0EBB + +Count = 1008 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207BF0B0FA918EDB0C0F27AC18B90059AA1 + +Count = 1009 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020791469B60A2F643EAE4E3F8CFB7C0E7FC + +Count = 1010 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071A8620FAFB846AB4A48068ED9C14E5ED + +Count = 1011 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207C333706C92EC0DA79F50DA950F1B3D8A + +Count = 1012 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02077CCA5DF6C709F5D6E7D218B34526EE98 + +Count = 1013 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02076AFC31A4716E5E3DB8BF18BA9CD57681 + +Count = 1014 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207D4CD142ECEC37ACBDDA72222A54F98B8 + +Count = 1015 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207A3C4D236CC3851B1C45A5476B98AA2D4 + +Count = 1016 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02078C2BFFA5BF417A67142B3B9EDF083EE5 + +Count = 1017 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020789BA96D22BA4B86850433A2B625AFD39 + +Count = 1018 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070577FBF38CFF7E20B5CCBB640CC26488 + +Count = 1019 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02071F6653A7A3B12D772A0186DBD989545F + +Count = 1020 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207878683C621F5D7D38E076234182DE544 + +Count = 1021 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD0207399F0D82F9DCC6DF40ADF97B639D92B5 + +Count = 1022 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD020763EEEBE2874A7621D9FEFFD942DE286B + +Count = 1023 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070D9141C7A7D3050B4271BB5ECAE8F138 + +Count = 1024 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EE5AF8F9C40050554CBD76E8A5C19BE07 + +Count = 1025 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E654BD6C8B12794938AD94D4BA9EBE38A + +Count = 1026 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EB2C5F7104BAC6D474FF2287F7A89BAF1 + +Count = 1027 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E911DB62C4D037769E421AC33E77FE8A0 + +Count = 1028 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E7B61B2DCB091690C2CE30E68613E5018 + +Count = 1029 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EE5479DC75D53CE5C52ABC37B0CFA6584 + +Count = 1030 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E37B3939C184C1A8A7F1446F54CABAC1F + +Count = 1031 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E17C22723A612E7FDE3889ED94C46CA9F + +Count = 1032 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E1CFC14E7DAECAE1FE2640FA8D006B17F + +Count = 1033 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EA52DAC266547F38500EFD237CE970C83 + +Count = 1034 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E99629F375A6B7AEDDF726256E4C03BF3 + +Count = 1035 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAAC7B628491828DF42A54C190359CA72 + +Count = 1036 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E0EFBC27BCF3C2D8DD4D8B8D8F555C9FA + +Count = 1037 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E7989653F64A27B063FBDC2756EC0321A + +Count = 1038 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EECD78D29AD4A1E9349D217EA5FFCB814 + +Count = 1039 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E6024AED0EA028E416CCCC83A025865AB + +Count = 1040 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAAC90D68A3EF98A20936D6DE93930FAB + +Count = 1041 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E0E9E9A416072274F68BA53ABAF0D9BB1 + +Count = 1042 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E20D30E88DA69D4657E236AEF88C8E6EC + +Count = 1043 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAB13B512831BFD3B3E40FACDA31CE4FD + +Count = 1044 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E72A6E584EA739A28059048B530133C9A + +Count = 1045 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070ECD5FC81EBF9662597D128A937A2EEF88 + +Count = 1046 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EDB69A44C09F1C9B2227F8A9AA3DD7791 + +Count = 1047 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E655881C6B65CED444767B0029A4799A8 + +Count = 1048 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E125147DEB4A7C63E5E9AC6568682A3C4 + +Count = 1049 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E3DBE6A4DC7DEEDE88EEBA9BEE0003FF5 + +Count = 1050 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E382F033A533B2FE7CA83A80B5D52FC29 + +Count = 1051 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EB4E26E1BF460E9AF2F0C294433CA6598 + +Count = 1052 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EAEF3C64FDB2EBAF8B0C114FBE681554F + +Count = 1053 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E3613162E596A405C14C7F0142725E454 + +Count = 1054 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070E880A986A81435150DA6D6B5B5C9593A5 + +Count = 1055 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070ED27B7E0AFFD5E1AE433E6DF97DD6297B + +Count = 1056 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BB3850E94DBF98CA7D565246AD02070EBC04D42FDF4C9284D8B1297EF5E0F028 + +Count = 1057 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF159AF1D2E487A8710728DE9B07AEC5BA + +Count = 1058 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF957EA88615A539B64626FD5AF25C9837 + +Count = 1059 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF42F0895EEF2EC062830D986E213EC14C + +Count = 1060 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF6128C862E981DA4C28DE1C22BCC8931D + +Count = 1061 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF8B54CC921413C429E01CBE793A892BA5 + +Count = 1062 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF1572E389F9D163799E54736A574D1E39 + +Count = 1063 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFC786EDD2BCCEB7AFB3EBF6E4171CD7A2 + +Count = 1064 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFE7F7596D02904AD82F772EC817F1B122 + +Count = 1065 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304050607 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFECC96AA97E6E033A2E9BBFB98BB1CAC2 + +Count = 1066 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5518D268C1C55EA0CC1062269520773E + +Count = 1067 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506070809 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF6957E179FEE9D7C8138DD247BF77404E + +Count = 1068 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5AF2C866ED9A85FA8E5AFC0858EEB1CF + +Count = 1069 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFFECEBC356BBE80A8182708C9AEE2B247 + +Count = 1070 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF89BC1B71C020D623F3427264357749A7 + +Count = 1071 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF1CE2F36709C8B3B6852DA7FB044BC3A9 + +Count = 1072 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF9011D09E4E802364A033782B59EF1E16 + +Count = 1073 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5AFC7326076D3587C5C966CFC8247416 + +Count = 1074 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFFEABE40FC4F08A6AA445E3BAF4BAE00C + +Count = 1075 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFD0E670C67EEB7940B2DCDAFED37F9D51 + +Count = 1076 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5B26CB5C2799501EF2BF4ADCF8AB9F40 + +Count = 1077 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF82939BCA4EF1370DC96FF8A46BA44727 + +Count = 1078 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF3D6AB6501B14CF7CB1ED3A8221999435 + +Count = 1079 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF2B5CDA02AD736497EE803A8BF86A0C2C + +Count = 1080 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF956DFF8812DE40618B980013C1F0E215 + +Count = 1081 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFE264399010256B1B92657647DD35D879 + +Count = 1082 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFCD8B1403635C40CD421419AFBBB74448 + +Count = 1083 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFC81A7D74F7B982C2067C181A06E58794 + +Count = 1084 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF44D7105550E2448AE3F39955687D1E25 + +Count = 1085 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF5EC6B8017FAC17DD7C3EA4EABD362EF2 + +Count = 1086 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CFC6266860FDE8ED79D83840057C929FE9 + +Count = 1087 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF783FE62425C1FC751692DB4A0722E818 + +Count = 1088 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF224E00445B574C8B8FC1DDE8266152C6 + +Count = 1089 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B0C0D0E0F +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 22D072FBFF7C1E1B601F8BD9CA10C7BBE70783C4E76E8339FCB66C381327D9CF4C31AA617BCE3FA1144E996FAE578B95 + diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/api.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/crypto_aead.h new file mode 100644 index 0000000..e2ca9b0 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/crypto_aead.h @@ -0,0 +1,18 @@ + +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 +); + +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 +); \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/encrypt.c new file mode 100644 index 0000000..de98d07 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/encrypt.c @@ -0,0 +1,201 @@ +/****************************************************************************** +* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). +* +* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include "skinny128.h" +#include "skinnyaead.h" +#include +#include + +/****************************************************************************** +* x ^= y where x, y are 128-bit blocks (16 bytes array). +******************************************************************************/ +static void xor_block(u8 * x, const u8* y) { + for(int i = 0; i < BLOCKBYTES; i++) + x[i] ^= y[i]; +} + +/****************************************************************************** +* Encryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u64 i,lfsr = 1; + u8 feedback; + u32 rtk1[4*16]; + u32 rtk2_3[4*SKINNY128_384_ROUNDS]; + u8 tmp[BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + tkschedule_lfsr(rtk2_3, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(rtk2_3); + memset(tmp, 0x00, BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(sum, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (mlen >= BLOCKBYTES) { // while entire blocks to process + LE_STR_64(tmp, lfsr); + tkschedule_perm_tk1(rtk1, tmp); // precompute RTK1 given the LFSR + skinny128_384(c, rtk2_3, m, rtk1); + xor_block(sum, m); // sum for tag computation + mlen -= BLOCKBYTES; + c += BLOCKBYTES; + m += BLOCKBYTES; + UPDATE_LFSR(lfsr); // update lfsr for next block + } + SET_DOMAIN(tmp, 0x04); // domain for tag computation + if (mlen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); // lfsr for last block + SET_DOMAIN(tmp, 0x01); // domain for padding + for(i = 0; i < mlen; i++) + sum[i] ^= m[i]; // sum for tag computation + sum[i] ^= 0x80; // padding + tkschedule_perm_tk1(rtk1, tmp); + skinny128_384(auth, rtk2_3, auth, rtk1); // encrypt 'auth' = 0^16 + for(i = 0; i < mlen; i++) + c[i] = auth[i] ^ m[i]; // encrypted padded block + c += mlen; + SET_DOMAIN(tmp, 0x05); // domain for tag computation + UPDATE_LFSR(lfsr); + } + LE_STR_64(tmp, lfsr); // lfsr for tag computation + tkschedule_perm_tk1(rtk1, tmp); + skinny128_384(sum, rtk2_3, sum, rtk1); // compute the tag + memcpy(c, sum, TAGBYTES); + // ----------------- Process the plaintext ----------------- + + // ----------------- Process the associated data ----------------- + lfsr = 1; + SET_DOMAIN(tmp, 0x02); + memset(auth, 0x00, BLOCKBYTES); + while (adlen >= BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + tkschedule_perm_tk1(rtk1, tmp); + skinny128_384(sum, rtk2_3, ad, rtk1); // use 'sum' as tmp array + xor_block(auth, sum); + adlen -= BLOCKBYTES; + ad += BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + if (adlen > 0) { + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x03); // domain for padding ad + tkschedule_perm_tk1(rtk1, tmp); + memset(tmp, 0x00, BLOCKBYTES); // padding + memcpy(tmp, ad, adlen); // padding + tmp[adlen] = 0x80; // padding + skinny128_384(tmp, rtk2_3, tmp, rtk1); + xor_block(auth, tmp); + } + xor_block(c, auth); // XOR for tag computation + // ----------------- Process the associated data ----------------- + + return 0; +} + +/****************************************************************************** +* Encryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u64 i,lfsr = 1; + u8 feedback; + u32 rtk1[4*16]; + u32 rtk2_3[4*SKINNY128_384_ROUNDS]; + u8 tmp[2*BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + clen -= TAGBYTES; + *mlen = clen; + tkschedule_lfsr(rtk2_3, npub, k, SKINNY128_384_ROUNDS); + tkschedule_perm(rtk2_3); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(sum, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (clen >= BLOCKBYTES) { // while entire blocks to process + LE_STR_64(tmp, lfsr); + tkschedule_perm_tk1(rtk1, tmp); // precompute RTK1 given the LFSR + skinny128_384_inv(m, rtk2_3, c, rtk1); + xor_block(sum, m); // sum for tag computation + clen -= BLOCKBYTES; + c += BLOCKBYTES; + m += BLOCKBYTES; + UPDATE_LFSR(lfsr); // update LFSR for the next block + } + SET_DOMAIN(tmp, 0x04); // domain for tag computation + if (clen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); // lfsr for last block + SET_DOMAIN(tmp, 0x01); // domain for padding + tkschedule_perm_tk1(rtk1, tmp); + skinny128_384(auth, rtk2_3, auth, rtk1); + for(i = 0; i < clen; i++) { + m[i] = auth[i] ^ c[i]; // encrypted padded block + sum[i] ^= m[i]; // sum for tag computation + } + sum[i] ^= 0x80; // padding + c += clen; + SET_DOMAIN(tmp, 0x05); // domain for tag computation + UPDATE_LFSR(lfsr); + } + LE_STR_64(tmp, lfsr); // lfsr for tag computation + tkschedule_perm_tk1(rtk1, tmp); + skinny128_384(sum, rtk2_3, sum, rtk1); // compute the tag + // ----------------- Process the plaintext ----------------- + + // ----------------- Process the associated data ----------------- + lfsr = 1; + SET_DOMAIN(tmp, 0x02); + memset(auth, 0x00, BLOCKBYTES); + while (adlen >= BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + tkschedule_perm_tk1(rtk1, tmp); + skinny128_384(tmp + BLOCKBYTES, rtk2_3, ad, rtk1); + xor_block(auth, tmp + BLOCKBYTES); + adlen -= BLOCKBYTES; + ad += BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + if (adlen > 0) { + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x03); // domain for padding ad + tkschedule_perm_tk1(rtk1, tmp); + memset(tmp, 0x00, BLOCKBYTES); // padding + memcpy(tmp, ad, adlen); // padding + tmp[adlen] ^= 0x80; // padding + skinny128_384(tmp, rtk2_3, tmp, rtk1); + xor_block(auth, tmp); + } + xor_block(sum, auth); // XOR for tag computation + feedback = 0; + for(i = 0; i < TAGBYTES; i++) + feedback |= sum[i] ^ c[i]; // constant-time tag verification + return feedback; + // ----------------- Process the associated data ----------------- +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.h new file mode 100644 index 0000000..ce1f4f3 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.h @@ -0,0 +1,16 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +#define SKINNY128_384_ROUNDS 40 + +extern void skinny128_384(u8* ctext, const u32* rtk2_3, const u8* ptext, const u32* rtk1); +extern void skinny128_384_inv(u8* ptext, const u32* rtk2_3, const u8* ctext, const u32* rtk1); +extern void tkschedule_lfsr(u32* rtk2_3, const u8* tk2, const u8* tk3, const int rounds); +extern void tkschedule_perm(u32* rtk2_3); +extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1); + + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.s b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.s new file mode 100644 index 0000000..5341082 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinny128.s @@ -0,0 +1,2137 @@ +/******************************************************************************* +* ARM assembly implementation of fixsliced SKINNY-128-384. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +*******************************************************************************/ + +.syntax unified +.thumb + +/******************************************************************************* +* applies P^2 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p2: + movw r1, #0xcc00 + movt r1, #0xcc00 //r1 <- 0xcc00cc00 + movw r10, #0xcc00 + movt r10, #0x0033 //r10<- 0xcc000033 + and r11, r1, r6, ror #14 + bfi r11, r6, #16, #8 + and r12, r6, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r6 + orr r11, r11, r12, lsr #8 + and r12, r6, #0x00cc0000 + orr r6, r11, r12, lsr #18 + and r11, r1, r7, ror #14 + bfi r11, r7, #16, #8 + and r12, r7, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r7 + orr r11, r11, r12, lsr #8 + and r12, r7, #0x00cc0000 + orr r7, r11, r12, lsr #18 + and r11, r1, r8, ror #14 + bfi r11, r8, #16, #8 + and r12, r8, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r8 + orr r11, r11, r12, lsr #8 + and r12, r8, #0x00cc0000 + orr r8, r11, r12, lsr #18 + and r11, r1, r9, ror #14 + bfi r11, r9, #16, #8 + and r12, r9, #0xcc000000 + orr r11, r11, r12, lsr #2 + and r12, r10, r9 + orr r11, r11, r12, lsr #8 + and r12, r9, #0x00cc0000 + orr r9, r11, r12, lsr #18 + bx lr + +/******************************************************************************* +* applies P^4 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p4: + str.w r14, [sp] //store r14 on the stack + movw r14, #0x00cc + movt r14, #0xcc00 //r14<- 0xcc0000cc + movw r12, #0xcc00 + movt r12, #0x3300 //r12<- 0x3300cc00 + movw r11, #0x00cc + movt r11, #0x00cc //r11<- 0x00cc00cc + and r10, r14, r6, ror #22 + and r1, r12, r6, ror #16 + orr r10, r10, r1 + and r1, r6, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r6, r6, r1 + orr r6, r10, r6, ror #24 + and r10, r14, r7, ror #22 + and r1, r12, r7, ror #16 + orr r10, r10, r1 + and r1, r7, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r7, r7, r1 + orr r7, r10, r7, ror #24 + and r10, r14, r8, ror #22 + and r1, r12, r8, ror #16 + orr r10, r10, r1 + and r1, r8, r11 + orr r10, r10, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r8, r8, r1 + orr r8, r10, r8, ror #24 + and r10, r14, r9, ror #22 + ldr.w r14, [sp] //restore r14 + and r12, r12, r9, ror #16 + orr r10, r10, r12 + and r12, r9, r11 + orr r10, r10, r12, lsr #2 + movw r12, #0xcc33 //r1 <- 0x0000cc33 + and r9, r9, r12 + orr r9, r10, r9, ror #24 + bx lr + +/******************************************************************************* +* applies P^6 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p6: + movw r1, #0x3333 //r1 <- 0x00003333 + movw r12, #0x00cc + movt r12, #0x3300 //r12<- 0x330000cc + and r10, r6, r1, ror #8 // --- permute r6 6 times + and r11, r12, r6, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r6, ror #10 + orr r11, r11, r10 + and r10, r6, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r6, #0x00003300 + orr r6, r11, r10, lsl #2 // permute r6 6 times --- + and r10, r7, r1, ror #8 // --- permute r7 6 times + and r11, r12, r7, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r7, ror #10 + orr r11, r11, r10 + and r10, r7, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r7, #0x00003300 + orr r7, r11, r10, lsl #2 // permute r7 6 times --- + and r10, r8, r1, ror #8 // --- permute r8 6 times + and r11, r12, r8, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r8, ror #10 + orr r11, r11, r10 + and r10, r8, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r8, #0x00003300 + orr r8, r11, r10, lsl #2 // permute r8 6 times --- + and r10, r9, r1, ror #8 // --- permute r9 6 times + and r11, r12, r9, ror #24 + orr r11, r11, r10, ror #6 + and r10, r1, r9, ror #10 + orr r11, r11, r10 + and r10, r9, #0x000000cc + orr r11, r11, r10, lsl #14 + and r10, r9, #0x00003300 // permute r9 6 times --- + orr r9, r11, r10, lsl #2 + bx lr + +/******************************************************************************* +* applies P^8 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p8: + movw r12, #0x3333 //r12<- 0x00003333 + movw r1, #0x0000 + movt r1, #0x33cc //r1 <- 0x33cc0000 + and r10, r6, r1 // --- permute r6 8 times + and r11, r1, r6, ror #8 + orr r11, r11, r10, ror #24 + and r10, r6, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r6, r12, lsl #8 + orr r6, r11, r10, lsr #6 // permute r6 8 times --- + and r10, r7, r1 // --- permute r7 8 times + and r11, r1, r7, ror #8 + orr r11, r11, r10, ror #24 + and r10, r7, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r7, r12, lsl #8 + orr r7, r11, r10, lsr #6 // permute r7 8 times --- + and r10, r8, r1 // --- permute r8 8 times + and r11, r1, r8, ror #8 + orr r11, r11, r10, ror #24 + and r10, r8, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r8, r12, lsl #8 + orr r8, r11, r10, lsr #6 // permute r8 8 times --- + and r10, r9, r1 // --- permute r9 8 times + and r11, r1, r9, ror #8 + orr r11, r11, r10, ror #24 + and r10, r9, r12, lsl #2 + orr r11, r11, r10, ror #26 + and r10, r9, r12, lsl #8 + orr r9, r11, r10, lsr #6 // permute r9 8 times --- + bx lr + +/******************************************************************************* +* applies P^10 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p10: + movw r12, #0x0033 + movt r12, #0x3300 //r12<- 0x33000033 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r10, r6, r1, ror #8 // --- permute r6 10 times + and r11, r12, r6, ror #26 + orr r11, r11, r10, ror #8 + and r10, r6, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r6, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r6, #0x0000cc00 + orr r6, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r7, r1, ror #8 // --- permute r6 10 times + and r11, r12, r7, ror #26 + orr r11, r11, r10, ror #8 + and r10, r7, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r7, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r7, #0x0000cc00 + orr r7, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r8, r1, ror #8 // --- permute r6 10 times + and r11, r12, r8, ror #26 + orr r11, r11, r10, ror #8 + and r10, r8, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r8, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r8, #0x0000cc00 + orr r8, r11, r10, lsr #2 // permute r6 10 times --- + and r10, r9, r1, ror #8 // --- permute r6 10 times + and r11, r12, r9, ror #26 + orr r11, r11, r10, ror #8 + and r10, r9, r12, ror #24 + orr r11, r11, r10, ror #22 + and r10, r9, #0x00330000 + orr r11, r11, r10, lsr #14 + and r10, r9, #0x0000cc00 + orr r9, r11, r10, lsr #2 // permute r6 10 times --- + bx lr + +/******************************************************************************* +* applies P^12 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p12: + str.w r14, [sp] //store r14 on the stack + movw r14, #0xcc33 //r14<- 0x0000cc33 + movw r12, #0x00cc + movt r12, #0x00cc //r12<- 0x00cc00cc + movw r1, #0x3300 + movt r1, #0xcc00 //r1 <- 0xcc003300 + and r10, r14, r6, ror #8 // --- permute r6 12 times + and r11, r12, r6, ror #30 + orr r11, r11, r10 + and r10, r1, r6, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r6, r10, ror #8 + orr r6, r11, r10, ror #10 // permute r6 12 times --- + and r10, r14, r7, ror #8 // --- permute r7 12 times + and r11, r12, r7, ror #30 + orr r11, r11, r10 + and r10, r1, r7, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r7, r10, ror #8 + orr r7, r11, r10, ror #10 // permute r7 12 times --- + and r10, r14, r8, ror #8 // --- permute r8 12 times + and r11, r12, r8, ror #30 + orr r11, r11, r10 + and r10, r1, r8, ror #16 + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r8, r10, ror #8 + orr r8, r11, r10, ror #10 // permute r8 12 times --- + and r10, r14, r9, ror #8 // --- permute r9 12 times + and r11, r12, r9, ror #30 + orr r11, r11, r10 + and r10, r1, r9, ror #16 + ldr.w r14, [sp] + orr r11, r11, r10 + movw r10, #0xcccc //r10<- 0x0000cccc + and r10, r9, r10, ror #8 + orr r9, r11, r10, ror #10 // permute r9 12 times --- + bx lr + +/******************************************************************************* +* applies P^14 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p14: + movw r1, #0xcc00 + movt r1, #0x0033 //r1 <- 0x0033cc00 + movw r12, #0xcc00 + movt r12, #0xcc00 //r12<- 0x33003300 + and r10, r1, r6, ror #24 // --- permute r6 14 times + and r11, r6, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r6, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r6, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r6, r12 + orr r6, r11, r10, ror #18 // permute r6 14 times --- + and r10, r1, r7, ror #24 // --- permute r7 14 times + and r11, r7, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r7, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r7, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r7, r12 + orr r7, r11, r10, ror #18 // permute r7 14 times --- + and r10, r1, r8, ror #24 // --- permute r8 14 times + and r11, r8, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r8, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r8, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r8, r12 + orr r8, r11, r10, ror #18 // permute r8 14 times --- + and r10, r1, r9, ror #24 // --- permute r9 14 times + and r11, r9, #0x00000033 + orr r11, r10, r11, ror #14 + and r10, r9, #0x33000000 + orr r11, r11, r10, ror #30 + and r10, r9, #0x00ff0000 + orr r11, r11, r10, ror #16 + and r10, r9, r12 + orr r9, r11, r10, ror #18 // permute r9 14 times --- + bx lr + +.align 2 +packing: + eor r12, r2, r2, lsr #3 + and r12, r12, r10 + eor r2, r2, r12 + eor r2, r2, r12, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + eor r12, r3, r3, lsr #3 + and r12, r12, r10 + eor r3, r3, r12 + eor r3, r3, r12, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r12, r4, r4, lsr #3 + and r12, r12, r10 + eor r4, r4, r12 + eor r4, r4, r12, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r12, r5, r5, lsr #3 + and r12, r12, r10 + eor r5, r5, r12 + eor r5, r5, r12, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r12, r2, r4, lsr #2 + and r12, r12, r11 + eor r2, r2, r12 + eor r4, r4, r12, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r12, r2, r3, lsr #4 + and r12, r12, r11, lsr #2 + eor r2, r2, r12 + eor r3, r3, r12, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r12, r2, r5, lsr #6 + and r12, r12, r11, lsr #4 + eor r2, r2, r12 + eor r5, r5, r12, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r12, r4, r3, lsr #2 + and r12, r12, r11, lsr #2 + eor r4, r4, r12 + eor r3, r3, r12, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r12, r4, r5, lsr #4 + and r12, r12, r11, lsr #4 + eor r4, r4, r12 + eor r5, r5, r12, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r12, r3, r5, lsr #2 + and r12, r12, r11, lsr #4 + eor r3, r3, r12 + eor r5, r5, r12, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + bx lr + +.align 2 +unpacking: + movw r6, #0x0a0a + movt r6, #0x0a0a //r6 <- 0x0a0a0a0a + eor r10, r3, r5, lsr #2 + and r10, r10, r7, lsr #4 + eor r3, r3, r10 + eor r5, r5, r10, lsl #2 //SWAPMOVE(r5, r3, 0x03030303, 2) + eor r10, r4, r5, lsr #4 + and r10, r10, r7, lsr #4 + eor r4, r4, r10 + eor r5, r5, r10, lsl #4 //SWAPMOVE(r5, r4, 0x03030303, 4) + eor r10, r4, r3, lsr #2 + and r10, r10, r7, lsr #2 + eor r4, r4, r10 + eor r3, r3, r10, lsl #2 //SWAPMOVE(r3, r4, 0x0c0c0c0c, 2) + eor r10, r2, r5, lsr #6 + and r10, r10, r7, lsr #4 + eor r2, r2, r10 + eor r5, r5, r10, lsl #6 //SWAPMOVE(r5, r2, 0x03030303, 6) + eor r10, r2, r3, lsr #4 + and r10, r10, r7, lsr #2 + eor r2, r2, r10 + eor r3, r3, r10, lsl #4 //SWAPMOVE(r3, r2, 0x0c0c0c0c, 4) + eor r10, r2, r4, lsr #2 + and r10, r10, r7 + eor r2, r2, r10 + eor r4, r4, r10, lsl #2 //SWAPMOVE(r4, r2, 0x30303030, 2) + eor r10, r5, r5, lsr #3 + and r10, r10, r6 + eor r5, r5, r10 + eor r5, r5, r10, lsl #3 //SWAPMOVE(r5, r5, 0x0a0a0a0a, 3) + eor r10, r4, r4, lsr #3 + and r10, r10, r6 + eor r4, r4, r10 + eor r4, r4, r10, lsl #3 //SWAPMOVE(r4, r4, 0x0a0a0a0a, 3) + eor r10, r3, r3, lsr #3 + and r10, r10, r6 + eor r3, r3, r10 + eor r3, r3, r10, lsl #3 //SWAPMOVE(r3, r3, 0x0a0a0a0a, 3) + eor r10, r2, r2, lsr #3 + and r10, r10, r6 + eor r2, r2, r10 + eor r2, r2, r10, lsl #3 //SWAPMOVE(r2, r2, 0x0a0a0a0a, 3) + bx lr + +/****************************************************************************** +* Compute LFSR2(TK2) ^ LFSR3(TK3) for all rounds. +* Performing both at the same time allows to save some memory accesses. +******************************************************************************/ +@ void tkschedule_lfsr(u32* tk, const u8* tk2, const u8* tk3, const int rounds) +.global tkschedule_lfsr +.type tkschedule_lfsr,%function +.align 2 +tkschedule_lfsr: + push {r0-r12, r14} + ldr.w r3, [r1, #8] //load tk2 (3rd word) + ldr.w r4, [r1, #4] //load tk2 (2nd word) + ldr.w r5, [r1, #12] //load tk2 (4th word) + ldr.w r12, [r1] //load tk2 (1st word) + mov r1, r2 //move tk3 address in r1 + mov r2, r12 //move 1st tk2 word in r2 + movw r10, #0x0a0a + movt r10, #0x0a0a //r10 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r7 <- 0x30303030 + bl packing //pack tk2 + mov r6, r2 //move tk2 from r2-r5 to r6-r9 + mov r7, r3 //move tk2 from r2-r5 to r6-r9 + mov r8, r4 //move tk2 from r2-r5 to r6-r9 + mov r9, r5 //move tk2 from r2-r5 to r6-r9 + ldr.w r3, [r1, #8] //load tk3 (3rd word) + ldr.w r4, [r1, #4] //load tk3 (2nd word) + ldr.w r5, [r1, #12] //load tk3 (4th) word) + ldr.w r2, [r1] //load tk3 (1st) word) + bl packing //pack tk3 + eor r10, r10, r10, lsl #4 //r10<- 0xaaaaaaaa + ldr.w r1, [sp, #12] //load loop counter in r1 + eor r11, r2, r6 //tk2 ^ tk3 (1st word) + eor r12, r3, r7 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r4, r8 //tk2 ^ tk3 (3rd word) + eor r12, r5, r9 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #8 //store in tk + loop: + and r12, r8, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r6 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r6, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r3, r10 // --- apply LFSR3 to tk3 + eor r12, r5, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r5, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r5, r7 //tk2 ^ tk3 (1st word) + eor r12, r2, r8 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r3, r9 //tk2 ^ tk3 (3rd word) + eor r12, r4, r6 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r9, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r7 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r7, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r2, r10 // --- apply LFSR3 to tk3 + eor r12, r4, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r4, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r4, r8 //tk2 ^ tk3 (1st word) + eor r12, r5, r9 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r2, r6 //tk2 ^ tk3 (3rd word) + eor r12, r3, r7 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r6, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r8 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r8, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r5, r10 // --- apply LFSR3 to tk3 + eor r12, r3, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r3, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r3, r9 //tk2 ^ tk3 (1st word) + eor r12, r4, r6 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r5, r7 //tk2 ^ tk3 (3rd word) + eor r12, r2, r8 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + and r12, r7, r10 // --- apply LFSR2 to tk2 + eor r12, r12, r9 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r9, r14, r12, lsr #1 // apply LFSR2 to tk2 --- + and r12, r4, r10 // --- apply LFSR3 to tk3 + eor r12, r2, r12, lsr #1 + and r14, r10, r12, lsl #1 + and r12, r12, r10 + orr r2, r14, r12, lsr #1 // apply LFSR3 to tk3 --- + eor r11, r2, r6 //tk2 ^ tk3 (1st word) + eor r12, r3, r7 //tk2 ^ tk3 (2nd word) + strd r11, r12, [r0], #8 //store in tk + eor r11, r4, r8 //tk2 ^ tk3 (3rd word) + eor r12, r5, r9 //tk2 ^ tk3 (4th word) + strd r11, r12, [r0], #24 //store in tk + subs.w r1, r1, #8 //decrease loop counter by 8 + bne loop + pop {r0-r12, r14} + bx lr + +/****************************************************************************** +* Applies the permutation P and add the round constants to all round tweakeys. +******************************************************************************/ +@ void tkschedule_perm(u32* tk) +.global tkschedule_perm +.type tkschedule_perm,%function +.align 2 +tkschedule_perm: + push {r0-r12, lr} + sub.w sp, #4 //to store r14 in subroutines + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r6, r6, r10 //tk &= 0xf0f0f0f0 (1st word) + and r7, r7, r10 //tk &= 0xf0f0f0f0 (2nd word) + and r8, r8, r10 //tk &= 0xf0f0f0f0 (3rd word) + and r9, r9, r10 //tk &= 0xf0f0f0f0 (4th word) + eor r8, r8, #0x00000004 //add rconst + eor r9, r9, #0x00000040 //add rconst + mvn r9, r9 //to remove a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 1st round + strd r6, r7, [r0], #8 //store 2nd half tk for 1st round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 2nd round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000100 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 3rd round + strd r6, r7, [r0], #8 //store 2nd half tk for 3rd round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 5th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 5th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 4th round + strd r8, r9, [r0], #24 //store 2nd half tk for 4th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 6th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x00400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 6th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + eor r9, r9, #0x00000400 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 7th round + strd r6, r7, [r0], #8 //store 2nd half tk for 7th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + eor r12, r12, #0x00000040 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 9th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000054 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 9th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r8, r8, #0x00010000 + eor r8, r8, #0x00000410 + eor r9, r9, #0x00000410 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 8th round + strd r8, r9, [r0], #24 //store 2nd half tk for 8th round + ldm r0, {r6-r9} //load tk + bl p10 //apply the permutation 10 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x00000100 //add rconst + eor r12, r12, #0x00000100 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 10th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 10th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r6, r6, #0x04000000 //add rconst + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + eor r9, r9, #0x00000100 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 11th round + strd r6, r7, [r0], #8 //store 2nd half tk for 11th round + ldm r0, {r6-r9} //load tk + bl p12 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 13th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00140000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 13th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x04000000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 12th round + strd r8, r9, [r0], #24 //store 2nd half tk for 12th round + ldm r0, {r6-r9} //load tk + bl p14 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 14th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x01400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 14th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 //add rconst + eor r8, r8, #0x00004400 //add rconst + eor r9, r9, #0x00000400 //add const + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 15th round + strd r6, r7, [r0], #8 //store 2nd half tk for 15th round + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + eor r11, r11, #0x00000040 //add rconst + eor r12, r12, #0x00000040 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 17th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000004 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 17th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r7 ,r7, #0x00000010 + eor r8, r8, #0x00000010 + eor r8, r8, #0x00010000 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 16th round + strd r8, r9, [r0], #24 //store 2nd half tk for 16th round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x00000100 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 18th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000040 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 18th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x40000000 //add rconst + eor r8, r8, #0x00000100 //add rconst + eor r9, r9, #0x04000000 //add rconst + eor r9, r9, #0x00000100 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 19th round + strd r6, r7, [r0], #8 //store 2nd half tk for 19th round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 21th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00100000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 21th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r8, r8, #0x04100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 20th round + strd r8, r9, [r0], #24 //store 2nd half tk for 20th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 22th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 22th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 23th round + strd r6, r7, [r0], #8 //store 2nd half tk for 23th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #24] //store 2nd half tk for 25th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000014 //add rconst + eor r12, r12, #0x00000040 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 25th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r8, r8, #0x00010400 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 24th round + strd r8, r9, [r0], #24 //store 2nd half tk for 24th round + ldm r0, {r6-r9} //load tk + bl p10 //apply the permutation 10 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 26th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 26th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x40000000 //add rconst + eor r9, r9, #0x04000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 27th round + strd r6, r7, [r0], #8 //store 2nd half tk for 27th round + ldm r0, {r6-r9} //load tk + bl p12 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r12, r12, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 29th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 29th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r8, r8, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 28th round + strd r8, r9, [r0], #24 //store 2nd half tk for 28th round + ldm r0, {r6-r9} //load tk + bl p14 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01000000 //add rconst + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 30th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 30th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x01000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 31th round + strd r6, r7, [r0], #8 //store 2nd half tk for 31th round + ldm r0, {r6-r9} //load tk + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6 //ror and mask to match fixslicing + and r12, r10, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #24] //store 2nd half tk for 33th round + and r11, r10, r8 //ror and mask to match fixslicing + and r12, r10, r9 //ror and mask to match fixslicing + eor r11, r11, #0x00000014 //add rconst + eor r12, r12, #0x00000050 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 33th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6 ,r6, #0x00000010 + eor r8, r8, #0x00010400 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 32th round + strd r8, r9, [r0], #24 //store 2nd half tk for 32th round + ldm r0, {r6-r9} //load tk + bl p2 //apply the permutation twice + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #26 //ror and mask to match fixslicing + and r12, r10, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 34th round + and r11, r10, r8, ror #26 //ror and mask to match fixslicing + and r12, r10, r9, ror #26 //ror and mask to match fixslicing + eor r11, r11, #0x10000000 //add rconst + eor r11, r11, #0x00000140 //add rconst + eor r12, r12, #0x00000100 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 34th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #28 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #12 + and r11, r10, r7, ror #28 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #12 + and r11, r10, r8, ror #28 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #12 + and r11, r10, r9, ror #28 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #12 //ror and masks to match fixslicing --- + eor r7, r7, #0x04000000 //add rconst + eor r8, r8, #0x44000000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 35th round + strd r6, r7, [r0], #8 //store 2nd half tk for 35th round + ldm r0, {r6-r9} //load tk + bl p4 //apply the permutation 4 times + movw r10, #0xf0f0 + movt r10, #0xf0f0 //r10<- 0xf0f0f0f0 + and r11, r10, r6, ror #16 //ror and mask to match fixslicing + and r12, r10, r7, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00400000 //add rconst + strd r11, r12, [r0, #24] //store 2nd half tk for 37th round + and r11, r10, r8, ror #16 //ror and mask to match fixslicing + and r12, r10, r9, ror #16 //ror and mask to match fixslicing + eor r11, r11, #0x00440000 //add rconst + eor r12, r12, #0x00500000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0, #16] //store 1st half tk for 37th round + and r10, r10, r10, lsr #2 //r10<- 0x30303030 + and r11, r10, r6, ror #14 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #6 + and r11, r10, r7, ror #14 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #6 + and r11, r10, r8, ror #14 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #6 + and r11, r10, r9, ror #14 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #6 //ror and masks to match fixslicing --- + eor r6, r6, #0x00100000 //add rconst + eor r7, r7, #0x00100000 //add rconst + eor r8, r8, #0x00000001 //add rconst + eor r9, r9, #0x00100000 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 36th round + strd r8, r9, [r0], #24 //store 2nd half tk for 36th round + ldm r0, {r6-r9} //load tk + bl p6 //apply the permutation 6 times + movw r10, #0xc3c3 + movt r10, #0xc3c3 //r10<- 0xc3c3c3c3 + and r11, r10, r6, ror #10 //ror and mask to match fixslicing + and r12, r10, r7, ror #10 //ror and mask to match fixslicing + eor r12, r12, #0x01000000 //add rconst + strd r11, r12, [r0], #8 //store 1st half tk for 38th round + and r11, r10, r8, ror #10 //ror and mask to match fixslicing + and r12, r10, r9, ror #10 //ror and mask to match fixslicing + eor r11, r11, #0x01400000 //add rconst + eor r11, r11, #0x00001000 //add rconst + eor r12, r12, #0x00400000 //add rconst + mvn r12, r12 //to save a NOT in sbox calculations + strd r11, r12, [r0], #8 //store 2nd half tk for 38th round + and r10, r10, r10, lsr #6 //r10<- 0x03030303 + and r11, r10, r6, ror #12 //--- ror and masks to match fixslicing + and r6, r6, r10, lsl #6 + orr r6, r11, r6, ror #28 + and r11, r10, r7, ror #12 + and r7, r7, r10, lsl #6 + orr r7, r11, r7, ror #28 + and r11, r10, r8, ror #12 + and r8, r8, r10, lsl #6 + orr r8, r11, r8, ror #28 + and r11, r10, r9, ror #12 + and r9, r9, r10, lsl #6 + orr r9, r11, r9, ror #28 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000400 //add rconst + eor r7, r7, #0x00000400 //add rconst + eor r8, r8, #0x01000000 + eor r8, r8, #0x00004000 //add rconst + eor r9, r9, #0x00000400 //add rconst + mvn r9, r9 //to save a NOT in sbox calculations + strd r8, r9, [r0], #8 //store 1st half tk for 39th round + strd r6, r7, [r0], #8 //store 2nd half tk for 39th round + ldm r0, {r6-r9} //load tk + bl p8 //apply the permutation 8 times + movw r10, #0x3030 + movt r10, #0x3030 //r10<- 0x30303030 + and r11, r10, r6, ror #30 //--- ror and masks to match fixslicing + and r6, r6, r10, ror #4 + orr r6, r11, r6, ror #22 + and r11, r10, r7, ror #30 + and r7, r7, r10, ror #4 + orr r7, r11, r7, ror #22 + and r11, r10, r8, ror #30 + and r8, r8, r10, ror #4 + orr r8, r11, r8, ror #22 + and r11, r10, r9, ror #30 + and r9, r9, r10, ror #4 + orr r9, r11, r9, ror #22 //ror and masks to match fixslicing --- + eor r6, r6, #0x00000010 + eor r8, r8, #0x00010000 + eor r8, r8, #0x00000010 + eor r9, r9, #0x00000400 + mvn r9, r9 //to save a NOT in sbox calculations + strd r6, r7, [r0], #8 //store 1st half tk for 39th round + strd r8, r9, [r0] //store 2nd half tk for 39th round + add.w sp, #4 //restore stack pointer + pop {r0-r12, lr} + bx lr + +/****************************************************************************** +* Applies the permutations P^2, ..., P^14 for rounds 0 to 16. Since P^16=Id, we +* dont need more calculations as no LFSR is applied to TK1. +******************************************************************************/ +@ void tkschedule_perm_tk1(u32* tk, const u8* key) +.global tkschedule_perm_tk1 +.type tkschedule_perm_tk1,%function +.align 2 +tkschedule_perm_tk1: + push {r0-r12, lr} + ldr.w r3, [r1, #8] //load tk1 (3rd word) + ldr.w r4, [r1, #4] //load tk1 (2nd word) + ldr.w r5, [r1, #12] //load tk1 (4th word) + ldr.w r2, [r1] //load tk1 (1st word) + movw r10, #0x0a0a + movt r10, #0x0a0a //r6 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r7 <- 0x30303030 + bl packing //pack tk1 + mov r6, r2 //move tk1 from r2-r5 to r6-r9 + mov r7, r3 //move tk1 from r2-r5 to r6-r9 + mov r8, r4 //move tk1 from r2-r5 to r6-r9 + mov r9, r5 //move tk1 from r2-r5 to r6-r9 + movw r2, #0xf0f0 + movt r2, #0xf0f0 //r2<- 0xf0f0f0f0 + and r11, r8, r2 //tk &= 0xf0f0f0f0 (3rd word) + and r12, r9, r2 //tk &= 0xf0f0f0f0 (4th word) + strd r11, r12, [r0], #8 //store 1st half tk for 1st round + and r11, r6, r2 //tk &= 0xf0f0f0f0 (1st word) + and r12, r7, r2 //tk &= 0xf0f0f0f0 (2nd word) + strd r11, r12, [r0], #8 //store 2nd half tk for 1st round + movw r3, #0x3030 + movt r3, #0x3030 //r3 <- 0x30303030 + and r11, r3, r6, ror #30 //--- ror and masks to match fixslicing + and r12, r6, r3, ror #4 + orr r12, r11, r12, ror #22 + str.w r12, [r0, #224] + and r11, r3, r7, ror #30 + and r12, r7, r3, ror #4 + orr r12, r11, r12, ror #22 + str.w r12, [r0, #228] + and r11, r3, r8, ror #30 + and r12, r8, r3, ror #4 + orr r12, r11, r12, ror #22 + str.w r12, [r0, #232] + and r11, r3, r9, ror #30 + and r12, r9, r3, ror #4 + orr r12, r11, r12, ror #22 //ror and masks to match fixslicing --- + str.w r12, [r0, #236] + bl p2 //apply the permutation twice + movw r3, #0xc3c3 + movt r3, #0xc3c3 //r3 <- 0xc3c3c3c3 + and r11, r3, r6, ror #26 //ror and mask to match fixslicing + and r12, r3, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 2nd round + and r11, r3, r8, ror #26 //ror and mask to match fixslicing + and r12, r3, r9, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 2nd half tk for 2nd round + and r3, r3, r3, lsr #6 //r3<- 0x03030303 + and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #8] + and r11, r3, r7, ror #28 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #12] + and r11, r3, r9, ror #28 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #4] + and r11, r3, r8, ror #28 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 4 times + lsl r3, r3, #4 //r3 <- 0x30303030 + and r11, r3, r6, ror #14 //--- ror and masks to match fixslicing + and r12, r6, r3, ror #4 + orr r12, r11, r12, ror #6 + str.w r12, [r0], #4 + and r11, r3, r7, ror #14 + and r12, r7, r3, ror #4 + orr r12, r11, r12, ror #6 + str.w r12, [r0], #4 + and r11, r3, r8, ror #14 + and r12, r8, r3, ror #4 + orr r12, r11, r12, ror #6 + str.w r12, [r0], #4 + and r11, r3, r9, ror #14 + and r12, r9, r3, ror #4 + orr r12, r11, r12, ror #6 //ror and masks to match fixslicing --- + str.w r12, [r0], #4 + and r11, r2, r6, ror #16 //ror and mask to match fixslicing + and r12, r2, r7, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 5th round + and r11, r2, r8, ror #16 //ror and mask to match fixslicing + and r12, r2, r9, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 5th round + bl p2 //apply the permutation twice + movw r3, #0xc3c3 + movt r3, #0xc3c3 //r3<- 0xc3c3c3c3 + and r11, r3, r6, ror #10 //ror and mask to match fixslicing + and r12, r3, r7, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 6th round + and r11, r3, r8, ror #10 //ror and mask to match fixslicing + and r12, r3, r9, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 2nd half tk for 6th round + and r3, r3, r3, lsr #6 //r3<- 0x03030303 + and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #8] + and r11, r3, r7, ror #12 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #12] + and r11, r3, r9, ror #12 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #4] + and r11, r3, r8, ror #12 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 8 times + lsl r3, r3, #4 //r3 <- 0x30303030 + and r11, r3, r6, ror #30 //--- ror and masks to match fixslicing + and r12, r6, r3, ror #4 + orr r12, r11, r12, ror #22 + str.w r12, [r0], #4 + and r11, r3, r7, ror #30 + and r12, r7, r3, ror #4 + orr r12, r11, r12, ror #22 + str.w r12, [r0], #4 + and r11, r3, r8, ror #30 + and r12, r8, r3, ror #4 + orr r12, r11, r12, ror #22 + str.w r12, [r0], #4 + and r11, r3, r9, ror #30 + and r12, r9, r3, ror #4 + orr r12, r11, r12, ror #22 //ror and masks to match fixslicing --- + str.w r12, [r0], #4 + and r11, r2, r6 //ror and mask to match fixslicing + and r12, r2, r7 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 9th round + and r11, r2, r8 //ror and mask to match fixslicing + and r12, r2, r9 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 9th round + bl p2 //apply the permutation 10 + movw r3, #0xc3c3 + movt r3, #0xc3c3 //r3 <- 0xc3c3c3c3 + and r11, r3, r6, ror #26 //ror and mask to match fixslicing + and r12, r3, r7, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 10th round + and r11, r3, r8, ror #26 //ror and mask to match fixslicing + and r12, r3, r9, ror #26 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 2nd half tk for 10th round + and r3, r3, r3, lsr #6 //r3 <- 0x03030303 + and r11, r3, r6, ror #28 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #8] + and r11, r3, r7, ror #28 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #12] + and r11, r3, r9, ror #28 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0, #4] + and r11, r3, r8, ror #28 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #12 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + bl p2 //apply the permutation 12 times + lsl r3, r3, #4 //r3 <- 0x30303030 + and r11, r3, r6, ror #14 //--- ror and masks to match fixslicing + and r12, r6, r3, ror #4 + orr r12, r11, r12, ror #6 + str.w r12, [r0], #4 + and r11, r3, r7, ror #14 + and r12, r7, r3, ror #4 + orr r12, r11, r12, ror #6 + str.w r12, [r0], #4 + and r11, r3, r8, ror #14 + and r12, r8, r3, ror #4 + orr r12, r11, r12, ror #6 + str.w r12, [r0], #4 + and r11, r3, r9, ror #14 + and r12, r9, r3, ror #4 + orr r12, r11, r12, ror #6 //ror and masks to match fixslicing --- + str.w r12, [r0], #4 + and r11, r2, r6, ror #16 //ror and mask to match fixslicing + and r12, r2, r7, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0, #8] //store 2nd half tk for 5th round + and r11, r2, r8, ror #16 //ror and mask to match fixslicing + and r12, r2, r9, ror #16 //ror and mask to match fixslicing + strd r11, r12, [r0], #16 //store 1st half tk for 5th round + bl p2 //apply the permutation 14 times + movw r3, #0xc3c3 + movt r3, #0xc3c3 //r3 <- 0xc3c3c3c3 + and r11, r3, r6, ror #10 //ror and mask to match fixslicing + and r12, r3, r7, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 1st half tk for 14th round + and r11, r3, r8, ror #10 //ror and mask to match fixslicing + and r12, r3, r9, ror #10 //ror and mask to match fixslicing + strd r11, r12, [r0], #8 //store 2nd half tk for 14th round + and r3, r3, r3, lsr #6 //r3 <- 0x03030303 + and r11, r3, r6, ror #12 //--- ror and masks to match fixslicing + and r12, r6, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #8] + and r11, r3, r7, ror #12 + and r12, r7, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #12] + and r11, r3, r9, ror #12 + and r12, r9, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0, #4] + and r11, r3, r8, ror #12 + and r12, r8, r3, lsl #6 + orr r12, r11, r12, ror #28 + str.w r12, [r0], #16 //ror and masks to match fixslicing --- + pop {r0-r12, lr} + bx lr + +.align 2 +quadruple_round: + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rtk_2_3 + rconst + eor r3, r3, r9 //add rtk_2_3 + rconst + eor r4, r4, r10 //add rtk_2_3 + rconst + eor r5, r5, r11 //add rtk_2_3 + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #30 // --- mixcolumns 0 --- + eor r2, r2, r8, ror #24 + and r8, r7, r2, ror #18 + eor r2, r2, r8, ror #2 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #4 + and r8, r7, r3, ror #30 + eor r3, r3, r8, ror #24 + and r8, r7, r3, ror #18 + eor r3, r3, r8, ror #2 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #4 + and r8, r7, r4, ror #30 + eor r4, r4, r8, ror #24 + and r8, r7, r4, ror #18 + eor r4, r4, r8, ror #2 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #4 + and r8, r7, r5, ror #30 + eor r5, r5, r8, ror #24 + and r8, r7, r5, ror #18 + eor r5, r5, r8, ror #2 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #4 + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #16 // --- mixcolumns 1 --- + eor r2, r2, r8, ror #30 + and r8, r7, r2, ror #28 + eor r2, r2, r8 + and r8, r7, r2, ror #16 + eor r2, r2, r8, ror #2 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #30 + and r8, r7, r3, ror #28 + eor r3, r3, r8 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #2 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #30 + and r8, r7, r4, ror #28 + eor r4, r4, r8 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #2 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #30 + and r8, r7, r5, ror #28 + eor r5, r5, r8 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #2 + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rtk_2_3 + rconst + eor r3, r3, r9 //add rtk_2_3 + rconst + eor r4, r4, r10 //add rtk_2_3 + rconst + eor r5, r5, r11 //add rtk_2_3 + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #10 // --- mixcolumns 2 --- + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #6 + and r8, r7, r2, ror #26 + eor r2, r2, r8 + and r8, r7, r3, ror #10 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #6 + and r8, r7, r3, ror #26 + eor r3, r3, r8 + and r8, r7, r4, ror #10 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #6 + and r8, r7, r4, ror #26 + eor r4, r4, r8 + and r8, r7, r5, ror #10 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #6 + and r8, r7, r5, ror #26 + eor r5, r5, r8 + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + ldmia.w r1!, {r8-r11} //load rkeys in r8,...,r11 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + ldmia.w r0!,{r8-r11} + eor r2, r2, r8 //add rtk_1 + eor r3, r3, r9 //add rtk_1 + eor r4, r4, r10 //add rtk_1 + eor r5, r5, r11 //add rtk_1 + and r8, r7, r2, ror #4 // --- mixcolumns 3 --- + eor r2, r2, r8, ror #26 + and r8, r7, r2 + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #4 + eor r2, r2, r8, ror #22 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #26 + and r8, r7, r3 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #22 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #26 + and r8, r7, r4 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #22 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #26 + and r8, r7, r5 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #22 + bx lr + +/****************************************************************************** +* Inverse quadruple round of fixsliced SKINNY-128. +******************************************************************************/ +.align 2 +inv_quadruple_round: + and r8, r7, r2, ror #4 // --- mixcolumns 3 --- + eor r2, r2, r8, ror #22 + and r8, r7, r2 + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #4 + eor r2, r2, r8, ror #26 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #22 + and r8, r7, r3 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #4 + eor r3, r3, r8, ror #26 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #22 + and r8, r7, r4 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #4 + eor r4, r4, r8, ror #26 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #22 + and r8, r7, r5 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #4 + eor r5, r5, r8, ror #26 + ldrd r10, r11, [r1], #-8 + ldrd r8, r9, [r1], #-8 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + ldrd r10, r11, [r0], #-8 + ldrd r8, r9, [r0], #-8 + eor r2, r2, r8 //add rtk1 + eor r3, r3, r9 //add rtk1 + eor r4, r4, r10 //add rtk1 + eor r5, r5, r11 //add rtk1 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + and r8, r7, r2, ror #26 // --- mixcolumns 2 --- + eor r2, r2, r8 + and r8, r7, r2, ror #6 + eor r2, r2, r8, ror #6 + and r8, r7, r2, ror #10 + eor r2, r2, r8, ror #4 + and r8, r7, r3, ror #26 + eor r3, r3, r8 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #6 + and r8, r7, r3, ror #10 + eor r3, r3, r8, ror #4 + and r8, r7, r4, ror #26 + eor r4, r4, r8 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #6 + and r8, r7, r4, ror #10 + eor r4, r4, r8, ror #4 + and r8, r7, r5, ror #26 + eor r5, r5, r8 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #6 + and r8, r7, r5, ror #10 + eor r5, r5, r8, ror #4 + ldrd r10, r11, [r1], #-8 + ldrd r8, r9, [r1], #-8 + eor r2, r2, r8 //add rk2_3 + rconst + eor r3, r3, r9 //add rk2_3 + rconst + eor r4, r4, r10 //add rk2_3 + rconst + eor r5, r5, r11 //add rk2_3 + rconst + ldrd r10, r11, [r0], #-8 + ldrd r8, r9, [r0], #-8 + eor r2, r2, r8 //add rtk1 + eor r3, r3, r9 //add rtk1 + eor r4, r4, r10 //add rtk1 + eor r5, r5, r11 //add rtk1 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + and r8, r7, r2, ror #16 // --- mixcolumns 1 --- + eor r2, r2, r8, ror #2 + and r8, r7, r2, ror #28 + eor r2, r2, r8 + and r8, r7, r2, ror #16 + eor r2, r2, r8, ror #30 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #2 + and r8, r7, r3, ror #28 + eor r3, r3, r8 + and r8, r7, r3, ror #16 + eor r3, r3, r8, ror #30 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #2 + and r8, r7, r4, ror #28 + eor r4, r4, r8 + and r8, r7, r4, ror #16 + eor r4, r4, r8, ror #30 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #2 + and r8, r7, r5, ror #28 + eor r5, r5, r8 + and r8, r7, r5, ror #16 + eor r5, r5, r8, ror #30 + ldrd r10, r11, [r1], #-8 + ldrd r8, r9, [r1], #-8 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + ldrd r10, r11, [r0], #-8 + ldrd r8, r9, [r0], #-8 + eor r2, r2, r8 //add rtk1 + eor r3, r3, r9 //add rtk1 + eor r4, r4, r10 //add rtk1 + eor r5, r5, r11 //add rtk1 + eor r8, r3, r4 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8 //SWAPMOVE(r4, r3, 0x55555555, 0); + orr r8, r2, r3 + eor r5, r5, r8 + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + and r8, r7, r2, ror #6 // --- mixcolumns 0 --- + eor r2, r2, r8, ror #4 + and r8, r7, r2, ror #18 + eor r2, r2, r8, ror #2 + and r8, r7, r2, ror #30 + eor r2, r2, r8, ror #24 + and r8, r7, r3, ror #6 + eor r3, r3, r8, ror #4 + and r8, r7, r3, ror #18 + eor r3, r3, r8, ror #2 + and r8, r7, r3, ror #30 + eor r3, r3, r8, ror #24 + and r8, r7, r4, ror #6 + eor r4, r4, r8, ror #4 + and r8, r7, r4, ror #18 + eor r4, r4, r8, ror #2 + and r8, r7, r4, ror #30 + eor r4, r4, r8, ror #24 + and r8, r7, r5, ror #6 + eor r5, r5, r8, ror #4 + and r8, r7, r5, ror #18 + eor r5, r5, r8, ror #2 + and r8, r7, r5, ror #30 + eor r5, r5, r8, ror #24 + ldrd r10, r11, [r1], #-8 + ldrd r8, r9, [r1], #-8 + eor r2, r2, r8 //add rkey + rconst + eor r3, r3, r9 //add rkey + rconst + eor r4, r4, r10 //add rkey + rconst + eor r5, r5, r11 //add rkey + rconst + ldrd r10, r11, [r0], #-8 + ldrd r8, r9, [r0], #-8 + eor r2, r2, r8 //add rtk1 + eor r3, r3, r9 //add rtk1 + eor r4, r4, r10 //add rtk1 + eor r5, r5, r11 //add rtk1 + eor r8, r2, r5 + and r8, r8, r6 + eor r2, r2, r8 + eor r5, r5, r8 //SWAPMOVE(r5, r2, 0x55555555, 0); + orr r8, r4, r5 + eor r3, r3, r8 + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + eor r8, r5, r2, lsr #1 + and r8, r8, r6 + eor r5, r5, r8 + eor r2, r2, r8, lsl #1 //SWAPMOVE(r2, r5, 0x55555555, 1); + eor r8, r2, r3, lsr #1 + and r8, r8, r6 + eor r2, r2, r8 + eor r3, r3, r8, lsl #1 //SWAPMOVE(r3, r2, 0x55555555, 1); + orr r8, r4, r5 + eor r3, r3, r8 + mvn r3, r3 + eor r8, r4, r5, lsr #1 + and r8, r8, r6 + eor r4, r4, r8 + eor r5, r5, r8, lsl #1 //SWAPMOVE(r5, r4, 0x55555555, 1); + eor r8, r3, r4, lsr #1 + and r8, r8, r6 + eor r3, r3, r8 + eor r4, r4, r8, lsl #1 //SWAPMOVE(r4, r3, 0x55555555, 1); + orr r8, r2, r3 + eor r5, r5, r8 + mvn r5, r5 + bx lr + +/****************************************************************************** +* Encrypt a single block using fixsliced SKINNY-128-384+. +******************************************************************************/ +@ void skinny128_384(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1) +.global skinny128_384 +.type skinny128_384,%function +.align 2 +skinny128_384: + push {r0-r12, r14} + mov.w r0, r3 + ldr.w r3, [r2, #8] + ldr.w r4, [r2, #4] + ldr.w r5, [r2, #12] + ldr.w r2, [r2] + movw r10, #0x0a0a + movt r10, #0x0a0a //r10 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r11 <- 0x30303030 + bl packing + mov r7, r11 + movw r6, #0x5555 + movt r6, #0x5555 //r6 <- 0x55555555 + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #256 // rtk1 repeats every 16 rounds + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #256 // rtk1 repeats every 16 rounds + bl quadruple_round + bl quadruple_round + bl unpacking + ldr.w r0, [sp], #4 + strd r2, r4, [r0] + strd r3, r5, [r0, #8] + pop {r1-r12,r14} + bx lr + +/****************************************************************************** +* Decrypt a single block using fixsliced SKINNY-128-384+. +******************************************************************************/ +@ void skinny128_384_inv(u8* ctext, const u32* tk, const u8* ptext, const u32* rtk1) +.global skinny128_384_inv +.type skinny128_384_inv,%function +.align 2 +skinny128_384_inv: + push {r0-r12, r14} + mov.w r0, r3 + ldr.w r3, [r2, #8] + ldr.w r4, [r2, #4] + ldr.w r5, [r2, #12] + ldr.w r2, [r2] + movw r10, #0x0a0a + movt r10, #0x0a0a //r10 <- 0x0a0a0a0a + movw r11, #0x3030 + movt r11, #0x3030 //r11 <- 0x30303030 + bl packing + mov r7, r11 + movw r6, #0x5555 + movt r6, #0x5555 //r6 <- 0x55555555 + add.w r0, #120 // points to the right rtk1 + add.w r1, #632 // points to the last rtk2_3 + bl inv_quadruple_round + bl inv_quadruple_round + add.w r0, #256 // rtk1 repeats every 16 rounds + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + add.w r0, #256 // rtk1 repeats every 16 rounds + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + bl unpacking + ldr.w r0, [sp], #4 + strd r2, r4, [r0] + strd r3, r5, [r0, #8] + pop {r1-r12,r14} + bx lr diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinnyaead.h new file mode 100644 index 0000000..0cf0fa9 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_1/skinnyaead.h @@ -0,0 +1,39 @@ +#ifndef SKINNYAEADM1_H_ +#define SKINNYAEADM1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef unsigned long long u64; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) + +#define UPDATE_LFSR(lfsr) ({ \ + feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ + (lfsr) = ((lfsr) << 1) ^ feedback; \ +}) + +#define LE_STR_64(ptr, x) ({ \ + (ptr)[0] = (u8)(x); \ + (ptr)[1] = (u8)((x) >> 8); \ + (ptr)[2] = (u8)((x) >> 16); \ + (ptr)[3] = (u8)((x) >> 24); \ + (ptr)[4] = (u8)((x) >> 32); \ + (ptr)[5] = (u8)((x) >> 40); \ + (ptr)[6] = (u8)((x) >> 48); \ + (ptr)[7] = (u8)((x) >> 56); \ +}) +//x ^= y with x, y 128-bit blocks +#define XOR_BLOCK(x,y) ({ \ + ((u32*)(x))[0] ^= ((u32*)(y))[0]; \ + ((u32*)(x))[1] ^= ((u32*)(y))[1]; \ + ((u32*)(x))[2] ^= ((u32*)(y))[2]; \ + ((u32*)(x))[3] ^= ((u32*)(y))[3]; \ +}) + +#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/api.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/crypto_aead.h new file mode 100644 index 0000000..6f4ee42 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/crypto_aead.h @@ -0,0 +1,13 @@ +//API required by the NIST for the LWC competition +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); + +//API required by the NIST for the LWC competition +int crypto_aead_decrypt(unsigned char *m, unsigned long long *outputmlen, + 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); diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/encrypt.c new file mode 100644 index 0000000..fa4a24b --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/encrypt.c @@ -0,0 +1,298 @@ +/****************************************************************************** +* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). +* +* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include "skinny128.h" +#include "skinnyaead.h" +#include +#include + +/****************************************************************************** +* x ^= y where x, y are 128-bit blocks (16 bytes array). +******************************************************************************/ +static void xor_block(u8 * x, const u8* y) { + for(int i = 0; i < BLOCKBYTES; i++) + x[i] ^= y[i]; +} + +/****************************************************************************** +* Process the associated data. Common to SKINNY-AEAD-M1 encrypt and decrypt +* functions. +******************************************************************************/ +static void skinny_aead_m1_auth(u8* auth, u8* c, u8* tag, u32* rtk1, + u32* rtk2_3, u64 mlen, const u8* ad, u64 adlen) { + u64 lfsr = 1; + u8 feedback; + u8 tmp[2*BLOCKBYTES]; + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + SET_DOMAIN(tmp, 0x02); + while (adlen >= 2*BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x02); + tkschedule_perm_tk1(rtk1, tmp, tmp+BLOCKBYTES); + skinny128_384(tmp, tmp+BLOCKBYTES, ad, ad+BLOCKBYTES, rtk1, rtk2_3); + xor_block(auth, tmp); + xor_block(auth, tmp + BLOCKBYTES); + adlen -= 2*BLOCKBYTES; + ad += 2*BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + if (adlen > BLOCKBYTES) { // pad and process 2 blocs + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x03); // domain for padding ad + tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); + adlen -= BLOCKBYTES; + memset(tmp, 0x00, BLOCKBYTES); + memcpy(tmp, ad + BLOCKBYTES, adlen); + tmp[adlen] ^= 0x80; // padding + skinny128_384(tmp + BLOCKBYTES, tmp, ad, tmp, rtk1, rtk2_3); + xor_block(auth, tmp); + xor_block(auth, tmp + BLOCKBYTES); + } else if (adlen == BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + if (mlen == 0) { // if tag has *NOT* been calculated yet + tkschedule_perm_tk1(rtk1, tmp, tag); + skinny128_384(auth, c, ad, c, rtk1, rtk2_3); + } else { // if tag has been calculated yet + tkschedule_perm_tk1(rtk1, tmp, tmp); // process last ad block + skinny128_384(auth, auth, ad, ad, rtk1, rtk2_3); + } + } else if (adlen > 0) { + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x03); // domain for padding ad + memset(tmp + BLOCKBYTES, 0x00, BLOCKBYTES); // padding + memcpy(tmp + BLOCKBYTES, ad, adlen); // padding + tmp[BLOCKBYTES + adlen] ^= 0x80; // padding + if (mlen == 0) { // if tag has *NOT* been calculated yet + tkschedule_perm_tk1(rtk1, tmp, tag); // compute the tag + skinny128_384(auth, c, tmp + BLOCKBYTES, c, rtk1, rtk2_3); + } else { // if tag has been calculated yet + tkschedule_perm_tk1(rtk1, tmp, tmp); // process last ad block + skinny128_384(auth, auth, tmp + BLOCKBYTES, tmp + BLOCKBYTES, rtk1, rtk2_3); + } + } +} + +/****************************************************************************** +* Encryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u8 feedback; + u64 i,lfsr = 1; + u32 rtk1[8*16]; + u32 rtk2_3[8*SKINNY128_384_ROUNDS]; + u8 tmp[2*BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + tkschedule_lfsr_2(rtk2_3, npub, npub, SKINNY128_384_ROUNDS); + tkschedule_lfsr_3(rtk2_3, k, k, SKINNY128_384_ROUNDS); + tkschedule_perm(rtk2_3); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(tag, 0x00, BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(sum, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (mlen >= 2*BLOCKBYTES) { // process 2 blocks in // + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384(c, c + BLOCKBYTES, m, m + BLOCKBYTES, rtk1, rtk2_3); + xor_block(sum, m); // sum for tag computation + xor_block(sum, m + BLOCKBYTES); // sum for tag computation + mlen -= 2*BLOCKBYTES; + c += 2*BLOCKBYTES; + m += 2*BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + SET_DOMAIN(tag, 0x04); // domain for tag computation + if (mlen > BLOCKBYTES) { // pad and process 2 blocs in // + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x01); // domain for padding m + tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384(c, auth, m, auth, rtk1, rtk2_3); + xor_block(sum, m); + for(i = 0; i < mlen - BLOCKBYTES; i++) { + c[BLOCKBYTES + i] = auth[i] ^ m[BLOCKBYTES + i]; + sum[i] ^= m[BLOCKBYTES + i]; + } + sum[i] ^= 0x80; // padding + SET_DOMAIN(tag, 0x05); // domain for tag computation + m += mlen; + c += mlen; + mlen = 0; + UPDATE_LFSR(lfsr); + } else if (mlen == BLOCKBYTES) { // last block is full + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x04); // domain for tag computation + xor_block(sum, m); // sum for tag computation + tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384(c, sum, m, sum, rtk1, rtk2_3); + c += BLOCKBYTES; + } else if (mlen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x01); // domain for padding + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x05); // domain for tag computation + for(i = 0; i < mlen; i++) // sum for tag computation + sum[i] ^= m[i]; // sum for tag computation + sum[i] ^= 0x80; // padding + tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384(auth, sum, auth, sum, rtk1, rtk2_3); + for(i = 0; i < mlen; i++) + c[i] = auth[i] ^ m[i]; // encrypted padded block + c += mlen; + } + if (mlen == 0) { // if tag has *NOT* been calculated yet + LE_STR_64(tag, lfsr); // lfsr for tag computation + if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { + tkschedule_perm_tk1(rtk1, tag, tag); + skinny128_384(sum, sum, sum, sum, rtk1, rtk2_3); // compute the tag + } + } + // ----------------- Process the plaintext ----------------- + + // ----------------- Process the associated data ----------------- + skinny_aead_m1_auth(auth, sum, tag, rtk1, rtk2_3, mlen, ad, adlen); + xor_block(sum, auth); + memcpy(c, sum, TAGBYTES); + // ----------------- Process the associated data ----------------- + + return 0; +} + + +/****************************************************************************** +* Decryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u8 feedback; + u64 i,lfsr = 1; + u32 rtk1[8*16]; + u32 rtk2_3[8*SKINNY128_384_ROUNDS]; + u8 tmp[2*BLOCKBYTES]; + u8 sum[BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + clen -= TAGBYTES; + *mlen = clen; + tkschedule_lfsr_2(rtk2_3, npub, npub, SKINNY128_384_ROUNDS); + tkschedule_lfsr_3(rtk2_3, k, k, SKINNY128_384_ROUNDS); + tkschedule_perm(rtk2_3); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(tag, 0x00, BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(sum, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (clen >= 2*BLOCKBYTES) { // process 2 blocks in // + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + tkschedule_perm_tk1(rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384_inv(m, m + BLOCKBYTES, c, c + BLOCKBYTES, rtk1, rtk2_3); + xor_block(sum, m); // sum for tag computation + xor_block(sum, m + BLOCKBYTES); // sum for tag computation + clen -= 2*BLOCKBYTES; + c += 2*BLOCKBYTES; + m += 2*BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + SET_DOMAIN(tag, 0x04); // domain for tag computation + if (clen > BLOCKBYTES) { // pad and process 2 blocs in // + LE_STR_64(tmp, lfsr); + tkschedule_perm_tk1(rtk1, tmp, tmp); + skinny128_384_inv(m, m, c, c, rtk1, rtk2_3); + xor_block(sum, m); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x01); // domain for padding m + tkschedule_perm_tk1(rtk1, tmp, tmp); + skinny128_384(auth, auth, auth, auth, rtk1, rtk2_3); + for(i = 0; i < clen - BLOCKBYTES; i++) { + m[BLOCKBYTES + i] = auth[i] ^ c[BLOCKBYTES + i]; + sum[i] ^= m[BLOCKBYTES + i]; + } + sum[i] ^= 0x80; // padding + SET_DOMAIN(tag, 0x05); // domain for tag computation + c += clen; + clen = 0; + UPDATE_LFSR(lfsr); + } else if (clen == BLOCKBYTES) { // last block is full + LE_STR_64(tmp, lfsr); + tkschedule_perm_tk1(rtk1, tmp, tmp); + skinny128_384_inv(m, m, c, c, rtk1, rtk2_3); + xor_block(sum, m); // sum for tag computation + SET_DOMAIN(tag, 0x04); // domain for tag computation + UPDATE_LFSR(lfsr); + c += BLOCKBYTES; + clen = 0; + } else if (clen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x01); // domain for padding + tkschedule_perm_tk1(rtk1, tmp, tmp); + skinny128_384(auth, auth, auth, auth, rtk1, rtk2_3); + for(i = 0; i < clen; i++) { + m[i] = auth[i] ^ c[i]; // encrypted padded block + sum[i] ^= m[i]; // sum for tag computation + } + sum[i] ^= 0x80; // padding + SET_DOMAIN(tag, 0x05); // domain for tag computation + UPDATE_LFSR(lfsr); + c += clen; + clen = 0; + } + if (clen == 0) { // if tag has *NOT* been calculated yet + LE_STR_64(tag, lfsr); + if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { + tkschedule_perm_tk1(rtk1, tag, tag); //if AD can be processed in // + skinny128_384(sum, sum, sum, sum, rtk1, rtk2_3); // compute the tag + } + } + + // ----------------- Process the associated data ----------------- + skinny_aead_m1_auth(auth, sum, tag, rtk1, rtk2_3, clen, ad, adlen); + xor_block(sum, auth); + feedback = 0; + for(i = 0; i < TAGBYTES; i++) + feedback |= sum[i] ^ c[i]; // constant-time tag verification + return feedback; + // ----------------- Process the associated data ----------------- +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.h new file mode 100644 index 0000000..299d162 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.h @@ -0,0 +1,17 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +#define SKINNY128_384_ROUNDS 40 + +extern void skinny128_384(u8* ctext, u8* ctext_bis, const u8* ptext, const u8* ptext_bis, const u32* rtk1, const u32* rtk2_3); +extern void skinny128_384_inv(u8* ptext, u8* ptext_bis, const u8* ctext, const u8* ctext_bis, const u32* rtk1, const u32* rtk2_3); +extern void tkschedule_lfsr_2(u32* rtk, const u8* tk2, const u8* tk2_bis, const int rounds); +extern void pack_tk1(u32* rtk, const u8* tk2, const u8* tk2_bis, const int rounds); +extern void tkschedule_lfsr_3(u32* rtk, const u8* tk3, const u8* tk3_bis, const int rounds); +extern void tkschedule_perm(u32* rtk); +extern void tkschedule_perm_tk1(u32* rtk1, const u8* tk1, const u8* tk1_bis); + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.s b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.s new file mode 100644 index 0000000..b09c99b --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinny128.s @@ -0,0 +1,3426 @@ +/******************************************************************************* +* Constant-time ARM assembly implementation of the SKINNY block cipher. +* Two blocks are processed in parallel. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date April 2020 +*******************************************************************************/ + +.syntax unified +.thumb + +/******************************************************************************* +* Applies P^2 on the tweakey state in a bitsliced manner. +*******************************************************************************/ +.align 2 +p2: + movw r3, #0xcc00 + movt r3, #0xcc00 //r1 <- 0xcc00cc00 + movw r4, #0xcc00 + movt r4, #0x0033 //r10<- 0xcc000033 + and r1, r3, r5, ror #14 + bfi r1, r5, #16, #8 + and r2, r5, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r5 + orr r1, r1, r2, lsr #8 + and r2, r5, #0x00cc0000 + orr r5, r1, r2, lsr #18 + and r1, r3, r6, ror #14 + bfi r1, r6, #16, #8 + and r2, r6, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r6 + orr r1, r1, r2, lsr #8 + and r2, r6, #0x00cc0000 + orr r6, r1, r2, lsr #18 + and r1, r3, r7, ror #14 + bfi r1, r7, #16, #8 + and r2, r7, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r7 + orr r1, r1, r2, lsr #8 + and r2, r7, #0x00cc0000 + orr r7, r1, r2, lsr #18 + and r1, r3, r8, ror #14 + bfi r1, r8, #16, #8 + and r2, r8, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r8 + orr r1, r1, r2, lsr #8 + and r2, r8, #0x00cc0000 + orr r8, r1, r2, lsr #18 + and r1, r3, r9, ror #14 + bfi r1, r9, #16, #8 + and r2, r9, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r9 + orr r1, r1, r2, lsr #8 + and r2, r9, #0x00cc0000 + orr r9, r1, r2, lsr #18 + and r1, r3, r10, ror #14 + bfi r1, r10, #16, #8 + and r2, r10, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r10 + orr r1, r1, r2, lsr #8 + and r2, r10, #0x00cc0000 + orr r10, r1, r2, lsr #18 + and r1, r3, r11, ror #14 + bfi r1, r11, #16, #8 + and r2, r11, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r11 + orr r1, r1, r2, lsr #8 + and r2, r11, #0x00cc0000 + orr r11, r1, r2, lsr #18 + and r1, r3, r12, ror #14 + bfi r1, r12, #16, #8 + and r2, r12, #0xcc000000 + orr r1, r1, r2, lsr #2 + and r2, r4, r12 + orr r1, r1, r2, lsr #8 + and r2, r12, #0x00cc0000 + orr r12, r1, r2, lsr #18 + bx lr + +/******************************************************************************* +* Applies P^4 on the tweakey state in a bitsliced manner. +*******************************************************************************/ +.align 2 +p4: + str.w r14, [sp] //store r14 on the stack + movw r14, #0x00cc + movt r14, #0xcc00 //r14<- 0xcc0000cc + movw r3, #0xcc00 + movt r3, #0x3300 //r3 <- 0x3300cc00 + movw r4, #0x00cc + movt r4, #0x00cc //r4 <- 0x00cc00cc + and r2, r14, r5, ror #22 + and r1, r3, r5, ror #16 + orr r2, r2, r1 + and r1, r5, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r5, r5, r1 + orr r5, r2, r5, ror #24 + and r2, r14, r6, ror #22 + and r1, r3, r6, ror #16 + orr r2, r2, r1 + and r1, r6, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r6, r6, r1 + orr r6, r2, r6, ror #24 + and r2, r14, r7, ror #22 + and r1, r3, r7, ror #16 + orr r2, r2, r1 + and r1, r7, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r7, r7, r1 + orr r7, r2, r7, ror #24 + and r2, r14, r8, ror #22 + and r1, r3, r8, ror #16 + orr r2, r2, r1 + and r1, r8, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r8, r8, r1 + orr r8, r2, r8, ror #24 + and r2, r14, r9, ror #22 + and r1, r3, r9, ror #16 + orr r2, r2, r1 + and r1, r9, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r9, r9, r1 + orr r9, r2, r9, ror #24 + and r2, r14, r10, ror #22 + and r1, r3, r10, ror #16 + orr r2, r2, r1 + and r1, r10, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r10, r10, r1 + orr r10, r2, r10, ror #24 + and r2, r14, r11, ror #22 + and r1, r3, r11, ror #16 + orr r2, r2, r1 + and r1, r11, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r11, r11, r1 + orr r11, r2, r11, ror #24 + and r2, r14, r12, ror #22 + and r1, r3, r12, ror #16 + orr r2, r2, r1 + and r1, r12, r4 + orr r2, r2, r1, lsr #2 + movw r1, #0xcc33 //r1 <- 0x0000cc33 + and r12, r12, r1 + orr r12, r2, r12, ror #24 + ldr.w r14, [sp] //restore r14 + bx lr + +/******************************************************************************* +* Applies P^6 on the tweakey state in a bitsliced manner +*******************************************************************************/ +.align 2 +p6: + movw r3, #0x3333 //r1 <- 0x00003333 + movw r4, #0x00cc + movt r4, #0x3300 //r12<- 0x330000cc + and r1, r5, r3, ror #8 // --- permute r5 6 times + and r2, r4, r5, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r5, ror #10 + orr r2, r2, r1 + and r1, r5, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r5, #0x00003300 + orr r5, r2, r1, lsl #2 // permute r5 6 times --- + and r1, r6, r3, ror #8 // --- permute r6 6 times + and r2, r4, r6, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r6, ror #10 + orr r2, r2, r1 + and r1, r6, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r6, #0x00003300 + orr r6, r2, r1, lsl #2 // permute r6 6 times --- + and r1, r7, r3, ror #8 // --- permute r7 6 times + and r2, r4, r7, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r7, ror #10 + orr r2, r2, r1 + and r1, r7, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r7, #0x00003300 + orr r7, r2, r1, lsl #2 // permute r7 6 times --- + and r1, r8, r3, ror #8 // --- permute r8 6 times + and r2, r4, r8, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r8, ror #10 + orr r2, r2, r1 + and r1, r8, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r8, #0x00003300 + orr r8, r2, r1, lsl #2 // permute r8 6 times --- + and r1, r9, r3, ror #8 // --- permute r9 6 times + and r2, r4, r9, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r9, ror #10 + orr r2, r2, r1 + and r1, r9, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r9, #0x00003300 + orr r9, r2, r1, lsl #2 // permute r9 6 times --- + and r1, r10, r3, ror #8 // --- permute r10 6 times + and r2, r4, r10, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r10, ror #10 + orr r2, r2, r1 + and r1, r10, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r10, #0x00003300 + orr r10, r2, r1, lsl #2 // permute r10 6 times --- + and r1, r11, r3, ror #8 // --- permute r11 6 times + and r2, r4, r11, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r11, ror #10 + orr r2, r2, r1 + and r1, r11, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r11, #0x00003300 + orr r11, r2, r1, lsl #2 // permute r11 6 times --- + and r1, r12, r3, ror #8 // --- permute r12 6 times + and r2, r4, r12, ror #24 + orr r2, r2, r1, ror #6 + and r1, r3, r12, ror #10 + orr r2, r2, r1 + and r1, r12, #0x000000cc + orr r2, r2, r1, lsl #14 + and r1, r12, #0x00003300 + orr r12, r2, r1, lsl #2 // permute r12 6 times --- + bx lr + +/******************************************************************************* +* Applies P^8 on the tweakey state in a bitsliced manner. +*******************************************************************************/ +.align 2 +p8: + movw r3, #0x3333 //r3 <- 0x00003333 + movw r4, #0x0000 + movt r4, #0x33cc //r4 <- 0x33cc0000 + and r1, r5, r4 // --- permute r5 8 times + and r2, r4, r5, ror #8 + orr r2, r2, r1, ror #24 + and r1, r5, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r5, r3, lsl #8 + orr r5, r2, r1, lsr #6 // permute r5 8 times --- + and r1, r6, r4 // --- permute r6 8 times + and r2, r4, r6, ror #8 + orr r2, r2, r1, ror #24 + and r1, r6, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r6, r3, lsl #8 + orr r6, r2, r1, lsr #6 // permute r6 8 times --- + and r1, r7, r4 // --- permute r7 8 times + and r2, r4, r7, ror #8 + orr r2, r2, r1, ror #24 + and r1, r7, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r7, r3, lsl #8 + orr r7, r2, r1, lsr #6 // permute r7 8 times --- + and r1, r8, r4 // --- permute r8 8 times + and r2, r4, r8, ror #8 + orr r2, r2, r1, ror #24 + and r1, r8, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r8, r3, lsl #8 + orr r8, r2, r1, lsr #6 // permute r8 8 times --- + and r1, r9, r4 // --- permute r9 8 times + and r2, r4, r9, ror #8 + orr r2, r2, r1, ror #24 + and r1, r9, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r9, r3, lsl #8 + orr r9, r2, r1, lsr #6 // permute r9 8 times --- + and r1, r10, r4 // --- permute r10 8 times + and r2, r4, r10, ror #8 + orr r2, r2, r1, ror #24 + and r1, r10, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r10, r3, lsl #8 + orr r10, r2, r1, lsr #6 // permute r10 8 times --- + and r1, r11, r4 // --- permute r11 8 times + and r2, r4, r11, ror #8 + orr r2, r2, r1, ror #24 + and r1, r11, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r11, r3, lsl #8 + orr r11, r2, r1, lsr #6 // permute r11 8 times --- + and r1, r12, r4 // --- permute r12 8 times + and r2, r4, r12, ror #8 + orr r2, r2, r1, ror #24 + and r1, r12, r3, lsl #2 + orr r2, r2, r1, ror #26 + and r1, r12, r3, lsl #8 + orr r12, r2, r1, lsr #6 // permute r12 8 times --- + bx lr + +/******************************************************************************* +* Applies P^10 on the tweakey state in a bitsliced manner. +*******************************************************************************/ +.align 2 +p10: + movw r4, #0x0033 + movt r4, #0x3300 //r4 <- 0x33000033 + movw r3, #0xcc33 //r3 <- 0x0000cc33 + and r1, r5, r3, ror #8 // --- permute r5 10 times + and r2, r4, r5, ror #26 + orr r2, r2, r1, ror #8 + and r1, r5, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r5, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r5, #0x0000cc00 + orr r5, r2, r1, lsr #2 // permute r5 10 times --- + and r1, r6, r3, ror #8 // --- permute r6 10 times + and r2, r4, r6, ror #26 + orr r2, r2, r1, ror #8 + and r1, r6, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r6, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r6, #0x0000cc00 + orr r6, r2, r1, lsr #2 // permute r6 10 times --- + and r1, r7, r3, ror #8 // --- permute r7 10 times + and r2, r4, r7, ror #26 + orr r2, r2, r1, ror #8 + and r1, r7, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r7, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r7, #0x0000cc00 + orr r7, r2, r1, lsr #2 // permute r7 10 times --- + and r1, r8, r3, ror #8 // --- permute r8 10 times + and r2, r4, r8, ror #26 + orr r2, r2, r1, ror #8 + and r1, r8, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r8, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r8, #0x0000cc00 + orr r8, r2, r1, lsr #2 // permute r8 10 times --- + and r1, r9, r3, ror #8 // --- permute r9 10 times + and r2, r4, r9, ror #26 + orr r2, r2, r1, ror #8 + and r1, r9, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r9, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r9, #0x0000cc00 + orr r9, r2, r1, lsr #2 // permute r9 10 times --- + and r1, r10, r3, ror #8 // --- permute r10 10 times + and r2, r4, r10, ror #26 + orr r2, r2, r1, ror #8 + and r1, r10, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r10, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r10, #0x0000cc00 + orr r10, r2, r1, lsr #2 // permute r10 10 times --- + and r1, r11, r3, ror #8 // --- permute r11 10 times + and r2, r4, r11, ror #26 + orr r2, r2, r1, ror #8 + and r1, r11, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r11, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r11, #0x0000cc00 + orr r11, r2, r1, lsr #2 // permute r11 10 times --- + and r1, r12, r3, ror #8 // --- permute r12 10 times + and r2, r4, r12, ror #26 + orr r2, r2, r1, ror #8 + and r1, r12, r4, ror #24 + orr r2, r2, r1, ror #22 + and r1, r12, #0x00330000 + orr r2, r2, r1, lsr #14 + and r1, r12, #0x0000cc00 + orr r12, r2, r1, lsr #2 // permute r12 10 times --- + bx lr + +/******************************************************************************* +* Applies P^12 on the tweakey state in a bitsliced manner. +*******************************************************************************/ +.align 2 +p12: + str.w r14, [sp] //store r14 on the stack + movw r14, #0xcc33 //r14<- 0x0000cc33 + movw r4, #0x00cc + movt r4, #0x00cc //r4 <- 0x00cc00cc + movw r3, #0x3300 + movt r3, #0xcc00 //r3 <- 0xcc003300 + and r1, r14, r5, ror #8 // --- permute r5 12 times + and r2, r4, r5, ror #30 + orr r2, r2, r1 + and r1, r3, r5, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r5, r1, ror #8 + orr r5, r2, r1, ror #10 // permute r5 12 times --- + and r1, r14, r6, ror #8 // --- permute r6 12 times + and r2, r4, r6, ror #30 + orr r2, r2, r1 + and r1, r3, r6, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r6, r1, ror #8 + orr r6, r2, r1, ror #10 // permute r6 12 times --- + and r1, r14, r7, ror #8 // --- permute r7 12 times + and r2, r4, r7, ror #30 + orr r2, r2, r1 + and r1, r3, r7, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r7, r1, ror #8 + orr r7, r2, r1, ror #10 // permute r7 12 times --- + and r1, r14, r8, ror #8 // --- permute r8 12 times + and r2, r4, r8, ror #30 + orr r2, r2, r1 + and r1, r3, r8, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r8, r1, ror #8 + orr r8, r2, r1, ror #10 // permute r8 12 times --- + and r1, r14, r9, ror #8 // --- permute r9 12 times + and r2, r4, r9, ror #30 + orr r2, r2, r1 + and r1, r3, r9, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r9, r1, ror #8 + orr r9, r2, r1, ror #10 // permute r9 12 times --- + and r1, r14, r10, ror #8 // --- permute r10 12 times + and r2, r4, r10, ror #30 + orr r2, r2, r1 + and r1, r3, r10, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r10, r1, ror #8 + orr r10, r2, r1, ror #10 // permute r10 12 times --- + and r1, r14, r11, ror #8 // --- permute r11 12 times + and r2, r4, r11, ror #30 + orr r2, r2, r1 + and r1, r3, r11, ror #16 + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r11, r1, ror #8 + orr r11, r2, r1, ror #10 // permute r11 12 times --- + and r1, r14, r12, ror #8 // --- permute r12 12 times + and r2, r4, r12, ror #30 + orr r2, r2, r1 + and r1, r3, r12, ror #16 + ldr.w r14, [sp] + orr r2, r2, r1 + movw r1, #0xcccc //r1 <- 0x0000cccc + and r1, r12, r1, ror #8 + orr r12, r2, r1, ror #10 // permute r12 12 times --- + bx lr + +/******************************************************************************* +* Applies P^14 on the tweakey state in a bitsliced manner. +*******************************************************************************/ +.align 2 +p14: + movw r3, #0xcc00 + movt r3, #0x0033 //r3 <- 0x0033cc00 + movw r4, #0xcc00 + movt r4, #0xcc00 //r4 <- 0x33003300 + and r1, r3, r5, ror #24 // --- permute r5 14 times + and r2, r5, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r5, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r5, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r5, r4 + orr r5, r2, r1, ror #18 // permute r5 14 times --- + and r1, r3, r6, ror #24 // --- permute r6 14 times + and r2, r6, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r6, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r6, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r6, r4 + orr r6, r2, r1, ror #18 // permute r6 14 times --- + and r1, r3, r7, ror #24 // --- permute r7 14 times + and r2, r7, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r7, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r7, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r7, r4 + orr r7, r2, r1, ror #18 // permute r7 14 times --- + and r1, r3, r8, ror #24 // --- permute r8 14 times + and r2, r8, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r8, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r8, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r8, r4 + orr r8, r2, r1, ror #18 // permute r8 14 times --- + and r1, r3, r9, ror #24 // --- permute r9 14 times + and r2, r9, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r9, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r9, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r9, r4 + orr r9, r2, r1, ror #18 // permute r9 14 times --- + and r1, r3, r10, ror #24 // --- permute r10 14 times + and r2, r10, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r10, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r10, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r10, r4 + orr r10, r2, r1, ror #18 // permute r10 14 times --- + and r1, r3, r11, ror #24 // --- permute r11 14 times + and r2, r11, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r11, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r11, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r11, r4 + orr r11, r2, r1, ror #18 // permute r11 14 times --- + and r1, r3, r12, ror #24 // --- permute r12 14 times + and r2, r12, #0x00000033 + orr r2, r1, r2, ror #14 + and r1, r12, #0x33000000 + orr r2, r2, r1, ror #30 + and r1, r12, #0x00ff0000 + orr r2, r2, r1, ror #16 + and r1, r12, r4 + orr r12, r2, r1, ror #18 // permute r12 14 times --- + bx lr + +/******************************************************************************* +* Packs the input byte array into the fixsliced representation. +*******************************************************************************/ +.align 2 +packing: + eor r4, r5, r6, lsr #1 + and r4, r4, r2 + eor r5, r5, r4 + eor r6, r6, r4, lsl #1 //SWAPMOVE(r6, r5, 0x55555555, 1) + eor r4, r7, r8, lsr #1 + and r4, r4, r2 + eor r7, r7, r4 + eor r8, r8, r4, lsl #1 //SWAPMOVE(r8, r7, 0x55555555, 1) + eor r4, r9, r10, lsr #1 + and r4, r4, r2 + eor r9, r9, r4 + eor r10, r10, r4, lsl #1 //SWAPMOVE(r10, r9, 0x55555555, 1) + eor r4, r11, r12, lsr #1 + and r4, r4, r2 + eor r11, r11, r4 + eor r12, r12, r4, lsl #1 //SWAPMOVE(r12, r11, 0x55555555, 1) + eor r4, r5, r7, lsr #2 + and r4, r4, r3 + eor r5, r5, r4 + eor r7, r7, r4, lsl #2 //SWAPMOVE(r7, r5, 0x30303030, 2) + eor r4, r5, r9, lsr #4 + and r4, r4, r3, lsr #2 + eor r5, r5, r4 + eor r9, r9, r4, lsl #4 //SWAPMOVE(r9, r5, 0x0c0c0c0c, 4) + eor r4, r5, r11, lsr #6 + and r4, r4, r3, lsr #4 + eor r5, r5, r4 + eor r11, r11, r4, lsl #6 //SWAPMOVE(r11, r5, 0x03030303, 6) + eor r4, r6, r8, lsr #2 + and r4, r4, r3 + eor r6, r6, r4 + eor r8, r8, r4, lsl #2 //SWAPMOVE(r8, r6, 0x30303030, 2) + eor r4, r6, r10, lsr #4 + and r4, r4, r3, lsr #2 + eor r6, r6, r4 + eor r10, r10, r4, lsl #4 //SWAPMOVE(r10, r6, 0x0c0c0c0c, 4) + eor r4, r6, r12, lsr #6 + and r4, r4, r3, lsr #4 + eor r6, r6, r4 + eor r12, r12, r4, lsl #6 //SWAPMOVE(r12, r6, 0x03030303, 6) + eor r4, r7, r9, lsr #2 + and r4, r4, r3, lsr #2 + eor r7, r7, r4 + eor r9, r9, r4, lsl #2 //SWAPMOVE(r9, r7, 0x0c0c0c0c, 2) + eor r4, r7, r11, lsr #4 + and r4, r4, r3, lsr #4 + eor r7, r7, r4 + eor r11, r11, r4, lsl #4 //SWAPMOVE(r11, r7, 0x03030303, 4) + eor r4, r8, r10, lsr #2 + and r4, r4, r3, lsr #2 + eor r8, r8, r4 + eor r10, r10, r4, lsl #2 //SWAPMOVE(r10, r8, 0x0c0c0c0c, 2) + eor r4, r8, r12, lsr #4 + and r4, r4, r3, lsr #4 + eor r8, r8, r4 + eor r12, r12, r4, lsl #4 //SWAPMOVE(r12, r8, 0x03030303, 4) + eor r4, r9, r11, lsr #2 + and r4, r4, r3, lsr #4 + eor r9, r9, r4 + eor r11, r11, r4, lsl #2 //SWAPMOVE(r11, r9, 0x03030303, 2) + eor r4, r10, r12, lsr #2 + and r4, r4, r3, lsr #4 + eor r10, r10, r4 + eor r12, r12, r4, lsl #2 //SWAPMOVE(r12, r10, 0x03030303, 2) + bx lr + +/******************************************************************************* +* Unpacks the internal state in fixsliced representation into a byte array. +*******************************************************************************/ +.align 2 +unpacking: + movw r2, #0x5555 + movt r2, #0x5555 //r2 <- 0x55555555 + movw r3, #0x3030 + movt r3, #0x3030 //r3 <- 0x30303030 + eor r4, r9, r11, lsr #2 + and r4, r4, r3, lsr #4 + eor r9, r9, r4 + eor r11, r11, r4, lsl #2 //SWAPMOVE(r11, r9, 0x03030303, 2) + eor r4, r10, r12, lsr #2 + and r4, r4, r3, lsr #4 + eor r10, r10, r4 + eor r12, r12, r4, lsl #2 //SWAPMOVE(r12, r10, 0x03030303, 2) + eor r4, r8, r10, lsr #2 + and r4, r4, r3, lsr #2 + eor r8, r8, r4 + eor r10, r10, r4, lsl #2 //SWAPMOVE(r10, r8, 0x0c0c0c0c, 2) + eor r4, r8, r12, lsr #4 + and r4, r4, r3, lsr #4 + eor r8, r8, r4 + eor r12, r12, r4, lsl #4 //SWAPMOVE(r12, r8, 0x03030303, 4) + eor r4, r7, r9, lsr #2 + and r4, r4, r3, lsr #2 + eor r7, r7, r4 + eor r9, r9, r4, lsl #2 //SWAPMOVE(r9, r7, 0x0c0c0c0c, 2) + eor r4, r7, r11, lsr #4 + and r4, r4, r3, lsr #4 + eor r7, r7, r4 + eor r11, r11, r4, lsl #4 //SWAPMOVE(r11, r7, 0x03030303, 4) + eor r4, r6, r12, lsr #6 + and r4, r4, r3, lsr #4 + eor r6, r6, r4 + eor r12, r12, r4, lsl #6 //SWAPMOVE(r12, r6, 0x03030303, 6) + eor r4, r6, r10, lsr #4 + and r4, r4, r3, lsr #2 + eor r6, r6, r4 + eor r10, r10, r4, lsl #4 //SWAPMOVE(r10, r6, 0x0c0c0c0c, 4) + eor r4, r6, r8, lsr #2 + and r4, r4, r3 + eor r6, r6, r4 + eor r8, r8, r4, lsl #2 //SWAPMOVE(r8, r6, 0x30303030, 2) + eor r4, r5, r11, lsr #6 + and r4, r4, r3, lsr #4 + eor r5, r5, r4 + eor r11, r11, r4, lsl #6 //SWAPMOVE(r11, r5, 0x03030303, 6) + eor r4, r5, r9, lsr #4 + and r4, r4, r3, lsr #2 + eor r5, r5, r4 + eor r9, r9, r4, lsl #4 //SWAPMOVE(r9, r5, 0x0c0c0c0c, 4) + eor r4, r5, r7, lsr #2 + and r4, r4, r3 + eor r5, r5, r4 + eor r7, r7, r4, lsl #2 //SWAPMOVE(r7, r5, 0x30303030, 2) + eor r4, r5, r6, lsr #1 + and r4, r4, r2 + eor r5, r5, r4 + eor r6, r6, r4, lsl #1 //SWAPMOVE(r6, r5, 0x55555555, 1) + eor r4, r7, r8, lsr #1 + and r4, r4, r2 + eor r7, r7, r4 + eor r8, r8, r4, lsl #1 //SWAPMOVE(r8, r7, 0x55555555, 1) + eor r4, r9, r10, lsr #1 + and r4, r4, r2 + eor r9, r9, r4 + eor r10, r10, r4, lsl #1 //SWAPMOVE(r10, r9, 0x55555555, 1) + eor r4, r11, r12, lsr #1 + and r4, r4, r2 + eor r11, r11, r4 + eor r12, r12, r4, lsl #1 //SWAPMOVE(r12, r11, 0x55555555, 1) + bx lr + + + +/****************************************************************************** +* Compute TK = LFSR2(TK2) for all rounds. +******************************************************************************/ +@ void tkschedule_lfsr_2(u32* rtk, const u8* tk2, const u8* tk2_bis, const int rounds) +.global tkschedule_lfsr_2 +.type tkschedule_lfsr_2,%function +.align 2 +tkschedule_lfsr_2: + push {r0-r12, r14} + ldm r1, {r5,r7,r9,r11} // load the 1st block in r5,r7,r9,r11 + ldm r2, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 + mov.w r1, r3 //load loop counter in r1 + movw r2, #0x5555 + movt r2, #0x5555 //r2 <- 0x55555555 + movw r3, #0x3030 + movt r3, #0x3030 //r3 <- 0x30303030 + bl packing + stmia r0!, {r5-r12} + loop_2: + eor r5, r5, r7 // apply LFSR2 to tk2 + stmia r0!, {r6-r12} + str.w r5, [r0], #36 + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r6, r6, r8 // apply LFSR2 to tk2 + stmia r0!, {r7-r12} + strd r5, r6, [r0], #40 + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r7, r7, r9 // apply LFSR2 to tk2 + stmia r0!, {r8-r12} + stmia r0!, {r5-r7} + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r8, r8, r10 // apply LFSR2 to tk2 + stmia r0!, {r9-r12} + stmia r0!, {r5-r8} + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r9, r9, r11 // apply LFSR2 to tk2 + stmia r0!, {r10-r12} + stmia r0!, {r5-r9} + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r10, r10, r12 // apply LFSR2 to tk2 + strd r11, r12, [r0], #8 + stmia r0!, {r5-r10} + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r11, r11, r5 // apply LFSR2 to tk2 + str.w r12, [r0], #4 + stmia r0!, {r5-r11} + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // r1 = 0 => we are done + eor r12, r12, r6 // apply LFSR2 to tk2 + stmia r0!, {r5-r12} + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + bne loop_2 // if not 0 then we run the loop again + exit_lfsr: + pop {r0-r12, r14} + bx lr + + +/****************************************************************************** +* Compute TK ^= LFSR3(TK3) for all rounds. +******************************************************************************/ +@ void tkschedule_lfsr_3(u32* rtk, const u8* tk2, const u8* tk2_bis, +@ const int rounds) +.global tkschedule_lfsr_3 +.type tkschedule_lfsr_3,%function +.align 2 +tkschedule_lfsr_3: + push {r0-r12, r14} + ldm r1, {r5,r7,r9,r11} // load the 1st block in r5,r7,r9,r11 + ldm r2, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 + mov.w r1, r3 //load loop counter in r1 + movw r2, #0x5555 + movt r2, #0x5555 //r2 <- 0x55555555 + movw r3, #0x3030 + movt r3, #0x3030 //r3 <- 0x30303030 + bl packing + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r5 // rtk <- tk2 ^ tk3 + eor r3, r3, r6 // rtk <- tk2 ^ tk3 + eor r4, r4, r7 // rtk <- tk2 ^ tk3 + eor r14, r14, r8 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r9 // rtk <- tk2 ^ tk3 + eor r3, r3, r10 // rtk <- tk2 ^ tk3 + eor r4, r4, r11 // rtk <- tk2 ^ tk3 + eor r14, r14, r12 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + loop_3: + eor r12, r12, r6 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r12 // rtk <- tk2 ^ tk3 + eor r3, r3, r5 // rtk <- tk2 ^ tk3 + eor r4, r4, r6 // rtk <- tk2 ^ tk3 + eor r14, r14, r7 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r8 // rtk <- tk2 ^ tk3 + eor r3, r3, r9 // rtk <- tk2 ^ tk3 + eor r4, r4, r10 // rtk <- tk2 ^ tk3 + eor r14, r14, r11 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r11, r11, r5 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r11 // rtk <- tk2 ^ tk3 + eor r3, r3, r12 // rtk <- tk2 ^ tk3 + eor r4, r4, r5 // rtk <- tk2 ^ tk3 + eor r14, r14, r6 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r7 // rtk <- tk2 ^ tk3 + eor r3, r3, r8 // rtk <- tk2 ^ tk3 + eor r4, r4, r9 // rtk <- tk2 ^ tk3 + eor r14, r14, r10 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r10, r10, r12 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r10 // rtk <- tk2 ^ tk3 + eor r3, r3, r11 // rtk <- tk2 ^ tk3 + eor r4, r4, r12 // rtk <- tk2 ^ tk3 + eor r14, r14, r5 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r6 // rtk <- tk2 ^ tk3 + eor r3, r3, r7 // rtk <- tk2 ^ tk3 + eor r4, r4, r8 // rtk <- tk2 ^ tk3 + eor r14, r14, r9 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r9, r9, r11 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r9 // rtk <- tk2 ^ tk3 + eor r3, r3, r10 // rtk <- tk2 ^ tk3 + eor r4, r4, r11 // rtk <- tk2 ^ tk3 + eor r14, r14, r12 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r5 // rtk <- tk2 ^ tk3 + eor r3, r3, r6 // rtk <- tk2 ^ tk3 + eor r4, r4, r7 // rtk <- tk2 ^ tk3 + eor r14, r14, r8 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r8, r8, r10 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r8 // rtk <- tk2 ^ tk3 + eor r3, r3, r9 // rtk <- tk2 ^ tk3 + eor r4, r4, r10 // rtk <- tk2 ^ tk3 + eor r14, r14, r11 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r12 // rtk <- tk2 ^ tk3 + eor r3, r3, r5 // rtk <- tk2 ^ tk3 + eor r4, r4, r6 // rtk <- tk2 ^ tk3 + eor r14, r14, r7 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r7, r7, r9 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r7 // rtk <- tk2 ^ tk3 + eor r3, r3, r8 // rtk <- tk2 ^ tk3 + eor r4, r4, r9 // rtk <- tk2 ^ tk3 + eor r14, r14, r10 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r11 // rtk <- tk2 ^ tk3 + eor r3, r3, r12 // rtk <- tk2 ^ tk3 + eor r4, r4, r5 // rtk <- tk2 ^ tk3 + eor r14, r14, r6 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r6, r6, r8 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r6 // rtk <- tk2 ^ tk3 + eor r3, r3, r7 // rtk <- tk2 ^ tk3 + eor r4, r4, r8 // rtk <- tk2 ^ tk3 + eor r14, r14, r9 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r10 // rtk <- tk2 ^ tk3 + eor r3, r3, r11 // rtk <- tk2 ^ tk3 + eor r4, r4, r12 // rtk <- tk2 ^ tk3 + eor r14, r14, r5 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 2 + beq exit_lfsr // if 0 then we are done + eor r5, r5, r7 // apply LFSR3 to tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r5 // rtk <- tk2 ^ tk3 + eor r3, r3, r6 // rtk <- tk2 ^ tk3 + eor r4, r4, r7 // rtk <- tk2 ^ tk3 + eor r14, r14, r8 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + ldm r0, {r2-r4,r14} // load rtk (computed by tkschedule_lfsr_2) + eor r2, r2, r9 // rtk <- tk2 ^ tk3 + eor r3, r3, r10 // rtk <- tk2 ^ tk3 + eor r4, r4, r11 // rtk <- tk2 ^ tk3 + eor r14, r14, r12 // rtk <- tk2 ^ tk3 + stmia r0!, {r2-r4,r14} // store rtk after adding tk3 + add r0, r0, #32 // same round tweakey every 2 rounds + subs r1, r1, #2 // decrease loop counter by 8 + bne loop_3 + pop {r0-r12, r14} + bx lr + +/****************************************************************************** +* Compute TK = rearrange(perm(TK ^ TK1)) for all rounds. +* The function 'rearrange' aims at reording bits for all round tweakeys to +* match the fixsliced implementation of the SKINNY block cipher. +******************************************************************************/ +@ void tkschedule_perm(u32* rtk) +.global tkschedule_perm +.type tkschedule_perm,%function +.align 2 +tkschedule_perm: + push {r0-r12, r14} + sub.w sp, #4 // to store 'lr' during subroutines + movw r4, #0xf0f0 + movt r4, #0xf0f0 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x0000000c // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + mvn r10, r10 // to save 1 NOT in Sbox calculations + mvn r6, r6 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x000000c0 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + strd r5, r6, [r0], #8 + strd r8, r12, [r0], #8 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + and r3, r4, r11, ror #26 + mvn r1, r1 + eor r2, r2, #0x00000300 + eor r3, r3, #0x00000300 + eor r3, r3, #0x30000000 + mvn r3, r3 + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #26 + and r2, r4, r6, ror #26 + and r3, r4, r7, ror #26 + mvn r1, r1 + mvn r2, r2 + mvn r3, r3 + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + mvn r1, r1 + stmia.w r0!, {r1-r2} + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #12 + and r1, r4, r6, ror #28 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #12 + and r1, r4, r7, ror #28 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #12 + and r1, r4, r8, ror #28 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #12 + and r1, r4, r9, ror #28 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #12 + and r1, r4, r10, ror #28 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #12 + and r1, r4, r11, ror #28 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #12 + and r1, r4, r12, ror #28 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- + mvn r8, r8 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x0c000000 // add rconst + str.w r8, [r0], #4 + stmia r0!, {r7,r9,r12} + eor r10, r10, #0x0c000000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + str.w r10, [r0], #4 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0xcc000000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + stmia r0!, {r5,r6,r11} + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p4 // apply the permutation 4 times + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x00300000 // add rconst + eor r2, r2, #0x00000003 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00300000 // add rconst + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x00300000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00300000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x00cc0000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + eor r10, r10, #0x00c00000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + mvn r6, r6 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00f00000 // add rconst + eor r9, r9, #0x00c00000 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 + strd r11, r10, [r0], #8 + strd r5, r6, [r0], #8 + strd r8, r12, [r0], #8 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p6 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x00c00000 // add rconst + eor r3, r3, #0x03c00000 // add rconst + eor r3, r3, #0x00003000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #28 + and r1, r4, r6, ror #12 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #28 + and r1, r4, r7, ror #12 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #28 + and r1, r4, r8, ror #12 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #28 + and r1, r4, r9, ror #12 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #28 + and r1, r4, r10, ror #12 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #28 + and r1, r4, r11, ror #12 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #28 + and r1, r4, r12, ror #12 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- + mvn r7, r7 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + eor r9, r9, #0x00000c00 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00000c00 // add rconst + eor r12, r12, #0x03000000 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x00000c00 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0x0000c000 // add rconst + eor r11, r11, #0x03000000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p8 + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + eor r1, r1, #0x00000c30 // add rconst + eor r3, r3, #0x00000c30 // add rconst + eor r3, r3, #0x00030000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00000030 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x000000fc // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + eor r10, r10, #0x000000c0 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + mvn r6, r6 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x000000f0 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + strd r5, r6, [r0], #8 + strd r8, r12, [r0], #8 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p10 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + eor r1, r1, #0x00000300 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x00000300 // add rconst + strd r1, r2, [r0], #8 + and r1, r4, r11, ror #26 + and r2, r4, r10, ror #26 + eor r1, r1, #0x30000000 // add rconst + eor r1, r1, #0x000003c0 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x00000300 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r1, r4, r6, ror #26 + and r2, r4, r7, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #12 + and r1, r4, r6, ror #28 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #12 + and r1, r4, r7, ror #28 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #12 + and r1, r4, r8, ror #28 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #12 + and r1, r4, r9, ror #28 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #12 + and r1, r4, r10, ror #28 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #12 + and r1, r4, r11, ror #28 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #12 + and r1, r4, r12, ror #28 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- + mvn r8, r8 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + eor r9, r9, #0x0c000000 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00000300 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x0c000000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0xcc000000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p12 + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r3, r3, #0x0c000000 // add rconst + eor r2, r2, #0x00000003 // add rconst + eor r2, r2, #0x0c000000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x00300000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00300000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x003c0000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + strd r5, r6, [r0], #8 + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00f00000 // add rconst + strd r8, r12, [r0], #8 + eor r9, r9, #0x00c00000 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p14 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x03c00000 // add rconst + eor r3, r3, #0x03c00000 // add rconst + eor r3, r3, #0x00003000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #28 + and r1, r4, r6, ror #12 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #28 + and r1, r4, r7, ror #12 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #28 + and r1, r4, r8, ror #12 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #28 + and r1, r4, r9, ror #12 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #28 + and r1, r4, r10, ror #12 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #28 + and r1, r4, r11, ror #12 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #28 + and r1, r4, r12, ror #12 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- + mvn r7, r7 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00000c00 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x00000c00 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0x0000cc00 // add rconst + eor r11, r11, #0x03000000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + eor r3, r3, #0x00000030 // add rconst + eor r3, r3, #0x00030000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + eor r1, r1, #0x00000030 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00000030 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x0000000c // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + eor r10, r10, #0x000000c0 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + strd r5, r6, [r0], #8 + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x000000f0 // add rconst + strd r8, r12, [r0], #8 + eor r9, r9, #0x000000c0 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + and r3, r4, r11, ror #26 + eor r1, r1, #0x00000300 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x000000c0 // add rconst + eor r3, r3, #0x000003c0 // add rconst + eor r3, r3, #0x30000000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #26 + and r2, r4, r6, ror #26 + and r3, r4, r7, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r2} + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #12 + and r1, r4, r6, ror #28 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #12 + and r1, r4, r7, ror #28 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #12 + and r1, r4, r8, ror #28 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #12 + and r1, r4, r9, ror #28 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #12 + and r1, r4, r10, ror #28 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #12 + and r1, r4, r11, ror #28 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #12 + and r1, r4, r12, ror #28 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- + mvn r8, r8 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x0c000000 // add rconst + eor r12, r12, #0x00000300 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x0c000000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0xc0000000 // add rconst + eor r11, r11, #0x00000300 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p4 // apply the permutation 4 times + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x0c300000 // add rconst + eor r2, r2, #0x00000003 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00300000 // add rconst + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x00300000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x00cc0000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + eor r10, r10, #0x00c00000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + mvn r6, r6 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00300000 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 + strd r11, r10, [r0], #8 + strd r5, r6, [r0], #8 + strd r8, r12, [r0], #8 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p6 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00c00000 // add rconst + eor r3, r3, #0x00003000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #28 + and r1, r4, r6, ror #12 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #28 + and r1, r4, r7, ror #12 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #28 + and r1, r4, r8, ror #12 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #28 + and r1, r4, r9, ror #12 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #28 + and r1, r4, r10, ror #12 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #28 + and r1, r4, r11, ror #12 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #28 + and r1, r4, r12, ror #12 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- + mvn r7, r7 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + eor r9, r9, #0x00000c00 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x03000000 // add rconst + strd r9, r12, [r0], #8 + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0x0000c000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p8 + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + eor r1, r1, #0x00000c00 // add rconst + eor r3, r3, #0x00030c00 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x0000003c // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + mvn r10, r10 // to save 1 NOT in Sbox calculations + mvn r6, r6 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x000000c0 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + strd r5, r6, [r0], #8 + strd r8, r12, [r0], #8 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p10 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r1, r4, r11, ror #26 + and r2, r4, r10, ror #26 + eor r1, r1, #0x30000000 // add rconst + eor r1, r1, #0x00000300 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r1, r4, r6, ror #26 + and r2, r4, r7, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #12 + and r1, r4, r6, ror #28 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #12 + and r1, r4, r7, ror #28 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #12 + and r1, r4, r8, ror #28 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #12 + and r1, r4, r9, ror #28 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #12 + and r1, r4, r10, ror #28 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #12 + and r1, r4, r11, ror #28 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #12 + and r1, r4, r12, ror #28 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- + mvn r8, r8 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x0c000000 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x0c000000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0xc0000000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p12 + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r3, r3, #0x00300000 // add rconst + eor r2, r2, #0x00000003 // add rconst + eor r2, r2, #0x00300000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x00300000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x00cc0000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + eor r10, r10, #0x00c00000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + strd r5, r6, [r0], #8 + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00f00000 // add rconst + strd r8, r12, [r0], #8 + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p14 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x03c00000 // add rconst + eor r3, r3, #0x00003000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #28 + and r1, r4, r6, ror #12 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #28 + and r1, r4, r7, ror #12 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #28 + and r1, r4, r8, ror #12 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #28 + and r1, r4, r9, ror #12 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #28 + and r1, r4, r10, ror #12 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #28 + and r1, r4, r11, ror #12 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #28 + and r1, r4, r12, ror #12 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- + mvn r7, r7 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + eor r9, r9, #0x00000c00 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x03000000 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x00000c00 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0x0000c000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + eor r1, r1, #0x00000c00 // add rconst + eor r3, r3, #0x00030c00 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00000030 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x0000003c // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r11, r10, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + strd r5, r6, [r0], #8 + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x000000f0 // add rconst + strd r8, r12, [r0], #8 + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + and r3, r4, r11, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x00000300 // add rconst + eor r3, r3, #0x000003c0 // add rconst + eor r3, r3, #0x30000000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #26 + and r2, r4, r6, ror #26 + and r3, r4, r7, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + mvn r1, r1 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r2} + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #28 // --- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #12 + and r1, r4, r6, ror #28 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #12 + and r1, r4, r7, ror #28 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #12 + and r1, r4, r8, ror #28 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #12 + and r1, r4, r9, ror #28 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #12 + and r1, r4, r10, ror #28 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #12 + and r1, r4, r11, ror #28 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #12 + and r1, r4, r12, ror #28 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #12 // ror and masks to match fixslicing --- + mvn r8, r8 // to save 1 NOT in Sbox calculations + mvn r7, r7 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + mvn r9, r9 // to save 1 NOT in Sbox calculations + strd r9, r12, [r0], #8 + eor r10, r10, #0x0c000000 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0xcc000000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p4 // apply the permutation 4 times + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r3, r3, #0x00300000 // add rconst + eor r2, r2, #0x00000003 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + eor r2, r2, #0x00300000 // add rconst + mvn r2, r2 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00300000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r5, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r6, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r7, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r8, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r9, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r10, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r11, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r12, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + eor r11, r11, #0x00cc0000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + mvn r10, r10 // to save 1 NOT in Sbox calculations + mvn r6, r6 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00f00000 // add rconst + eor r9, r9, #0x00c00000 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + mvn r7, r7 + strd r11, r10, [r0], #8 + strd r5, r6, [r0], #8 + strd r8, r12, [r0], #8 + strd r9, r7, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p6 + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r2, r2, #0x00c00000 // add rconst + eor r3, r3, #0x03c00000 // add rconst + eor r3, r3, #0x00003000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + eor r1, r1, #0x03000000 // add rconst + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r2, r2 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r5, ror #12 //--- ror and masks to match fixslicing + and r5, r5, r4, lsl #6 + orr r5, r1, r5, ror #28 + and r1, r4, r6, ror #12 + and r6, r6, r4, lsl #6 + orr r6, r1, r6, ror #28 + and r1, r4, r7, ror #12 + and r7, r7, r4, lsl #6 + orr r7, r1, r7, ror #28 + and r1, r4, r8, ror #12 + and r8, r8, r4, lsl #6 + orr r8, r1, r8, ror #28 + and r1, r4, r9, ror #12 + and r9, r9, r4, lsl #6 + orr r9, r1, r9, ror #28 + and r1, r4, r10, ror #12 + and r10, r10, r4, lsl #6 + orr r10, r1, r10, ror #28 + and r1, r4, r11, ror #12 + and r11, r11, r4, lsl #6 + orr r11, r1, r11, ror #28 + and r1, r4, r12, ror #12 + and r12, r12, r4, lsl #6 + orr r12, r1, r12, ror #28 //ror and masks to match fixslicing --- + mvn r7, r7 // to save 1 NOT in Sbox calculations + mvn r8, r8 // to save 1 NOT in Sbox calculations + strd r8, r7, [r0], #8 + eor r9, r9, #0x00000c00 // add rconst + mvn r9, r9 // to save 1 NOT in Sbox calculations + eor r12, r12, #0x00000c00 // add rconst + strd r9, r12, [r0], #8 + eor r10, r10, #0x00000c00 // add rconst + mvn r10, r10 // to save 1 NOT in Sbox calculations + strd r10, r5, [r0], #8 + mvn r6, r6 // to save 1 NOT in Sbox calculations + eor r11, r11, #0x03000000 // add rconst + eor r11, r11, #0x0000c000 // add rconst + mvn r11, r11 // to save 1 NOT in Sbox calculations + strd r6, r11, [r0], #8 + ldm r0, {r5-r12} // load rtk = tk1 ^ lfsr2(tk2) ^ lfsr3(tk3) + bl p8 + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + eor r1, r1, #0x00000c00 // add rconst + eor r3, r3, #0x00000030 // add rconst + eor r3, r3, #0x00030000 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + mvn r1, r1 // to save 1 NOT in Sbox calculations + eor r3, r3, #0x00000030 // add rconst + mvn r3, r3 // to save 1 NOT in Sbox calculations + strd r1, r3, [r0], #8 + add.w sp, #4 + pop {r0-r12, r14} + bx lr + +/****************************************************************************** +* Compute TK = rearrange(perm(TK ^ TK1)) for all rounds. +* The function 'rearrange' aims at reording bits for all round tweakeys to +* match the fixsliced implementation of the SKINNY block cipher. +******************************************************************************/ +@ void tkschedule_perm_tk1(u32* rtk) +.global tkschedule_perm_tk1 +.type tkschedule_perm_tk1,%function +.align 2 +tkschedule_perm_tk1: + push {r0-r12, r14} + sub.w sp, #32 // to store packed tk1 + ldm r1, {r5,r7,r9,r11} // load the 1st block in r5,r7,r9,r11 + ldm r2, {r6,r8,r10,r12} // load the 1st block in r5,r7,r9,r11 + movw r2, #0x5555 + movt r2, #0x5555 // r2 <- 0x55555555 + movw r3, #0x3030 + movt r3, #0x3030 // r3 <- 0x30303030 + bl packing + stm sp, {r5-r12} + movw r4, #0xf0f0 + movt r4, #0xf0f0 + and r1, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + strd r1, r2, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + and r3, r4, r11, ror #26 + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #26 + and r2, r4, r6, ror #26 + and r3, r4, r7, ror #26 + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + stmia.w r0!, {r1-r2} + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r8, ror #28 // --- ror and masks to match fixslicing + and r2, r8, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r7, ror #28 + and r3, r7, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + and r1, r4, r9, ror #28 + and r2, r9, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r12, ror #28 + and r3, r12, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + and r1, r4, r10, ror #28 + and r2, r10, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r5, ror #28 + and r3, r5, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + and r1, r4, r6, ror #28 + and r2, r6, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r11, ror #28 + and r3, r11, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r1, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + strd r1, r2, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + stmia r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + stmia r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r8, ror #12 // --- ror and masks to match fixslicing + and r2, r8, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r7, ror #12 + and r3, r7, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + and r1, r4, r9, ror #12 + and r2, r9, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r12, ror #12 + and r3, r12, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + and r1, r4, r10, ror #12 + and r2, r10, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r5, ror #12 + and r3, r5, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + and r1, r4, r6, ror #12 + and r2, r6, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r11, ror #12 + and r3, r11, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r1, r11, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r10, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r5, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r6, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r8, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r12, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r9, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r7, r4 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + strd r1, r2, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #26 + and r2, r4, r12, ror #26 + strd r1, r2, [r0], #8 + and r1, r4, r11, ror #26 + and r2, r4, r10, ror #26 + strd r1, r2, [r0], #8 + and r1, r4, r6, ror #26 + and r2, r4, r7, ror #26 + strd r1, r2, [r0], #8 + and r1, r4, r8, ror #26 + and r2, r4, r5, ror #26 + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r8, ror #28 // --- ror and masks to match fixslicing + and r2, r8, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r7, ror #28 + and r3, r7, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + and r1, r4, r9, ror #28 + and r2, r9, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r12, ror #28 + and r3, r12, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + and r1, r4, r10, ror #28 + and r2, r10, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r5, ror #28 + and r3, r5, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + and r1, r4, r6, ror #28 + and r2, r6, r4, lsl #6 + orr r2, r1, r2, ror #12 + and r1, r4, r11, ror #28 + and r3, r11, r4, lsl #6 + orr r3, r1, r3, ror #12 + strd r2, r3, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r5, ror #14 // --- ror and masks to match fixslicing + and r2, r5, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r6, ror #14 + and r3, r6, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + and r1, r4, r7, ror #14 + and r2, r7, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r8, ror #14 + and r3, r8, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + and r1, r4, r11, ror #14 + and r2, r11, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r12, ror #14 + and r3, r12, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + and r1, r4, r9, ror #14 + and r2, r9, r4, ror #4 + orr r2, r1, r2, ror #6 + and r1, r4, r10, ror #14 + and r3, r10, r4, ror #4 + orr r3, r1, r3, ror #6 + strd r3, r2, [r0], #8 + orr r4, r4, r4, lsl #2 // r4 <- 0xf0f0f0f0 + and r1, r4, r11, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r4, r10, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r4, r5, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r4, r6, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r4, r8, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r3, r4, r12, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + stmia r0!, {r1-r3} + and r1, r4, r9, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + and r2, r4, r7, ror #16 // tk &= 0xf0f0f0f0 (extract rows 1&2 only) + strd r1, r2, [r0], #8 + bl p2 // apply the permutation twice + movw r4, #0xc3c3 + movt r4, #0xc3c3 // r4 <- 0xc3c3c3c3 + and r1, r4, r9, ror #10 // ror and mask to match fixslicing + and r2, r4, r12, ror #10 // ror and mask to match fixslicing + and r3, r4, r11, ror #10 // ror and mask to match fixslicing + stmia.w r0!, {r1-r3} + and r1, r4, r10, ror #10 // ror and mask to match fixslicing + and r2, r4, r6, ror #10 // ror and mask to match fixslicing + and r3, r4, r7, ror #10 // ror and mask to match fixslicing + stmia.w r0!, {r1-r3} + and r1, r4, r8, ror #10 // ror and mask to match fixslicing + and r2, r4, r5, ror #10 // ror and mask to match fixslicing + strd r1, r2, [r0], #8 + and r4, r4, r4, lsr #6 // r4 <- 0x03030303 + and r1, r4, r8, ror #12 // --- ror and masks to match fixslicing + and r2, r8, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r7, ror #12 + and r3, r7, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + and r1, r4, r9, ror #12 + and r2, r9, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r12, ror #12 + and r3, r12, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + and r1, r4, r10, ror #12 + and r2, r10, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r5, ror #12 + and r3, r5, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + and r1, r4, r6, ror #12 + and r2, r6, r4, lsl #6 + orr r2, r1, r2, ror #28 + and r1, r4, r11, ror #12 + and r3, r11, r4, lsl #6 + orr r3, r1, r3, ror #28 + strd r2, r3, [r0], #8 + ldmia.w sp!, {r5-r12} + movw r4, #0x3030 + movt r4, #0x3030 // r4 <- 0x30303030 + and r1, r4, r6, ror #30 + and r2, r6, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r5, ror #30 + and r2, r5, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + and r1, r4, r8, ror #30 + and r2, r8, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r7, ror #30 + and r2, r7, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + and r1, r4, r12, ror #30 + and r2, r12, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r11, ror #30 + and r2, r11, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0], #8 + and r1, r4, r10, ror #30 + and r2, r10, r4, ror #4 + orr r1, r1, r2, ror #22 + and r3, r4, r9, ror #30 + and r2, r9, r4, ror #4 + orr r3, r3, r2, ror #22 + strd r1, r3, [r0] + pop {r0-r12, r14} + bx lr + +/****************************************************************************** +* Quadruple round of the SKINNY block cipher in a bitsliced manner. +******************************************************************************/ +.align 2 +quadruple_round: + str.w r14, [sp] // store r14 on the stack + orr r4, r5, r6 // state[0] | state[1] + eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) + orr r4, r9, r10 // state[4] | state[5] + eor r12, r12, r4 // state[7] ^= (state[4] | state[5]) + orr r4, r11, r10 // state[6] | state[5] + eor r6, r6, r4 // state[1] ^= (state[6] | state[5]) + and r4, r8, r12 // state[3] & state[7] + eor r7, r7, r4 // state[2] ^= (state[3] & state[7]) + orn r4, r9, r12 // ~state[7] | state[4] + eor r11, r11, r4 // state[6] ^= (~state[7] | state[4]) + orn r4, r7, r6 // state[2] | ~state[1] + eor r5, r5, r4 // state[0] ^= (state[2] | ~state[1]) + orn r4, r7, r8 // ~state[3] | state[2] + eor r9, r9, r4 // state[4] ^= (~state[3] | state[2]) + and r4, r5, r11 // state[0] & state[6] + eor r10, r10, r4 // state[5] ^= (state[6] & state[0]) + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_1 + eor r6, r6, r3 // add rtk_1 + eor r7, r7, r4 // add rtk_1 + eor r8, r8, r14 // add rtk_1 + ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_1 + eor r10, r10, r3 // add rtk_1 + eor r11, r11, r4 // add rtk_1 + eor r12, r12, r14 // add rtk_1 + movw r2, #0x3030 + movt r2, #0x3030 // r2 <- 0x30303030 + and r4, r2, r5, ror #30 // --- mixcolumns + eor r5, r5, r4, ror #24 + and r4, r2, r5, ror #18 + eor r5, r5, r4, ror #2 + and r4, r2, r5, ror #6 + eor r5, r5, r4, ror #4 + and r4, r2, r6, ror #30 + eor r6, r6, r4, ror #24 + and r4, r2, r6, ror #18 + eor r6, r6, r4, ror #2 + and r4, r2, r6, ror #6 + eor r6, r6, r4, ror #4 + and r4, r2, r7, ror #30 + eor r7, r7, r4, ror #24 + and r4, r2, r7, ror #18 + eor r7, r7, r4, ror #2 + and r4, r2, r7, ror #6 + eor r7, r7, r4, ror #4 + and r4, r2, r8, ror #30 + eor r8, r8, r4, ror #24 + and r4, r2, r8, ror #18 + eor r8, r8, r4, ror #2 + and r4, r2, r8, ror #6 + eor r8, r8, r4, ror #4 + and r4, r2, r9, ror #30 + eor r9, r9, r4, ror #24 + and r4, r2, r9, ror #18 + eor r9, r9, r4, ror #2 + and r4, r2, r9, ror #6 + eor r9, r9, r4, ror #4 + and r4, r2, r10, ror #30 + eor r10, r10, r4, ror #24 + and r4, r2, r10, ror #18 + eor r10, r10, r4, ror #2 + and r4, r2, r10, ror #6 + eor r10, r10, r4, ror #4 + and r4, r2, r11, ror #30 + eor r11, r11, r4, ror #24 + and r4, r2, r11, ror #18 + eor r11, r11, r4, ror #2 + and r4, r2, r11, ror #6 + eor r11, r11, r4, ror #4 + and r4, r2, r12, ror #30 + eor r12, r12, r4, ror #24 + and r4, r2, r12, ror #18 + eor r12, r12, r4, ror #2 + and r4, r2, r12, ror #6 + eor r12, r12, r4, ror #4 // mixcolumns --- + orr r4, r7, r8 // state[2] | state[3] + eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) + orr r4, r6, r11 // state[1] | state[6] + eor r10, r10, r4 // state[5] ^= (state[6] | state[1]) + orr r4, r5, r6 // state[0] | state[1] + eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) + and r4, r9, r10 // state[4] & state[5] + eor r12, r12, r4 // state[7] ^= (state[4] & state[5]) + orn r4, r11, r10 // ~state[5] | state[6] + eor r5, r5, r4 // state[0] ^= (~state[5] | state[6]) + orn r4, r12, r8 // state[7] | ~state[3] + eor r7, r7, r4 // state[2] ^= (state[7] | ~state[3]) + orn r4, r12, r9 // state[7] | ~state[4] + eor r11, r11, r4 // state[6] ^= (~state[4] | state[7]) + and r4, r5, r7 // state[0] & state[2] + eor r6, r6, r4 // state[1] ^= (state[0] & state[2]) + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_1 + eor r6, r6, r3 // add rtk_1 + eor r7, r7, r4 // add rtk_1 + eor r8, r8, r14 // add rtk_1 + ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_1 + eor r10, r10, r3 // add rtk_1 + eor r11, r11, r4 // add rtk_1 + eor r12, r12, r14 // add rtk_1 + movw r2, #0x3030 + movt r2, #0x3030 //r2 <- 0x30303030 + and r4, r2, r5, ror #16 // --- mixcolumns + eor r5, r5, r4, ror #30 + and r4, r2, r5, ror #28 + eor r5, r5, r4 + and r4, r2, r5, ror #16 + eor r5, r5, r4, ror #2 + and r4, r2, r6, ror #16 + eor r6, r6, r4, ror #30 + and r4, r2, r6, ror #28 + eor r6, r6, r4 + and r4, r2, r6, ror #16 + eor r6, r6, r4, ror #2 + and r4, r2, r7, ror #16 + eor r7, r7, r4, ror #30 + and r4, r2, r7, ror #28 + eor r7, r7, r4 + and r4, r2, r7, ror #16 + eor r7, r7, r4, ror #2 + and r4, r2, r8, ror #16 + eor r8, r8, r4, ror #30 + and r4, r2, r8, ror #28 + eor r8, r8, r4 + and r4, r2, r8, ror #16 + eor r8, r8, r4, ror #2 + and r4, r2, r9, ror #16 + eor r9, r9, r4, ror #30 + and r4, r2, r9, ror #28 + eor r9, r9, r4 + and r4, r2, r9, ror #16 + eor r9, r9, r4, ror #2 + and r4, r2, r10, ror #16 + eor r10, r10, r4, ror #30 + and r4, r2, r10, ror #28 + eor r10, r10, r4 + and r4, r2, r10, ror #16 + eor r10, r10, r4, ror #2 + and r4, r2, r11, ror #16 + eor r11, r11, r4, ror #30 + and r4, r2, r11, ror #28 + eor r11, r11, r4 + and r4, r2, r11, ror #16 + eor r11, r11, r4, ror #2 + and r4, r2, r12, ror #16 + eor r12, r12, r4, ror #30 + and r4, r2, r12, ror #28 + eor r12, r12, r4 + and r4, r2, r12, ror #16 + eor r12, r12, r4, ror #2 // mixcolumns --- + orr r4, r12, r9 // state[7] | state[4] + eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) + orr r4, r5, r8 // state[0] | state[3] + eor r6, r6, r4 // state[1] ^= (state[0] | state[3]) + orr r4, r7, r8 // state[2] | state[3] + eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) + and r4, r6, r11 // state[1] & state[6] + eor r10, r10, r4 // state[5] ^= (state[6] & state[1]) + orn r4, r5, r6 // ~state[1] | state[0] + eor r7, r7, r4 // state[2] ^= (~state[1] | state[0]) + orn r4, r10, r9 // state[5] | ~state[4] + eor r12, r12, r4 // state[7] ^= (state[5] | ~state[4]) + orn r4, r10, r11 // ~state[6] | state[5] + eor r5, r5, r4 // state[0] ^= (~state[6] | state[5]) + and r4, r7, r12 // state[2] & state[7] + eor r8, r8, r4 // state[3] ^= (state[2] & state[7]) + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_1 + eor r6, r6, r3 // add rtk_1 + eor r7, r7, r4 // add rtk_1 + eor r8, r8, r14 // add rtk_1 + ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_1 + eor r10, r10, r3 // add rtk_1 + eor r11, r11, r4 // add rtk_1 + eor r12, r12, r14 // add rtk_1 + movw r2, #0x3030 + movt r2, #0x3030 // r2 <- 0x30303030 + and r4, r2, r5, ror #10 // --- mixcolumns + eor r5, r5, r4, ror #4 + and r4, r2, r5, ror #6 + eor r5, r5, r4, ror #6 + and r4, r2, r5, ror #26 + eor r5, r5, r4 + and r4, r2, r6, ror #10 + eor r6, r6, r4, ror #4 + and r4, r2, r6, ror #6 + eor r6, r6, r4, ror #6 + and r4, r2, r6, ror #26 + eor r6, r6, r4 + and r4, r2, r7, ror #10 + eor r7, r7, r4, ror #4 + and r4, r2, r7, ror #6 + eor r7, r7, r4, ror #6 + and r4, r2, r7, ror #26 + eor r7, r7, r4 + and r4, r2, r8, ror #10 + eor r8, r8, r4, ror #4 + and r4, r2, r8, ror #6 + eor r8, r8, r4, ror #6 + and r4, r2, r8, ror #26 + eor r8, r8, r4 + and r4, r2, r9, ror #10 + eor r9, r9, r4, ror #4 + and r4, r2, r9, ror #6 + eor r9, r9, r4, ror #6 + and r4, r2, r9, ror #26 + eor r9, r9, r4 + and r4, r2, r10, ror #10 + eor r10, r10, r4, ror #4 + and r4, r2, r10, ror #6 + eor r10, r10, r4, ror #6 + and r4, r2, r10, ror #26 + eor r10, r10, r4 + and r4, r2, r11, ror #10 + eor r11, r11, r4, ror #4 + and r4, r2, r11, ror #6 + eor r11, r11, r4, ror #6 + and r4, r2, r11, ror #26 + eor r11, r11, r4 + and r4, r2, r12, ror #10 + eor r12, r12, r4, ror #4 + and r4, r2, r12, ror #6 + eor r12, r12, r4, ror #6 + and r4, r2, r12, ror #26 + eor r12, r12, r4 // mixcolumns --- + orr r4, r10, r11 // state[5] | state[6] + eor r5, r5, r4 // state[0] ^= (state[5] | state[6]) + orr r4, r7, r9 // state[2] | state[4] + eor r8, r8, r4 // state[3] ^= (state[2] | state[4]) + orr r4, r9, r12 // state[7] | state[4] + eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) + and r4, r5, r8 // state[0] & state[3] + eor r6, r6, r4 // state[1] ^= (state[0] & state[3]) + orn r4, r7, r8 // ~state[3] | state[2] + eor r12, r12, r4 // state[7] ^= (~state[3] | state[2]) + orn r4, r6, r11 // state[1] | ~state[6] + eor r10, r10, r4 // state[5] ^= (state[1] | ~state[6]) + orn r4, r6, r5 // ~state[0] | state[1] + eor r7, r7, r4 // state[2] ^= (~state[0] | state[1]) + and r4, r12, r10 // state[7] & state[5] + eor r9, r9, r4 // state[4] ^= (state[7] & state[5]) + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldmia.w r1!, {r2-r4,r14} // load rtk_2_3 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldmia.w r0!, {r2-r4,r14} // load rtk_1 in r0,r2,r3,r4 + eor r5, r5, r2 // add rtk_1 + eor r6, r6, r3 // add rtk_1 + eor r7, r7, r4 // add rtk_1 + eor r8, r8, r14 // add rtk_1 + ldmia.w r0!, {r2-r4, r14} // load rtk_1 in r0,r2,r3,r4 + eor r9, r9, r2 // add rtk_1 + eor r10, r10, r3 // add rtk_1 + eor r11, r11, r4 // add rtk_1 + eor r12, r12, r14 // add rtk_1 + movw r2, #0x3030 + movt r2, #0x3030 // r2 <- 0x30303030 + and r4, r2, r5, ror #4 // --- mixcolumns + eor r5, r5, r4, ror #26 + and r4, r2, r5 + eor r5, r5, r4, ror #4 + and r4, r2, r5, ror #4 + eor r5, r5, r4, ror #22 + and r4, r2, r6, ror #4 + eor r6, r6, r4, ror #26 + and r4, r2, r6 + eor r6, r6, r4, ror #4 + and r4, r2, r6, ror #4 + eor r6, r6, r4, ror #22 + and r4, r2, r7, ror #4 + eor r7, r7, r4, ror #26 + and r4, r2, r7 + eor r7, r7, r4, ror #4 + and r4, r2, r7, ror #4 + eor r7, r7, r4, ror #22 + and r4, r2, r8, ror #4 + eor r8, r8, r4, ror #26 + and r4, r2, r8 + eor r8, r8, r4, ror #4 + and r4, r2, r8, ror #4 + eor r8, r8, r4, ror #22 + and r4, r2, r9, ror #4 + eor r9, r9, r4, ror #26 + and r4, r2, r9 + eor r9, r9, r4, ror #4 + and r4, r2, r9, ror #4 + eor r9, r9, r4, ror #22 + and r4, r2, r10, ror #4 + eor r10, r10, r4, ror #26 + and r4, r2, r10 + eor r10, r10, r4, ror #4 + and r4, r2, r10, ror #4 + eor r10, r10, r4, ror #22 + and r4, r2, r11, ror #4 + eor r11, r11, r4, ror #26 + and r4, r2, r11 + eor r11, r11, r4, ror #4 + and r4, r2, r11, ror #4 + eor r11, r11, r4, ror #22 + and r4, r2, r12, ror #4 + eor r12, r12, r4, ror #26 + and r4, r2, r12 + eor r12, r12, r4, ror #4 + and r4, r2, r12, ror #4 + eor r12, r12, r4, ror #22 // mixcolumns --- + // renaming slices for the sbox calculations + // can be avoided with an octuple_round routine=>increase of the code size + ldr.w r14, [sp] // restore link register + eor r5, r5, r6 // --- swap state[0] with state[1] + eor r6, r6, r5 + eor r5, r5, r6 // swap state[0] with state[1] --- + eor r7, r7, r8 // --- swap state[2] with state[3] + eor r8, r8, r7 + eor r7, r7, r8 // swap state[2] with state[3] --- + eor r9, r9, r12 // --- swap state[4] with state[7] + eor r12, r12, r9 + eor r9, r9, r12 // swap state[4] with state[7] --- + eor r11, r11, r10 // --- swap state[6] with state[5] + eor r10, r10, r11 + eor r11, r11, r10 // swap state[6] with state[5] --- + bx lr + +/****************************************************************************** +* Inverse quadruple round of fixsliced SKINNY-128 tweakable block cipher. +* The 2 blocks are stored in r5-r12 (fixsliced representation). +******************************************************************************/ +.align 2 +inv_quadruple_round: + str.w r14, [sp] // store r14 on the stack + eor r5, r5, r6 // --- swap state[0] with state[1] + eor r6, r6, r5 + eor r5, r5, r6 // swap state[0] with state[1] --- + eor r7, r7, r8 // --- swap state[2] with state[3] + eor r8, r8, r7 + eor r7, r7, r8 // swap state[2] with state[3] --- + eor r9, r9, r12 // --- swap state[4] with state[7] + eor r12, r12, r9 + eor r9, r9, r12 // swap state[4] with state[7] --- + eor r11, r11, r10 // --- swap state[6] with state[5] + eor r10, r10, r11 + eor r11, r11, r10 // swap state[6] with state[5] --- + movw r2, #0x3030 + movt r2, #0x3030 // mask for ininv_mixcolumns + and r4, r2, r5, ror #4 // --- inv_mixcolumns_3 + eor r5, r5, r4, ror #22 + and r4, r2, r5 + eor r5, r5, r4, ror #4 + and r4, r2, r5, ror #4 + eor r5, r5, r4, ror #26 + and r4, r2, r6, ror #4 + eor r6, r6, r4, ror #22 + and r4, r2, r6 + eor r6, r6, r4, ror #4 + and r4, r2, r6, ror #4 + eor r6, r6, r4, ror #26 + and r4, r2, r7, ror #4 + eor r7, r7, r4, ror #22 + and r4, r2, r7 + eor r7, r7, r4, ror #4 + and r4, r2, r7, ror #4 + eor r7, r7, r4, ror #26 + and r4, r2, r8, ror #4 + eor r8, r8, r4, ror #22 + and r4, r2, r8 + eor r8, r8, r4, ror #4 + and r4, r2, r8, ror #4 + eor r8, r8, r4, ror #26 + and r4, r2, r9, ror #4 + eor r9, r9, r4, ror #22 + and r4, r2, r9 + eor r9, r9, r4, ror #4 + and r4, r2, r9, ror #4 + eor r9, r9, r4, ror #26 + and r4, r2, r10, ror #4 + eor r10, r10, r4, ror #22 + and r4, r2, r10 + eor r10, r10, r4, ror #4 + and r4, r2, r10, ror #4 + eor r10, r10, r4, ror #26 + and r4, r2, r11, ror #4 + eor r11, r11, r4, ror #22 + and r4, r2, r11 + eor r11, r11, r4, ror #4 + and r4, r2, r11, ror #4 + eor r11, r11, r4, ror #26 + and r4, r2, r12, ror #4 + eor r12, r12, r4, ror #22 + and r4, r2, r12 + eor r12, r12, r4, ror #4 + and r4, r2, r12, ror #4 + eor r12, r12, r4, ror #26 // inv_mixcolumns_3 --- + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r11, r11, r4 // add rtk1 + eor r12, r12, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r9, r9, r2 // add rtk1 + eor r10, r10, r3 // add rtk1 + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r7, r7, r4 // add rtk1 + eor r8, r8, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r5, r5, r2 // add rtk1 + eor r6, r6, r3 // add rtk1 + and r4, r12, r10 // state[7] & state[5] + eor r9, r9, r4 // state[4] ^= (state[7] & state[5]) + orn r4, r6, r5 // ~state[0] | state[1] + eor r7, r7, r4 // state[2] ^= (~state[0] | state[1]) + orn r4, r6, r11 // state[1] | ~state[6] + eor r10, r10, r4 // state[5] ^= (state[1] | ~state[6]) + orn r4, r7, r8 // ~state[3] | state[2] + eor r12, r12, r4 // state[7] ^= (~state[3] | state[2]) + and r4, r5, r8 // state[0] & state[3] + eor r6, r6, r4 // state[1] ^= (state[0] & state[3]) + orr r4, r9, r12 // state[7] | state[4] + eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) + orr r4, r7, r9 // state[2] | state[4] + eor r8, r8, r4 // state[3] ^= (state[2] | state[4]) + orr r4, r10, r11 // state[5] | state[6] + eor r5, r5, r4 // state[0] ^= (state[5] | state[6]) + movw r2, #0x3030 + movt r2, #0x3030 // mask for inv_mixcolumns + and r4, r2, r5, ror #26 // --- inv_mixcolumns_2 + eor r5, r5, r4 + and r4, r2, r5, ror #6 + eor r5, r5, r4, ror #6 + and r4, r2, r5, ror #10 + eor r5, r5, r4, ror #4 + and r4, r2, r6, ror #26 + eor r6, r6, r4 + and r4, r2, r6, ror #6 + eor r6, r6, r4, ror #6 + and r4, r2, r6, ror #10 + eor r6, r6, r4, ror #4 + and r4, r2, r7, ror #26 + eor r7, r7, r4 + and r4, r2, r7, ror #6 + eor r7, r7, r4, ror #6 + and r4, r2, r7, ror #10 + eor r7, r7, r4, ror #4 + and r4, r2, r8, ror #26 + eor r8, r8, r4 + and r4, r2, r8, ror #6 + eor r8, r8, r4, ror #6 + and r4, r2, r8, ror #10 + eor r8, r8, r4, ror #4 + and r4, r2, r9, ror #26 + eor r9, r9, r4 + and r4, r2, r9, ror #6 + eor r9, r9, r4, ror #6 + and r4, r2, r9, ror #10 + eor r9, r9, r4, ror #4 + and r4, r2, r10, ror #26 + eor r10, r10, r4 + and r4, r2, r10, ror #6 + eor r10, r10, r4, ror #6 + and r4, r2, r10, ror #10 + eor r10, r10, r4, ror #4 + and r4, r2, r11, ror #26 + eor r11, r11, r4 + and r4, r2, r11, ror #6 + eor r11, r11, r4, ror #6 + and r4, r2, r11, ror #10 + eor r11, r11, r4, ror #4 + and r4, r2, r12, ror #26 + eor r12, r12, r4 + and r4, r2, r12, ror #6 + eor r12, r12, r4, ror #6 + and r4, r2, r12, ror #10 + eor r12, r12, r4, ror #4 // inv_mixcolumns_2 --- + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r11, r11, r4 // add rtk1 + eor r12, r12, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r9, r9, r2 // add rtk1 + eor r10, r10, r3 // add rtk1 + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r7, r7, r4 // add rtk1 + eor r8, r8, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r5, r5, r2 // add rtk1 + eor r6, r6, r3 // add rtk1 + and r4, r7, r12 // state[2] & state[7] + eor r8, r8, r4 // state[3] ^= (state[2] & state[7]) + orn r4, r10, r11 // ~state[6] | state[5] + eor r5, r5, r4 // state[0] ^= (~state[6] | state[5]) + orn r4, r10, r9 // state[5] | ~state[4] + eor r12, r12, r4 // state[7] ^= (state[5] | ~state[4]) + orn r4, r5, r6 // ~state[1] | state[0] + eor r7, r7, r4 // state[2] ^= (~state[1] | state[0]) + and r4, r6, r11 // state[1] & state[6] + eor r10, r10, r4 // state[5] ^= (state[6] & state[1]) + orr r4, r7, r8 // state[2] | state[3] + eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) + orr r4, r5, r8 // state[0] | state[3] + eor r6, r6, r4 // state[1] ^= (state[0] | state[3]) + orr r4, r12, r9 // state[7] | state[4] + eor r11, r11, r4 // state[6] ^= (state[7] | state[4]) + movw r2, #0x3030 + movt r2, #0x3030 // mask for inv_mixcolumns + and r4, r2, r5, ror #16 // --- inv_mixcolumns_1 + eor r5, r5, r4, ror #2 + and r4, r2, r5, ror #28 + eor r5, r5, r4 + and r4, r2, r5, ror #16 + eor r5, r5, r4, ror #30 + and r4, r2, r6, ror #16 + eor r6, r6, r4, ror #2 + and r4, r2, r6, ror #28 + eor r6, r6, r4 + and r4, r2, r6, ror #16 + eor r6, r6, r4, ror #30 + and r4, r2, r7, ror #16 + eor r7, r7, r4, ror #2 + and r4, r2, r7, ror #28 + eor r7, r7, r4 + and r4, r2, r7, ror #16 + eor r7, r7, r4, ror #30 + and r4, r2, r8, ror #16 + eor r8, r8, r4, ror #2 + and r4, r2, r8, ror #28 + eor r8, r8, r4 + and r4, r2, r8, ror #16 + eor r8, r8, r4, ror #30 + and r4, r2, r9, ror #16 + eor r9, r9, r4, ror #2 + and r4, r2, r9, ror #28 + eor r9, r9, r4 + and r4, r2, r9, ror #16 + eor r9, r9, r4, ror #30 + and r4, r2, r10, ror #16 + eor r10, r10, r4, ror #2 + and r4, r2, r10, ror #28 + eor r10, r10, r4 + and r4, r2, r10, ror #16 + eor r10, r10, r4, ror #30 + and r4, r2, r11, ror #16 + eor r11, r11, r4, ror #2 + and r4, r2, r11, ror #28 + eor r11, r11, r4 + and r4, r2, r11, ror #16 + eor r11, r11, r4, ror #30 + and r4, r2, r12, ror #16 + eor r12, r12, r4, ror #2 + and r4, r2, r12, ror #28 + eor r12, r12, r4 + and r4, r2, r12, ror #16 + eor r12, r12, r4, ror #30 // inv_mixcolumns_1 --- + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r11, r11, r4 // add rtk1 + eor r12, r12, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r9, r9, r2 // add rtk1 + eor r10, r10, r3 // add rtk1 + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r7, r7, r4 // add rtk1 + eor r8, r8, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r5, r5, r2 // add rtk1 + eor r6, r6, r3 // add rtk1 + and r4, r5, r7 // state[0] & state[2] + eor r6, r6, r4 // state[1] ^= (state[0] & state[2]) + orn r4, r12, r9 // state[7] | ~state[4] + eor r11, r11, r4 // state[6] ^= (~state[4] | state[7]) + orn r4, r12, r8 // state[7] | ~state[3] + eor r7, r7, r4 // state[2] ^= (state[7] | ~state[3]) + orn r4, r11, r10 // ~state[5] | state[6] + eor r5, r5, r4 // state[0] ^= (~state[5] | state[6]) + and r4, r9, r10 // state[4] & state[5] + eor r12, r12, r4 // state[7] ^= (state[4] & state[5]) + orr r4, r5, r6 // state[0] | state[1] + eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) + orr r4, r6, r11 // state[1] | state[6] + eor r10, r10, r4 // state[5] ^= (state[6] | state[1]) + orr r4, r7, r8 // state[2] | state[3] + eor r9, r9, r4 // state[4] ^= (state[2] | state[3]) + movw r2, #0x3030 + movt r2, #0x3030 // mask for inv_mixcolumns + and r4, r2, r5, ror #6 // --- inv_mixcolumns_0 + eor r5, r5, r4, ror #4 + and r4, r2, r5, ror #18 + eor r5, r5, r4, ror #2 + and r4, r2, r5, ror #30 + eor r5, r5, r4, ror #24 + and r4, r2, r6, ror #6 + eor r6, r6, r4, ror #4 + and r4, r2, r6, ror #18 + eor r6, r6, r4, ror #2 + and r4, r2, r6, ror #30 + eor r6, r6, r4, ror #24 + and r4, r2, r7, ror #6 + eor r7, r7, r4, ror #4 + and r4, r2, r7, ror #18 + eor r7, r7, r4, ror #2 + and r4, r2, r7, ror #30 + eor r7, r7, r4, ror #24 + and r4, r2, r8, ror #6 + eor r8, r8, r4, ror #4 + and r4, r2, r8, ror #18 + eor r8, r8, r4, ror #2 + and r4, r2, r8, ror #30 + eor r8, r8, r4, ror #24 + and r4, r2, r9, ror #6 + eor r9, r9, r4, ror #4 + and r4, r2, r9, ror #18 + eor r9, r9, r4, ror #2 + and r4, r2, r9, ror #30 + eor r9, r9, r4, ror #24 + and r4, r2, r10, ror #6 + eor r10, r10, r4, ror #4 + and r4, r2, r10, ror #18 + eor r10, r10, r4, ror #2 + and r4, r2, r10, ror #30 + eor r10, r10, r4, ror #24 + and r4, r2, r11, ror #6 + eor r11, r11, r4, ror #4 + and r4, r2, r11, ror #18 + eor r11, r11, r4, ror #2 + and r4, r2, r11, ror #30 + eor r11, r11, r4, ror #24 + and r4, r2, r12, ror #6 + eor r12, r12, r4, ror #4 + and r4, r2, r12, ror #18 + eor r12, r12, r4, ror #2 + and r4, r2, r12, ror #30 + eor r12, r12, r4, ror #24 + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r11, r11, r4 // add rtk_2_3 + rconst + eor r12, r12, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r9, r9, r2 // add rtk_2_3 + rconst + eor r10, r10, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r1], #-8 // load rtk_2_3 + eor r7, r7, r4 // add rtk_2_3 + rconst + eor r8, r8, r14 // add rtk_2_3 + rconst + ldrd r2, r3, [r1], #-8 // load rtk_2_3 + eor r5, r5, r2 // add rtk_2_3 + rconst + eor r6, r6, r3 // add rtk_2_3 + rconst + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r11, r11, r4 // add rtk1 + eor r12, r12, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r9, r9, r2 // add rtk1 + eor r10, r10, r3 // add rtk1 + ldrd r4, r14, [r0], #-8 // load rtk1 + eor r7, r7, r4 // add rtk1 + eor r8, r8, r14 // add rtk1 + ldrd r2, r3, [r0], #-8 // load rtk1 + eor r5, r5, r2 // add rtk1 + eor r6, r6, r3 // add rtk1 + ldr.w r14, [sp] // restore link register + and r4, r5, r11 // state[0] & state[6] + eor r10, r10, r4 // state[5] ^= (state[6] & state[0]) + orn r4, r7, r8 // ~state[3] | state[2] + eor r9, r9, r4 // state[4] ^= (~state[3] | state[2]) + orn r4, r7, r6 // state[2] | ~state[1] + eor r5, r5, r4 // state[0] ^= (state[2] | ~state[1]) + orn r4, r9, r12 // ~state[7] | state[4] + eor r11, r11, r4 // state[6] ^= (~state[7] | state[4]) + and r4, r8, r12 // state[3] & state[7] + eor r7, r7, r4 // state[2] ^= (state[3] & state[7]) + orr r4, r11, r10 // state[6] | state[5] + eor r6, r6, r4 // state[1] ^= (state[6] | state[5]) + orr r4, r9, r10 // state[4] | state[5] + eor r12, r12, r4 // state[7] ^= (state[4] | state[5]) + orr r4, r5, r6 // state[0] | state[1] + eor r8, r8, r4 // state[3] ^= (state[0] | state[1]) + bx lr + +/****************************************************************************** +* Compute the SKINNY block cipher on a single block in a fixsliced manner. +******************************************************************************/ +@ void skinny128_384(u8* ctext, u8* ctext_bis, const u8* ptext, +@ const u8* ptext_bis, const u32* rtk_1, const u32* rtk_2_3) +.global skinny128_384 +.type skinny128_384,%function +.align 2 +skinny128_384: + push {r0-r12, r14} + sub.w sp, #4 // to store r14 during subroutines + ldm r2, {r5,r7,r9,r11} // load the 2nd block in r6,r8,r10,r12 + ldm r3, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 + movw r2, #0x5555 + movt r2, #0x5555 //r2 <- 0x55555555 + movw r3, #0x3030 + movt r3, #0x3030 //r3 <- 0x30303030 + bl packing + ldrd r0, r1, [sp, #60] // get rtk addr (1st stack argument) + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #512 + bl quadruple_round + bl quadruple_round + bl quadruple_round + bl quadruple_round + sub.w r0, #512 + bl quadruple_round + bl quadruple_round + bl unpacking + ldrd r0, r1, [sp, #4] + add.w sp, #12 + stm r0, {r5, r7, r9, r11} // store the 1st enc block in [r0] + stm r1, {r6, r8, r10, r12} // store the 2nd enc block in [r1] + pop {r2-r12, r14} + bx lr + +/****************************************************************************** +* Compute the SKINNY block cipher on a single block in a fixsliced manner. +******************************************************************************/ +@ void skinny128_384_inv(u8* ptext, u8* ptext_bis, const u8* ctext, +@ const u8* ctext_bis, const u32* rtk_1, const u32* rtk_2_3) +.global skinny128_384_inv +.type skinny128_384_inv,%function +.align 2 +skinny128_384_inv: + push {r0-r12, r14} + sub.w sp, #4 // to store r14 during subroutines + ldm r2, {r5,r7,r9,r11} // load the 2nd block in r6,r8,r10,r12 + ldm r3, {r6,r8,r10,r12} // load the 2nd block in r6,r8,r10,r12 + movw r2, #0x5555 + movt r2, #0x5555 //r2 <- 0x55555555 + movw r3, #0x3030 + movt r3, #0x3030 //r3 <- 0x30303030 + bl packing + ldrd r0, r1, [sp, #60] // get rtk addr (1st stack argument) + add.w r0, #248 // points to the last rtk1 + add.w r1, #1272 // points to the last rtk2_3 + bl inv_quadruple_round + bl inv_quadruple_round + add.w r0, #512 + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + add.w r0, #512 + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + bl inv_quadruple_round + bl unpacking + ldrd r0, r1, [sp, #4] + add.w sp, #12 + stm r0, {r5, r7, r9, r11} // store the 1st enc block in [r0] + stm r1, {r6, r8, r10, r12} // store the 2nd enc block in [r1] + pop {r2-r12,r14} + bx lr diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinnyaead.h new file mode 100644 index 0000000..e41c204 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/armcortexm_2/skinnyaead.h @@ -0,0 +1,40 @@ +#ifndef SKINNYAEADM1_H_ +#define SKINNYAEADM1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef unsigned long long u64; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) + +#define UPDATE_LFSR(lfsr) ({ \ + feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ + (lfsr) = ((lfsr) << 1) ^ feedback; \ +}) + +#define LE_STR_64(ptr, x) ({ \ + (ptr)[0] = (u8)(x); \ + (ptr)[1] = (u8)((x) >> 8); \ + (ptr)[2] = (u8)((x) >> 16); \ + (ptr)[3] = (u8)((x) >> 24); \ + (ptr)[4] = (u8)((x) >> 32); \ + (ptr)[5] = (u8)((x) >> 40); \ + (ptr)[6] = (u8)((x) >> 48); \ + (ptr)[7] = (u8)((x) >> 56); \ +}) + +//x ^= y with x, y 128-bit blocks +#define XOR_BLOCK(x,y) ({ \ + ((u32*)(x))[0] ^= ((u32*)(y))[0]; \ + ((u32*)(x))[1] ^= ((u32*)(y))[1]; \ + ((u32*)(x))[2] ^= ((u32*)(y))[2]; \ + ((u32*)(x))[3] ^= ((u32*)(y))[3]; \ +}) + +#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/api.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/crypto_aead.h new file mode 100644 index 0000000..e2ca9b0 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/crypto_aead.h @@ -0,0 +1,18 @@ + +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 +); + +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 +); \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/encrypt.c new file mode 100644 index 0000000..4a1b26e --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/encrypt.c @@ -0,0 +1,197 @@ +/****************************************************************************** +* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). +* +* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include "skinny128.h" +#include "skinnyaead.h" +#include +#include + +/****************************************************************************** +* x ^= y where x, y are 128-bit blocks (16 bytes array). +******************************************************************************/ +static void xor_block(u8 * x, const u8* y) { + for(int i = 0; i < BLOCKBYTES; i++) + x[i] ^= y[i]; +} + +/****************************************************************************** +* Encryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u64 i,lfsr = 1; + u8 feedback; + u32 rtk1[4*16]; + u32 rtk2_3[4*SKINNY128_384_ROUNDS]; + u8 tmp[2*BLOCKBYTES], auth[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + precompute_rtk2_3(rtk2_3, npub, k); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(c + mlen, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (mlen >= BLOCKBYTES) { // while entire blocks to process + LE_STR_64(tmp, lfsr); + precompute_rtk1(rtk1, tmp); // precompute RTK1 given the LFSR + skinny128_384_plus_encrypt(c, m, rtk1, rtk2_3); + xor_block(c + mlen, m); // sum for tag computation + mlen -= BLOCKBYTES; + c += BLOCKBYTES; + m += BLOCKBYTES; + UPDATE_LFSR(lfsr); // update lfsr for next block + } + SET_DOMAIN(tmp, 0x04); // domain for tag computation + if (mlen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); // lfsr for last block + SET_DOMAIN(tmp, 0x01); // domain for padding + for(i = 0; i < mlen; i++) + c[mlen + i] ^= m[i]; // sum for tag computation + c[mlen + i] ^= 0x80; // padding + precompute_rtk1(rtk1, tmp); + skinny128_384_plus_encrypt(auth, auth, rtk1, rtk2_3); + for(i = 0; i < mlen; i++) + c[i] = auth[i] ^ m[i]; // encrypted padded block + c += mlen; + SET_DOMAIN(tmp, 0x05); // domain for tag computation + UPDATE_LFSR(lfsr); + } + LE_STR_64(tmp, lfsr); // lfsr for tag computation + precompute_rtk1(rtk1, tmp); + skinny128_384_plus_encrypt(c, c, rtk1, rtk2_3); // compute the tag + // ----------------- Process the plaintext ----------------- + + // ----------------- Process the associated data ----------------- + lfsr = 1; + SET_DOMAIN(tmp, 0x02); + memset(auth, 0x00, BLOCKBYTES); + while (adlen >= BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + precompute_rtk1(rtk1, tmp); + skinny128_384_plus_encrypt(tmp + BLOCKBYTES, ad, rtk1, rtk2_3); + xor_block(auth, tmp + BLOCKBYTES); + adlen -= BLOCKBYTES; + ad += BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + if (adlen > 0) { + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x03); // domain for padding ad + precompute_rtk1(rtk1, tmp); + memset(tmp, 0x00, BLOCKBYTES); // padding + memcpy(tmp, ad, adlen); // padding + tmp[adlen] ^= 0x80; // padding + skinny128_384_plus_encrypt(tmp, tmp, rtk1, rtk2_3); + xor_block(auth, tmp); + } + xor_block(c, auth); // XOR for tag computation + // ----------------- Process the associated data ----------------- + return 0; +} + +/****************************************************************************** +* Encryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u64 i,lfsr = 1; + u8 feedback; + u32 rtk1[4*16]; + u32 rtk2_3[4*SKINNY128_384_ROUNDS]; + u8 tmp[2*BLOCKBYTES], auth[BLOCKBYTES], sum[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + clen -= TAGBYTES; + *mlen = clen; + precompute_rtk2_3(rtk2_3, npub, k); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(sum, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (clen >= BLOCKBYTES) { // while entire blocks to process + LE_STR_64(tmp, lfsr); + precompute_rtk1(rtk1, tmp); // precompute RTK1 given the LFSR + skinny128_384_plus_decrypt(m, c, rtk1, rtk2_3); + xor_block(sum, m); // sum for tag computation + clen -= BLOCKBYTES; + c += BLOCKBYTES; + m += BLOCKBYTES; + UPDATE_LFSR(lfsr); // update LFSR for the next block + } + SET_DOMAIN(tmp, 0x04); // domain for tag computation + if (clen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); // lfsr for last block + SET_DOMAIN(tmp, 0x01); // domain for padding + precompute_rtk1(rtk1, tmp); + skinny128_384_plus_encrypt(auth, auth, rtk1, rtk2_3); + for(i = 0; i < clen; i++) { + m[i] = auth[i] ^ c[i]; // encrypted padded block + sum[i] ^= m[i]; // sum for tag computation + } + sum[i] ^= 0x80; // padding + c += clen; + SET_DOMAIN(tmp, 0x05); // domain for tag computation + UPDATE_LFSR(lfsr); + } + LE_STR_64(tmp, lfsr); // lfsr for tag computation + precompute_rtk1(rtk1, tmp); + skinny128_384_plus_encrypt(sum, sum, rtk1, rtk2_3); // compute the tag + // ----------------- Process the plaintext ----------------- + + // ----------------- Process the associated data ----------------- + lfsr = 1; + SET_DOMAIN(tmp, 0x02); + memset(auth, 0x00, BLOCKBYTES); + while (adlen >= BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + precompute_rtk1(rtk1, tmp); + skinny128_384_plus_encrypt(tmp + BLOCKBYTES, ad, rtk1, rtk2_3); + xor_block(auth, tmp + BLOCKBYTES); + adlen -= BLOCKBYTES; + ad += BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + if (adlen > 0) { + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x03); // domain for padding ad + precompute_rtk1(rtk1, tmp); + memset(tmp, 0x00, BLOCKBYTES); // padding + memcpy(tmp, ad, adlen); // padding + tmp[adlen] ^= 0x80; // padding + skinny128_384_plus_encrypt(tmp, tmp, rtk1, rtk2_3); + xor_block(auth, tmp); + } + xor_block(sum, auth); // XOR for tag computation + feedback = 0; + for(i = 0; i < TAGBYTES; i++) + feedback |= sum[i] ^ c[i]; // constant-time tag verification + return feedback; + // ----------------- Process the associated data ----------------- +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.c new file mode 100644 index 0000000..2082889 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.c @@ -0,0 +1,190 @@ +/****************************************************************************** +* Constant-time implementation of the SKINNY tweakable block ciphers. +* +* This implementation doesn't compute the ShiftRows operation. Some masks and +* shifts are applied during the MixColumns operation so that the proper bits +* are XORed together. Moreover, the row permutation within the MixColumns +* is omitted, as well as the bit permutation at the end of the Sbox. The rows +* are synchronized with the classical after only 4 rounds. Therefore, this +* implementation relies on a "QUADRUPLE_ROUND" routine. +* +* The Sbox computation takes advantage of some symmetry in the 8-bit Sbox to +* turn it into a 4-bit S-box computation. Although the last bit permutation +* within the Sbox is not computed, the bit ordering is synchronized with the +* classical representation after 2 calls. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include +#include "skinny128.h" +#include "tk_schedule.h" + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void mixcolumns_0(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],24) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,30); + tmp = ROR(state[i],16) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,4); + tmp = ROR(state[i],8) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 1 +******************************************************************************/ +void mixcolumns_1(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 2 +******************************************************************************/ +void mixcolumns_2(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],8) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,6); + tmp = ROR(state[i],16) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],24) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,2); + } +} + +/****************************************************************************** +* The MixColumns computation for rounds i such that (i % 4) == 3 +******************************************************************************/ +void mixcolumns_3(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x30303030; + state[i] ^= ROR(tmp,4); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,26); + } +} + +/****************************************************************************** +* The inverse MixColumns operation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void inv_mixcolumns_0(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],8) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,2); + tmp = ROR(state[i],16) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,4); + tmp = ROR(state[i],24) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,30); + } +} + +/****************************************************************************** +* The inverse MixColumns operation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void inv_mixcolumns_1(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,2); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,30); + } +} + +/****************************************************************************** +* The inverse MixColumns operation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void inv_mixcolumns_2(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = ROR(state[i],24) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,2); + tmp = ROR(state[i],16) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],8) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,6); + } +} + +/****************************************************************************** +* The inverse MixColumns operation for rounds i such that (i % 4) == 0 +******************************************************************************/ +void inv_mixcolumns_3(u32* state) { + u32 tmp; + for(int i = 0; i < 4; i++) { + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,26); + tmp = state[i] & 0x30303030; + state[i] ^= ROR(tmp,4); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,30); + } +} + +/****************************************************************************** +* Encryption of a single block without any operation mode using SKINNY-128-384. +* RTK1 and RTK2_3 are given separately to take advantage of the fact that +* TK2 and TK3 remains the same through the entire data encryption/decryption. +******************************************************************************/ +void skinny128_384_plus_encrypt(u8* ctext, const u8* ptext, const u32* rtk1, + const u32* rtk2_3) { + u32 tmp; // used in SWAPMOVE macro + u32 state[4]; // 128-bit state + packing(state, ptext); // from byte to bitsliced representation + QUADRUPLE_ROUND(state, rtk1, rtk2_3); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); + QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); + QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); + QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); + QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); + QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); + QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); + QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); + unpacking(ctext, state); // from bitsliced to byte representation +} + +/****************************************************************************** +* Decryption of a single block without any operation mode using SKINNY-128-384. +* RTK1 and RTK2_3 are given separately to take advantage of the fact that +* TK2 and TK3 remains the same through the entire data encryption/decryption. +******************************************************************************/ +void skinny128_384_plus_decrypt(u8* ctext, const u8* ptext, const u32* rtk1, + const u32* rtk2_3) { + u32 tmp; // used in SWAPMOVE macro + u32 state[4]; // 128-bit state + packing(state, ptext); // from byte to bitsliced representation + INV_QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+144); + INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3+128); + INV_QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+112); + INV_QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+96); + INV_QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+80); + INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3+64); + INV_QUADRUPLE_ROUND(state, rtk1+48, rtk2_3+48); + INV_QUADRUPLE_ROUND(state, rtk1+32, rtk2_3+32); + INV_QUADRUPLE_ROUND(state, rtk1+16, rtk2_3+16); + INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3); + unpacking(ctext, state); // from bitsliced to byte representation +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.h new file mode 100644 index 0000000..28316ec --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinny128.h @@ -0,0 +1,177 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ + +#include "tk_schedule.h" + +void skinny128_384_plus_encrypt(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); +void skinny128_384_plus_decrypt(u8* ctext, const u8* ptext, const u32* rtk1, const u32* rtk2_3); + +#define SKINNY128_384_ROUNDS 40 + +#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[0] ^= (rtk1)[0]; \ + state[1] ^= (rtk1)[1]; \ + state[2] ^= (rtk1)[2]; \ + state[3] ^= (rtk1)[3]; \ + state[0] ^= (rtk2_3)[0]; \ + state[1] ^= (rtk2_3)[1]; \ + state[2] ^= (rtk2_3)[2]; \ + state[3] ^= (rtk2_3)[3]; \ + mixcolumns_0(state); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[0] ^= (rtk1)[4]; \ + state[1] ^= (rtk1)[5]; \ + state[2] ^= (rtk1)[6]; \ + state[3] ^= (rtk1)[7]; \ + state[0] ^= (rtk2_3)[4]; \ + state[1] ^= (rtk2_3)[5]; \ + state[2] ^= (rtk2_3)[6]; \ + state[3] ^= (rtk2_3)[7]; \ + mixcolumns_1(state); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[0] ^= (rtk1)[8]; \ + state[1] ^= (rtk1)[9]; \ + state[2] ^= (rtk1)[10]; \ + state[3] ^= (rtk1)[11]; \ + state[0] ^= (rtk2_3)[8]; \ + state[1] ^= (rtk2_3)[9]; \ + state[2] ^= (rtk2_3)[10]; \ + state[3] ^= (rtk2_3)[11]; \ + mixcolumns_2(state); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[0] ^= (rtk1)[12]; \ + state[1] ^= (rtk1)[13]; \ + state[2] ^= (rtk1)[14]; \ + state[3] ^= (rtk1)[15]; \ + state[0] ^= (rtk2_3)[12]; \ + state[1] ^= (rtk2_3)[13]; \ + state[2] ^= (rtk2_3)[14]; \ + state[3] ^= (rtk2_3)[15]; \ + mixcolumns_3(state); \ +}) + +#define INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ + inv_mixcolumns_3(state); \ + state[0] ^= (rtk1)[12]; \ + state[1] ^= (rtk1)[13]; \ + state[2] ^= (rtk1)[14]; \ + state[3] ^= (rtk1)[15]; \ + state[0] ^= (rtk2_3)[12]; \ + state[1] ^= (rtk2_3)[13]; \ + state[2] ^= (rtk2_3)[14]; \ + state[3] ^= (rtk2_3)[15]; \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + inv_mixcolumns_2(state); \ + state[0] ^= (rtk1)[8]; \ + state[1] ^= (rtk1)[9]; \ + state[2] ^= (rtk1)[10]; \ + state[3] ^= (rtk1)[11]; \ + state[0] ^= (rtk2_3)[8]; \ + state[1] ^= (rtk2_3)[9]; \ + state[2] ^= (rtk2_3)[10]; \ + state[3] ^= (rtk2_3)[11]; \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + inv_mixcolumns_1(state); \ + state[0] ^= (rtk1)[4]; \ + state[1] ^= (rtk1)[5]; \ + state[2] ^= (rtk1)[6]; \ + state[3] ^= (rtk1)[7]; \ + state[0] ^= (rtk2_3)[4]; \ + state[1] ^= (rtk2_3)[5]; \ + state[2] ^= (rtk2_3)[6]; \ + state[3] ^= (rtk2_3)[7]; \ + SWAPMOVE(state[1], state[2], 0x55555555, 0); \ + state[3] ^= (state[0] | state[1]); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + inv_mixcolumns_0(state); \ + state[0] ^= (rtk1)[0]; \ + state[1] ^= (rtk1)[1]; \ + state[2] ^= (rtk1)[2]; \ + state[3] ^= (rtk1)[3]; \ + state[0] ^= (rtk2_3)[0]; \ + state[1] ^= (rtk2_3)[1]; \ + state[2] ^= (rtk2_3)[2]; \ + state[3] ^= (rtk2_3)[3]; \ + SWAPMOVE(state[3], state[0], 0x55555555, 0); \ + state[1] ^= (state[2] | state[3]); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ + SWAPMOVE(state[0], state[3], 0x55555555, 1); \ + SWAPMOVE(state[1], state[0], 0x55555555, 1); \ + state[1] ^= ~(state[2] | state[3]); \ + SWAPMOVE(state[3], state[2], 0x55555555, 1); \ + SWAPMOVE(state[2], state[1], 0x55555555, 1); \ + state[3] ^= ~(state[0] | state[1]); \ +}) + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinnyaead.h new file mode 100644 index 0000000..5500af8 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/skinnyaead.h @@ -0,0 +1,32 @@ +#ifndef SKINNYAEADM1_H_ +#define SKINNYAEADM1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef unsigned long long u64; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) + +#define UPDATE_LFSR(lfsr) ({ \ + feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ + (lfsr) = ((lfsr) << 1) ^ feedback; \ +}) + +#define LE_STR_64(ptr, x) ({ \ + (ptr)[0] = (u8)(x); \ + (ptr)[1] = (u8)((x) >> 8); \ + (ptr)[2] = (u8)((x) >> 16); \ + (ptr)[3] = (u8)((x) >> 24); \ + (ptr)[4] = (u8)((x) >> 32); \ + (ptr)[5] = (u8)((x) >> 40); \ + (ptr)[6] = (u8)((x) >> 48); \ + (ptr)[7] = (u8)((x) >> 56); \ +}) + +#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.c new file mode 100644 index 0000000..1da4277 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.c @@ -0,0 +1,368 @@ +/****************************************************************************** +* Implementation of the SKINNY tweakey schedule to match fixslicing. +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include //for memcmp +#include "tk_schedule.h" +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; + +/****************************************************************************** +* The round constants according to the new representation. +******************************************************************************/ +u32 rconst_32_bs[160] = { + 0x00000004, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000100, 0xfffffeff, 0x44000000, 0xfbffffff, 0x00000000, 0x04000000, + 0x00100000, 0x00100000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, + 0x00400000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffbfffff, + 0x01004000, 0xfefffbff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, + 0x00010410, 0xfffffbef, 0x00000054, 0xffffffaf, 0x00000000, 0x00000040, + 0x00000100, 0x00000100, 0x10000140, 0xfffffeff, 0x44000000, 0xfffffeff, + 0x04000000, 0x04000000, 0x00100000, 0x00100000, 0x04000001, 0xfbffffff, + 0x00140000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x00000000, + 0x01401000, 0xfebfffff, 0x01004400, 0xfffffbff, 0x00000000, 0x00000400, + 0x00000010, 0x00000010, 0x00010010, 0xffffffff, 0x00000004, 0xffffffaf, + 0x00000040, 0x00000040, 0x00000100, 0x00000000, 0x10000140, 0xffffffbf, + 0x40000100, 0xfbfffeff, 0x00000000, 0x04000000, 0x00100000, 0x00000000, + 0x04100001, 0xffefffff, 0x00440000, 0xffefffff, 0x00000000, 0x00400000, + 0x01000000, 0x01000000, 0x00401000, 0xffffffff, 0x00004000, 0xfeffffff, + 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00010400, 0xfffffbff, + 0x00000014, 0xffffffbf, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000100, 0xffffffff, 0x40000000, 0xfbffffff, 0x00000000, 0x04000000, + 0x00100000, 0x00000000, 0x00100001, 0xffefffff, 0x00440000, 0xffafffff, + 0x00000000, 0x00400000, 0x01000000, 0x01000000, 0x01401000, 0xffffffff, + 0x00004000, 0xfeffffff, 0x00000400, 0x00000400, 0x00000010, 0x00000000, + 0x00010400, 0xfffffbff, 0x00000014, 0xffffffaf, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x10000140, 0xfffffeff, 0x44000000, 0xffffffff, + 0x00000000, 0x04000000, 0x00100000, 0x00100000, 0x00000001, 0xffefffff, + 0x00440000, 0xffafffff, 0x00400000, 0x00000000, 0x00000000, 0x01000000, + 0x01401000, 0xffbfffff, 0x01004000, 0xfffffbff, 0x00000400, 0x00000400, + 0x00000010, 0x00000000, 0x00010010, 0xfffffbff +}; + +/****************************************************************************** +* Pack the input into the bitsliced representation +* 24 28 56 60 88 92 120 124 | ... | 0 4 32 36 64 68 96 100 +* 25 29 57 61 89 93 121 125 | ... | 1 5 33 37 65 69 97 101 +* 26 30 58 62 90 94 122 126 | ... | 2 6 34 38 66 70 98 102 +* 27 31 59 63 91 95 123 127 | ... | 3 7 35 39 67 71 99 103 +******************************************************************************/ +void packing(u32* out, const u8* in) { + u32 tmp; + LE_LOAD(out, in); + LE_LOAD(out + 1, in + 8); + LE_LOAD(out + 2, in + 4); + LE_LOAD(out + 3, in + 12); + SWAPMOVE(out[0], out[0], 0x0a0a0a0a, 3); + SWAPMOVE(out[1], out[1], 0x0a0a0a0a, 3); + SWAPMOVE(out[2], out[2], 0x0a0a0a0a, 3); + SWAPMOVE(out[3], out[3], 0x0a0a0a0a, 3); + SWAPMOVE(out[2], out[0], 0x30303030, 2); + SWAPMOVE(out[1], out[0], 0x0c0c0c0c, 4); + SWAPMOVE(out[3], out[0], 0x03030303, 6); + SWAPMOVE(out[1], out[2], 0x0c0c0c0c, 2); + SWAPMOVE(out[3], out[2], 0x03030303, 4); + SWAPMOVE(out[3], out[1], 0x03030303, 2); +} + +/****************************************************************************** +* Unpack the input to a byte-wise representation +******************************************************************************/ +void unpacking(u8* out, u32 *in) { + u32 tmp; + SWAPMOVE(in[3], in[1], 0x03030303, 2); + SWAPMOVE(in[3], in[2], 0x03030303, 4); + SWAPMOVE(in[1], in[2], 0x0c0c0c0c, 2); + SWAPMOVE(in[3], in[0], 0x03030303, 6); + SWAPMOVE(in[1], in[0], 0x0c0c0c0c, 4); + SWAPMOVE(in[2], in[0], 0x30303030, 2); + SWAPMOVE(in[0], in[0], 0x0a0a0a0a, 3); + SWAPMOVE(in[1], in[1], 0x0a0a0a0a, 3); + SWAPMOVE(in[2], in[2], 0x0a0a0a0a, 3); + SWAPMOVE(in[3], in[3], 0x0a0a0a0a, 3); + LE_STORE(out, in[0]); + LE_STORE(out + 8, in[1]); + LE_STORE(out + 4, in[2]); + LE_STORE(out + 12, in[3]); +} + +/****************************************************************************** +* 0 4 1 5 +* 1 5 ---> 2 6 +* 2 6 3 7 +* 3 7 4 0 +******************************************************************************/ +void lfsr2_bs(u32* tk) { + u32 tmp; + tmp = tk[0] ^ (tk[2] & 0xaaaaaaaa); + tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); + tk[0] = tk[1]; + tk[1] = tk[2]; + tk[2] = tk[3]; + tk[3] = tmp; +} + +/****************************************************************************** +* 0 4 7 3 +* 1 5 ---> 0 4 +* 2 6 1 5 +* 3 7 2 6 +******************************************************************************/ +void lfsr3_bs(u32* tk) { + u32 tmp; + tmp = tk[3] ^ ((tk[1] & 0xaaaaaaaa) >> 1); + tmp = ((tmp & 0xaaaaaaaa) >> 1) | ((tmp << 1) & 0xaaaaaaaa); + tk[3] = tk[2]; + tk[2] = tk[1]; + tk[1] = tk[0]; + tk[0] = tmp; +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, twice +******************************************************************************/ +void permute_tk_2(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,14) & 0xcc00cc00; + tk[i] |= (tmp & 0x000000ff) << 16; + tk[i] |= (tmp & 0xcc000000)>> 2; + tk[i] |= (tmp & 0x0033cc00) >> 8; + tk[i] |= (tmp & 0x00cc0000) >>18; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 4 times +******************************************************************************/ +void permute_tk_4(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,22) & 0xcc0000cc; + tk[i] |= ROR(tmp,16) & 0x3300cc00; + tk[i] |= ROR(tmp, 24) & 0x00cc3300; + tk[i] |= (tmp & 0x00cc00cc) >> 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 6 times +******************************************************************************/ +void permute_tk_6(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,6) & 0xcccc0000; + tk[i] |= ROR(tmp,24) & 0x330000cc; + tk[i] |= ROR(tmp,10) & 0x3333; + tk[i] |= (tmp & 0xcc) << 14; + tk[i] |= (tmp & 0x3300) << 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 8 times +******************************************************************************/ +void permute_tk_8(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0xcc000033; + tk[i] |= ROR(tmp,8) & 0x33cc0000; + tk[i] |= ROR(tmp,26) & 0x00333300; + tk[i] |= (tmp & 0x00333300) >> 6; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 10 times +******************************************************************************/ +void permute_tk_10(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc330000; + tk[i] |= ROR(tmp,26) & 0x33000033; + tk[i] |= ROR(tmp,22) & 0x00cccc00; + tk[i] |= (tmp & 0x00330000) >> 14; + tk[i] |= (tmp & 0xcc00) >> 2; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 12 times +******************************************************************************/ +void permute_tk_12(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc33; + tk[i] |= ROR(tmp,30) & 0x00cc00cc; + tk[i] |= ROR(tmp,10) & 0x33330000; + tk[i] |= ROR(tmp,16) & 0xcc003300; + } +} + +/****************************************************************************** +* Apply the permutation in a bitsliced manner, 14 times +******************************************************************************/ +void permute_tk_14(u32* tk) { + u32 tmp; + for(int i =0; i < 4; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0x0033cc00; + tk[i] |= ROR(tmp,14) & 0x00cc0000; + tk[i] |= ROR(tmp,30) & 0xcc000000; + tk[i] |= ROR(tmp,16) & 0x000000ff; + tk[i] |= ROR(tmp,18) & 0x33003300; + } +} + +/****************************************************************************** +* Precompute all LFSRs on TK2 +******************************************************************************/ +void precompute_lfsr_tk2(u32* tk, const u8* key, const int rounds) { + u32 tk2[4]; + packing(tk2, key); + memcpy(tk, tk2, 16); + for(int i = 0 ; i < rounds; i+=2) { + lfsr2_bs(tk2); + memcpy(tk+i*4+4, tk2, 16); + } +} + +/****************************************************************************** +* Precompute all LFSRs on TK3 +******************************************************************************/ +void precompute_lfsr_tk3(u32* tk, const u8* key, const int rounds) { + u32 tk3[4]; + packing(tk3, key); + tk[0] ^= tk3[0]; + tk[1] ^= tk3[1]; + tk[2] ^= tk3[2]; + tk[3] ^= tk3[3]; + for(int i = 0 ; i < rounds; i+=2) { + lfsr3_bs(tk3); + tk[i*4+4] ^= tk3[0]; + tk[i*4+5] ^= tk3[1]; + tk[i*4+6] ^= tk3[2]; + tk[i*4+7] ^= tk3[3]; + } +} + +/****************************************************************************** +* XOR TK with TK1 before applying the permutations. +* The key is then rearranged to match the barrel shiftrows representation. +******************************************************************************/ +void permute_tk(u32* tk, const u8* key, const int rounds) { + u32 test; + u32 tk1[4], tmp[4]; + packing(tk1, key); + memcpy(tmp, tk, 16); + tmp[0] ^= tk1[0]; + tmp[1] ^= tk1[1]; + tmp[2] ^= tk1[2]; + tmp[3] ^= tk1[3]; + for(int i = 0 ; i < rounds; i += 8) { + test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P + tk[i*4] = tmp[2] & 0xf0f0f0f0; + tk[i*4+1] = tmp[3] & 0xf0f0f0f0; + tk[i*4+2] = tmp[0] & 0xf0f0f0f0; + tk[i*4+3] = tmp[1] & 0xf0f0f0f0; + memcpy(tmp, tk+i*4+4, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_2(tmp); // applies P^2 + else + permute_tk_10(tmp); // applies P^10 + tk[i*4+4] = ROR(tmp[0],26) & 0xc3c3c3c3; + tk[i*4+5] = ROR(tmp[1],26) & 0xc3c3c3c3; + tk[i*4+6] = ROR(tmp[2],26) & 0xc3c3c3c3; + tk[i*4+7] = ROR(tmp[3],26) & 0xc3c3c3c3; + tk[i*4+8] = ROR(tmp[2],28) & 0x03030303; + tk[i*4+8] |= ROR(tmp[2],12) & 0x0c0c0c0c; + tk[i*4+9] = ROR(tmp[3],28) & 0x03030303; + tk[i*4+9] |= ROR(tmp[3],12) & 0x0c0c0c0c; + tk[i*4+10] = ROR(tmp[0],28) & 0x03030303; + tk[i*4+10] |= ROR(tmp[0],12) & 0x0c0c0c0c; + tk[i*4+11] = ROR(tmp[1],28) & 0x03030303; + tk[i*4+11] |= ROR(tmp[1],12) & 0x0c0c0c0c; + memcpy(tmp, tk+i*4+12, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_4(tmp); // applies P^4 + else + permute_tk_12(tmp); // applies P^12 + for(int j = 0; j < 4; j++) { + tk[i*4+12+j] = ROR(tmp[j],14) & 0x30303030; + tk[i*4+12+j] |= ROR(tmp[j],6) & 0x0c0c0c0c; + } + tk[i*4+16] = ROR(tmp[2], 16) & 0xf0f0f0f0; + tk[i*4+17] = ROR(tmp[3], 16) & 0xf0f0f0f0; + tk[i*4+18] = ROR(tmp[0], 16) & 0xf0f0f0f0; + tk[i*4+19] = ROR(tmp[1], 16) & 0xf0f0f0f0; + memcpy(tmp, tk+i*4+20, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_6(tmp); // applies P^6 + else + permute_tk_14(tmp); // applies P^14 + tk[i*4+20] = ROR(tmp[0], 10) & 0xc3c3c3c3; + tk[i*4+21] = ROR(tmp[1], 10) & 0xc3c3c3c3; + tk[i*4+22] = ROR(tmp[2], 10) & 0xc3c3c3c3; + tk[i*4+23] = ROR(tmp[3], 10) & 0xc3c3c3c3; + tk[i*4+24] = ROR(tmp[2],12) & 0x03030303; + tk[i*4+24] |= ROR(tmp[2],28) & 0x0c0c0c0c; + tk[i*4+25] = ROR(tmp[3],12) & 0x03030303; + tk[i*4+25] |= ROR(tmp[3],28) & 0x0c0c0c0c; + tk[i*4+26] = ROR(tmp[0],12) & 0x03030303; + tk[i*4+26] |= ROR(tmp[0],28) & 0x0c0c0c0c; + tk[i*4+27] = ROR(tmp[1],12) & 0x03030303; + tk[i*4+27] |= ROR(tmp[1],28) & 0x0c0c0c0c; + memcpy(tmp, tk+i*4+28, 16); + XOR_BLOCKS(tmp, tk1); + if (test) + permute_tk_8(tmp); // applies P^8 + for(int j = 0; j < 4; j++) { + tk[i*4+28+j] = ROR(tmp[j],30) & 0x30303030; + tk[i*4+28+j] |= ROR(tmp[j],22) & 0x0c0c0c0c; + } + if (test && (i+8 < rounds)) { //only if next loop iteration + tk[i*4+32] = tmp[2] & 0xf0f0f0f0; + tk[i*4+33] = tmp[3] & 0xf0f0f0f0; + tk[i*4+34] = tmp[0] & 0xf0f0f0f0; + tk[i*4+35] = tmp[1] & 0xf0f0f0f0; + } + } +} + +/****************************************************************************** +* Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst. +******************************************************************************/ +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3) { + memset(rtk, 0x00, 16*SKINNY128_384_ROUNDS); + precompute_lfsr_tk2(rtk, tk2, SKINNY128_384_ROUNDS); + precompute_lfsr_tk3(rtk, tk3, SKINNY128_384_ROUNDS); + permute_tk(rtk, (u8*)(rtk+8), SKINNY128_384_ROUNDS); // rtk+8 is NULL + for(int i = 0; i < SKINNY128_384_ROUNDS; i++) { // add rconsts + for(int j = 0; j < 4; j++) + rtk[i*4+j] ^= rconst_32_bs[i*4+j]; + } +} + +/****************************************************************************** +* Precompute RTK1. +******************************************************************************/ +void precompute_rtk1(u32* rtk1, const u8* tk1) { + memset(rtk1, 0x00, 16*16); + permute_tk(rtk1, tk1, 16); +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.h new file mode 100644 index 0000000..5615cbd --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_1/tk_schedule.h @@ -0,0 +1,39 @@ +#ifndef TK_SCHEDULE_H_ +#define TK_SCHEDULE_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +void packing(u32* out, const u8* in); +void unpacking(u8* out, u32 *in); +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3); +void precompute_rtk1(u32* rtk1, const u8* tk1); + +#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) + +#define XOR_BLOCKS(x,y) ({ \ + (x)[0] ^= (y)[0]; \ + (x)[1] ^= (y)[1]; \ + (x)[2] ^= (y)[2]; \ + (x)[3] ^= (y)[3]; \ +}) + +#define SWAPMOVE(a, b, mask, n) ({ \ + tmp = (b ^ (a >> n)) & mask; \ + b ^= tmp; \ + a ^= (tmp << n); \ +}) + +#define LE_LOAD(x, y) \ + *(x) = (((u32)(y)[3] << 24) | \ + ((u32)(y)[2] << 16) | \ + ((u32)(y)[1] << 8) | \ + (y)[0]); + +#define LE_STORE(x, y) \ + (x)[0] = (y) & 0xff; \ + (x)[1] = ((y) >> 8) & 0xff; \ + (x)[2] = ((y) >> 16) & 0xff; \ + (x)[3] = (y) >> 24; + +#endif // TK_SCHEDULE_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/api.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/api.h new file mode 100644 index 0000000..a4aa567 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 16 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/crypto_aead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/crypto_aead.h new file mode 100644 index 0000000..e2ca9b0 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/crypto_aead.h @@ -0,0 +1,18 @@ + +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 +); + +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 +); \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/encrypt.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/encrypt.c new file mode 100644 index 0000000..fa46817 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/encrypt.c @@ -0,0 +1,293 @@ +/****************************************************************************** +* Constant-time implementation of SKINNY-AEAD-M1 (v1.1). +* +* Two blocks are treated in parallel with SKINNY-128-384 whenever possible. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include "skinny128.h" +#include "skinnyaead.h" +#include +#include + +/****************************************************************************** +* x ^= y where x, y are 128-bit blocks (16 bytes array). +******************************************************************************/ +static void xor_block(u8 * x, const u8* y) { + for(int i = 0; i < BLOCKBYTES; i++) + x[i] ^= y[i]; +} + +/****************************************************************************** +* Process the associated data. Common to SKINNY-AEAD-M1 encrypt and decrypt +* functions. +******************************************************************************/ +static void skinny_aead_m1_auth(u8* auth, u8* c, u8* tag, tweakey* tk, + u64 mlen, const u8* ad, u64 adlen) { + u64 lfsr = 1; + u8 feedback; + u8 tmp[2*BLOCKBYTES]; + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + SET_DOMAIN(tmp, 0x02); + while (adlen >= 2*BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x02); + precompute_rtk1(tk->rtk1, tmp, tmp+BLOCKBYTES); + skinny128_384_plus_encrypt(tmp, tmp+BLOCKBYTES, ad, ad+BLOCKBYTES, *tk); + xor_block(auth, tmp); + xor_block(auth, tmp + BLOCKBYTES); + adlen -= 2*BLOCKBYTES; + ad += 2*BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + if (adlen > BLOCKBYTES) { // pad and process 2 blocs in // + LE_STR_64(tmp, lfsr); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); + SET_DOMAIN(tmp + BLOCKBYTES, 0x03); // domain for padding ad + precompute_rtk1(tk->rtk1, tmp, tmp + BLOCKBYTES); + adlen -= BLOCKBYTES; + memset(tmp, 0x00, BLOCKBYTES); + memcpy(tmp, ad + BLOCKBYTES, adlen); + tmp[adlen] ^= 0x80; // padding + skinny128_384_plus_encrypt(tmp + BLOCKBYTES, tmp, ad, tmp, *tk); + xor_block(auth, tmp); + xor_block(auth, tmp + BLOCKBYTES); + } else if (adlen == BLOCKBYTES) { + LE_STR_64(tmp, lfsr); + if (mlen == 0) { // if tag has *NOT* been calculated yet + precompute_rtk1(tk->rtk1, tmp, tag); // compute the tag + skinny128_384_plus_encrypt(auth, c, ad, c, *tk); + } else { // if tag has been calculated yet + precompute_rtk1(tk->rtk1, tmp, tmp); // process last ad block + skinny128_384_plus_encrypt(auth, auth, ad, ad, *tk); + } + } else if (adlen > 0) { + LE_STR_64(tmp, lfsr); + SET_DOMAIN(tmp, 0x03); // domain for padding ad + memset(tmp + BLOCKBYTES, 0x00, BLOCKBYTES); // padding + memcpy(tmp + BLOCKBYTES, ad, adlen); // padding + tmp[BLOCKBYTES + adlen] ^= 0x80; // padding + if (mlen == 0) { // if tag has *NOT* been calculated yet + precompute_rtk1(tk->rtk1, tmp, tag); // compute the tag + skinny128_384_plus_encrypt(auth, c, tmp + BLOCKBYTES, c, *tk); + } else { // if tag has been calculated yet + precompute_rtk1(tk->rtk1, tmp, tmp); // process last ad block + skinny128_384_plus_encrypt(auth, auth, tmp + BLOCKBYTES, tmp + BLOCKBYTES, *tk); + } + } +} + +/****************************************************************************** +* Encryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u64 i,lfsr = 1; + u8 feedback; + tweakey tk; + u8 tmp[2*BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES]; + (void)nsec; + + // ----------------- Initialization ----------------- + *clen = mlen + TAGBYTES; + precompute_rtk2_3(tk.rtk2_3, npub, k, SKINNY128_384_ROUNDS); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(tag, 0x00, BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(c + mlen, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (mlen >= 2*BLOCKBYTES) { // process 2 blocks in // + LE_STR_64(tmp, lfsr); // lfsr for 1st block + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for 2nd block + precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384_plus_encrypt(c, c + BLOCKBYTES, m, m + BLOCKBYTES, tk); + xor_block(c + mlen, m); // sum for tag computation + xor_block(c + mlen, m + BLOCKBYTES); // sum for tag computation + mlen -= 2*BLOCKBYTES; + c += 2*BLOCKBYTES; + m += 2*BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + SET_DOMAIN(tag, 0x04); // domain for tag computation + if (mlen > BLOCKBYTES) { // pad and process 2 blocs in // + LE_STR_64(tmp, lfsr); // lfsr for 1st block + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for 2nd block + SET_DOMAIN(tmp + BLOCKBYTES, 0x01); // domain for padding m + precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384_plus_encrypt(c, auth, m, auth, tk); + xor_block(c + mlen, m); + for(i = 0; i < mlen - BLOCKBYTES; i++) { + c[BLOCKBYTES + i] = auth[i] ^ m[BLOCKBYTES + i]; + c[mlen + i] ^= m[BLOCKBYTES + i]; + } + c[mlen + i] ^= 0x80; // padding + SET_DOMAIN(tag, 0x05); // domain for tag computation + m += mlen; + c += mlen; + mlen = 0; + UPDATE_LFSR(lfsr); + } else if (mlen == BLOCKBYTES) { // last block is full + LE_STR_64(tmp, lfsr); // lfsr for last full block + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for tag computation + SET_DOMAIN(tmp + BLOCKBYTES, 0x04); // domain for tag computation + xor_block(c + mlen, m); // sum for tag computation + precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384_plus_encrypt(c, c + mlen, m, c + mlen, tk); + c += BLOCKBYTES; + } else if (mlen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); // lfsr for last block + SET_DOMAIN(tmp, 0x01); // domain for padding + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for tag computation + SET_DOMAIN(tmp + BLOCKBYTES, 0x05); // domain for tag computation + for(i = 0; i < mlen; i++) // sum for tag computation + c[mlen + i] ^= m[i]; // sum for tag computation + c[mlen + i] ^= 0x80; // padding + precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384_plus_encrypt(auth, c + mlen, auth, c + mlen, tk); + for(i = 0; i < mlen; i++) + c[i] = auth[i] ^ m[i]; // encrypted padded block + c += mlen; + } + if (mlen == 0) { // if tag has *NOT* been calculated yet + LE_STR_64(tag, lfsr); // lfsr for tag computation + if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { //if all AD can be processed in // + precompute_rtk1(tk.rtk1, tag, tag); + skinny128_384_plus_encrypt(c, c, c, c, tk); // compute the tag + } + } + // ----------------- Process the plaintext ----------------- + + // ----------------- Process the associated data ----------------- + skinny_aead_m1_auth(auth, c, tag, &tk, mlen, ad, adlen); + xor_block(c, auth); + // ----------------- Process the associated data ----------------- + + return 0; +} + + +/****************************************************************************** +* Decryption and authentication using SKINNY-AEAD-M1 +******************************************************************************/ +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) { + u64 i,lfsr = 1; + u8 feedback; + tweakey tk; + u8 tmp[2*BLOCKBYTES]; + u8 sum[BLOCKBYTES], tag[BLOCKBYTES], auth[BLOCKBYTES]; + (void)nsec; + + if (clen < TAGBYTES) + return -1; + + // ----------------- Initialization ----------------- + clen -= TAGBYTES; + *mlen = clen; + precompute_rtk2_3(tk.rtk2_3, npub, k, SKINNY128_384_ROUNDS); + memset(tmp, 0x00, 2*BLOCKBYTES); + memset(tag, 0x00, BLOCKBYTES); + memset(auth, 0x00, BLOCKBYTES); + memset(sum, 0x00, BLOCKBYTES); + // ----------------- Initialization ----------------- + + // ----------------- Process the plaintext ----------------- + while (clen >= 2*BLOCKBYTES) { // process 2 blocks in // + LE_STR_64(tmp, lfsr); // lfsr for 1st block + UPDATE_LFSR(lfsr); + LE_STR_64(tmp + BLOCKBYTES, lfsr); // lfsr for 2nd block + precompute_rtk1(tk.rtk1, tmp, tmp + BLOCKBYTES); + skinny128_384_plus_decrypt(m, m + BLOCKBYTES, c, c + BLOCKBYTES, tk); + xor_block(sum, m); // sum for tag computation + xor_block(sum, m + BLOCKBYTES); // sum for tag computation + clen -= 2*BLOCKBYTES; + c += 2*BLOCKBYTES; + m += 2*BLOCKBYTES; + UPDATE_LFSR(lfsr); + } + SET_DOMAIN(tag, 0x04); // domain for tag computation + if (clen > BLOCKBYTES) { // pad and process 2 blocs in // + LE_STR_64(tmp, lfsr); // lfsr for 1st block + precompute_rtk1(tk.rtk1, tmp, tmp); + skinny128_384_plus_decrypt(m, m, c, c, tk); + xor_block(sum, m); + UPDATE_LFSR(lfsr); + LE_STR_64(tmp, lfsr); // lfsr for 2nd block + SET_DOMAIN(tmp, 0x01); // domain for padding m + precompute_rtk1(tk.rtk1, tmp, tmp); + skinny128_384_plus_encrypt(auth, auth, auth, auth, tk); + for(i = 0; i < clen - BLOCKBYTES; i++) { + m[BLOCKBYTES + i] = auth[i] ^ c[BLOCKBYTES + i]; + sum[i] ^= m[BLOCKBYTES + i]; + } + sum[i] ^= 0x80; // padding + SET_DOMAIN(tag, 0x05); // domain for tag computation + m += clen; + c += clen; + clen = 0; + UPDATE_LFSR(lfsr); + } else if (clen == BLOCKBYTES) { // last block is full + LE_STR_64(tmp, lfsr); // lfsr for last full block + precompute_rtk1(tk.rtk1, tmp, tmp); + skinny128_384_plus_decrypt(m, m, c, c, tk); + xor_block(sum, m); // sum for tag computation + SET_DOMAIN(tag, 0x04); // domain for tag computation + UPDATE_LFSR(lfsr); + c += BLOCKBYTES; + clen = 0; + } else if (clen > 0) { // last block is partial + LE_STR_64(tmp, lfsr); // lfsr for last block + SET_DOMAIN(tmp, 0x01); // domain for padding + precompute_rtk1(tk.rtk1, tmp, tmp); + skinny128_384_plus_encrypt(auth, auth, auth, auth, tk); + for(i = 0; i < clen; i++) { + m[i] = auth[i] ^ c[i]; // encrypted padded block + sum[i] ^= m[i]; // sum for tag computation + } + sum[i] ^= 0x80; // padding + SET_DOMAIN(tag, 0x05); // domain for tag computation + UPDATE_LFSR(lfsr); + m += clen; + c += clen; + clen = 0; + } + if (clen == 0) { // if tag has *NOT* been calculated yet + LE_STR_64(tag, lfsr); // lfsr for tag computation + if((adlen % 32) == 0 || (adlen % 32) > BLOCKBYTES) { + precompute_rtk1(tk.rtk1, tag, tag); //if AD can be processed in // + skinny128_384_plus_encrypt(sum, sum, sum, sum, tk); // compute the tag + } + } + + // ----------------- Process the associated data ----------------- + skinny_aead_m1_auth(auth, sum, tag, &tk, clen, ad, adlen); + xor_block(sum, auth); + feedback = 0; + for(i = 0; i < TAGBYTES; i++) + feedback |= sum[i] ^ c[i]; // constant-time tag verification + return feedback; + // ----------------- Process the associated data ----------------- +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.c new file mode 100644 index 0000000..ed1e619 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.c @@ -0,0 +1,202 @@ +/****************************************************************************** +* Fixsliced implementation of SKINNY-128-384. +* Two blocks are processed in parallel. +* +* This implementation doesn't compute the ShiftRows operation. Some masks and +* shifts are applied during the MixColumns operation so that the proper bits +* are XORed together. Moreover, the row permutation within the MixColumns +* is omitted, as well as the bit permutation at the end of the Sbox. The rows +* are synchronized with the classical after only 4 rounds. However, the Sbox +* permutation requires 8 rounds for a synchronization. To limit the impact +* on code size, we compute the permutation every 4 rounds. Therefore, this +* implementation relies on a "QUADRUPLE_ROUND" routine. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +******************************************************************************/ +#include +#include +#include "skinny128.h" +#include "tk_schedule.h" + +/**************************************************************************** +* The MixColumns operation for rounds i such that (i % 4) == 0. +****************************************************************************/ +void mixcolumns_0(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = ROR(state[i],24) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,30); + tmp = ROR(state[i],16) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,4); + tmp = ROR(state[i],8) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,2); + } +} + +/**************************************************************************** +* The MixColumns operation for rounds i such that (i % 4) == 1. +****************************************************************************/ +void mixcolumns_1(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,2); + } +} + +/**************************************************************************** +* The MixColumns operation for rounds i such that (i % 4) == 2. +****************************************************************************/ +void mixcolumns_2(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = ROR(state[i],8) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,6); + tmp = ROR(state[i],16) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],24) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,2); + } +} + +/**************************************************************************** +* The MixColumns operation for rounds i such that (i % 4) == 3. +****************************************************************************/ +void mixcolumns_3(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,30); + tmp = state[i] & 0x30303030; + state[i] ^= ROR(tmp,4); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,26); + } +} + +/**************************************************************************** +* The inverse MixColumns oepration for rounds i such that (i % 4) == 0 +****************************************************************************/ +void inv_mixcolumns_0(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = ROR(state[i],8) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,2); + tmp = ROR(state[i],16) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,4); + tmp = ROR(state[i],24) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,30); + } +} + +/**************************************************************************** +* The inverse MixColumns oepration for rounds i such that (i % 4) == 1 +****************************************************************************/ +void inv_mixcolumns_1(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,2); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],16) & 0x30303030; + state[i] ^= ROR(tmp,30); + } +} + +/**************************************************************************** +* The inverse MixColumns oepration for rounds i such that (i % 4) == 2 +****************************************************************************/ +void inv_mixcolumns_2(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = ROR(state[i],24) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,2); + tmp = ROR(state[i],16) & 0x0c0c0c0c; + state[i] ^= ROR(tmp,28); + tmp = ROR(state[i],8) & 0xc0c0c0c0; + state[i] ^= ROR(tmp,6); + } +} + +/**************************************************************************** +* The inverse MixColumns oepration for rounds i such that (i % 4) == 3 +****************************************************************************/ +void inv_mixcolumns_3(u32* state) { + u32 tmp; + for(int i = 0; i < 8; i++) { + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,26); + tmp = state[i] & 0x30303030; + state[i] ^= ROR(tmp,4); + tmp = state[i] & 0x03030303; + state[i] ^= ROR(tmp,30); + } +} + +/**************************************************************************** +* Adds the tweakey (including the round constants) to the state. +****************************************************************************/ +void add_tweakey(u32* state, const u32* rtk1, const u32* rtk2_3) { + state[0] ^= rtk1[0] ^ rtk2_3[0]; + state[1] ^= rtk1[1] ^ rtk2_3[1]; + state[2] ^= rtk1[2] ^ rtk2_3[2]; + state[3] ^= rtk1[3] ^ rtk2_3[3]; + state[4] ^= rtk1[4] ^ rtk2_3[4]; + state[5] ^= rtk1[5] ^ rtk2_3[5]; + state[6] ^= rtk1[6] ^ rtk2_3[6]; + state[7] ^= rtk1[7] ^ rtk2_3[7]; +} + +/**************************************************************************** +* Encryption of 2 blocks in parallel using SKINNY-128-384. +* The input parameters 'rtk1' and 'rtk2_3' are given seperately to avoid +* unnecessary recomputations of the entire tk schedule during SKINNY-AEAD-M1. +****************************************************************************/ +void skinny128_384_plus_encrypt(u8* ctext, u8* ctext_bis, const u8* ptext, + const u8* ptext_bis, const tweakey tk) { + u32 state[8]; + packing(state, ptext, ptext_bis); + QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3); + QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+32); + QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+64); + QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+96); + QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+128); + QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+160); + QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+192); + QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+224); + QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+256); + QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+288); + unpacking(ctext, ctext_bis, state); +} + +/**************************************************************************** +* Decryption of 2 blocks in parallel using SKINNY-128-384. +* The input parameters 'rtk1' and 'rtk2_3' are given seperately to avoid +* unnecessary recomputations of the entire tk schedule during SKINNY-AEAD-M1. +****************************************************************************/ +void skinny128_384_plus_decrypt(u8* ptext, u8* ptext_bis, const u8* ctext, + const u8* ctext_bis, const tweakey tk) { + u32 state[8]; + packing(state, ctext, ctext_bis); + INV_QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+288); + INV_QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+256); + INV_QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+224); + INV_QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+192); + INV_QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+160); + INV_QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3+128); + INV_QUADRUPLE_ROUND(state, tk.rtk1+96, tk.rtk2_3+96); + INV_QUADRUPLE_ROUND(state, tk.rtk1+64, tk.rtk2_3+64); + INV_QUADRUPLE_ROUND(state, tk.rtk1+32, tk.rtk2_3+32); + INV_QUADRUPLE_ROUND(state, tk.rtk1, tk.rtk2_3); + unpacking(ptext, ptext_bis, state); +} \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.h new file mode 100644 index 0000000..01dd271 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinny128.h @@ -0,0 +1,125 @@ +#ifndef SKINNY128_H_ +#define SKINNY128_H_ +#include "tk_schedule.h" + +void skinny128_384_plus_encrypt(u8* ctext, u8* ctext_bis, const u8* ptext, + const u8* ptext_bis, const tweakey tk); + +void skinny128_384_plus_decrypt(u8* ctext, u8* ctext_bis, const u8* ptext, + const u8* ptext_bis, const tweakey tk); + +#define SKINNY128_384_ROUNDS 40 + +#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) + +#define QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ + state[3] ^= (state[0] | state[1]); \ + state[7] ^= (state[4] | state[5]); \ + state[1] ^= (state[6] | state[5]); \ + state[2] ^= (state[3] & state[7]); \ + state[6] ^= (~state[7] | state[4]); \ + state[0] ^= (state[2] | ~state[1]); \ + state[4] ^= (~state[3] | state[2]); \ + state[5] ^= (state[6] & state[0]); \ + add_tweakey(state, rtk1, rtk2_3); \ + mixcolumns_0(state); \ + state[4] ^= (state[2] | state[3]); \ + state[5] ^= (state[6] | state[1]); \ + state[3] ^= (state[0] | state[1]); \ + state[7] ^= (state[4] & state[5]); \ + state[0] ^= (~state[5] | state[6]); \ + state[2] ^= (state[7] | ~state[3]); \ + state[6] ^= (~state[4] | state[7]); \ + state[1] ^= (state[0] & state[2]); \ + add_tweakey(state, rtk1+8, rtk2_3+8); \ + mixcolumns_1(state); \ + state[6] ^= (state[7] | state[4]); \ + state[1] ^= (state[0] | state[3]); \ + state[4] ^= (state[2] | state[3]); \ + state[5] ^= (state[6] & state[1]); \ + state[2] ^= (~state[1] | state[0]); \ + state[7] ^= (state[5] | ~state[4]); \ + state[0] ^= (~state[6] | state[5]); \ + state[3] ^= (state[2] & state[7]); \ + add_tweakey(state, rtk1+16, rtk2_3+16); \ + mixcolumns_2(state); \ + state[0] ^= (state[5] | state[6]); \ + state[3] ^= (state[2] | state[4]); \ + state[6] ^= (state[7] | state[4]); \ + state[1] ^= (state[0] & state[3]); \ + state[7] ^= (~state[3] | state[2]); \ + state[5] ^= (state[1] | ~state[6]); \ + state[2] ^= (~state[0] | state[1]); \ + state[4] ^= (state[7] & state[5]); \ + add_tweakey(state, rtk1+24, rtk2_3+24); \ + mixcolumns_3(state); \ + state[0] ^= state[1]; \ + state[1] ^= state[0]; \ + state[0] ^= state[1]; \ + state[2] ^= state[3]; \ + state[3] ^= state[2]; \ + state[2] ^= state[3]; \ + state[4] ^= state[7]; \ + state[7] ^= state[4]; \ + state[4] ^= state[7]; \ + state[5] ^= state[6]; \ + state[6] ^= state[5]; \ + state[5] ^= state[6]; \ +}) + +#define INV_QUADRUPLE_ROUND(state, rtk1, rtk2_3) ({ \ + state[0] ^= state[1]; \ + state[1] ^= state[0]; \ + state[0] ^= state[1]; \ + state[2] ^= state[3]; \ + state[3] ^= state[2]; \ + state[2] ^= state[3]; \ + state[4] ^= state[7]; \ + state[7] ^= state[4]; \ + state[4] ^= state[7]; \ + state[5] ^= state[6]; \ + state[6] ^= state[5]; \ + state[5] ^= state[6]; \ + inv_mixcolumns_3(state); \ + add_tweakey(state, rtk1+24, rtk2_3+24); \ + state[4] ^= (state[7] & state[5]); \ + state[2] ^= (~state[0] | state[1]); \ + state[5] ^= (state[1] | ~state[6]); \ + state[7] ^= (~state[3] | state[2]); \ + state[1] ^= (state[0] & state[3]); \ + state[6] ^= (state[7] | state[4]); \ + state[3] ^= (state[2] | state[4]); \ + state[0] ^= (state[5] | state[6]); \ + inv_mixcolumns_2(state); \ + add_tweakey(state, rtk1+16, rtk2_3+16); \ + state[3] ^= (state[2] & state[7]); \ + state[0] ^= (~state[6] | state[5]); \ + state[7] ^= (state[5] | ~state[4]); \ + state[2] ^= (~state[1] | state[0]); \ + state[5] ^= (state[6] & state[1]); \ + state[4] ^= (state[2] | state[3]); \ + state[1] ^= (state[0] | state[3]); \ + state[6] ^= (state[7] | state[4]); \ + inv_mixcolumns_1(state); \ + add_tweakey(state, rtk1+8, rtk2_3+8); \ + state[1] ^= (state[0] & state[2]); \ + state[6] ^= (~state[4] | state[7]); \ + state[2] ^= (state[7] | ~state[3]); \ + state[0] ^= (~state[5] | state[6]); \ + state[7] ^= (state[4] & state[5]); \ + state[3] ^= (state[0] | state[1]); \ + state[5] ^= (state[6] | state[1]); \ + state[4] ^= (state[2] | state[3]); \ + inv_mixcolumns_0(state); \ + add_tweakey(state, rtk1, rtk2_3); \ + state[5] ^= (state[6] & state[0]); \ + state[4] ^= (~state[3] | state[2]); \ + state[0] ^= (state[2] | ~state[1]); \ + state[6] ^= (~state[7] | state[4]); \ + state[2] ^= (state[3] & state[7]); \ + state[1] ^= (state[6] | state[5]); \ + state[7] ^= (state[4] | state[5]); \ + state[3] ^= (state[0] | state[1]); \ +}) + +#endif // SKINNY128_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinnyaead.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinnyaead.h new file mode 100644 index 0000000..5500af8 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/skinnyaead.h @@ -0,0 +1,32 @@ +#ifndef SKINNYAEADM1_H_ +#define SKINNYAEADM1_H_ + +#include "skinny128.h" + +typedef unsigned char u8; +typedef unsigned int u32; +typedef unsigned long long u64; + +#define TAGBYTES 16 +#define KEYBYTES 16 +#define BLOCKBYTES 16 + +#define SET_DOMAIN(ptr, domain) ((ptr)[15] = (domain)) + +#define UPDATE_LFSR(lfsr) ({ \ + feedback = ((lfsr) & (1ULL << 63)) ? 0x1B : 0x00; \ + (lfsr) = ((lfsr) << 1) ^ feedback; \ +}) + +#define LE_STR_64(ptr, x) ({ \ + (ptr)[0] = (u8)(x); \ + (ptr)[1] = (u8)((x) >> 8); \ + (ptr)[2] = (u8)((x) >> 16); \ + (ptr)[3] = (u8)((x) >> 24); \ + (ptr)[4] = (u8)((x) >> 32); \ + (ptr)[5] = (u8)((x) >> 40); \ + (ptr)[6] = (u8)((x) >> 48); \ + (ptr)[7] = (u8)((x) >> 56); \ +}) + +#endif // SKINNYAEADM1_H_ \ No newline at end of file diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.c b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.c new file mode 100644 index 0000000..ae7a820 --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.c @@ -0,0 +1,464 @@ +/******************************************************************************* +* Implementation of the tweakey schedule according to the fixsliced +* representation. +* +* For more details, see the paper at: https:// +* +* @author Alexandre Adomnicai, Nanyang Technological University, +* alexandre.adomnicai@ntu.edu.sg +* +* @date May 2020 +*******************************************************************************/ +#include +#include +#include "tk_schedule.h" + +typedef unsigned char u8; +typedef unsigned int u32; + +/**************************************************************************** +* The round constants according to the fixsliced representation. +****************************************************************************/ +u32 rconst_32_bs[320] = { + 0xfffffff3, 0xffffffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x000000c0, 0xffffffff, 0xffffffff, + 0xffffffff, 0x00000300, 0xcffffcff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xffffffff, 0x0c000000, + 0xf3ffffff, 0x00000000, 0xffffffff, 0x33ffffff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00300000, 0xffcffffc, 0xffcfffff, 0xffcfffff, + 0xff33ffff, 0xff3fffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x00f00000, 0xff3fffff, 0xffffffff, + 0xfcffffff, 0x00c00000, 0xfc3fcfff, 0xfcffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xfffff3ff, 0x03000c00, + 0xfffff3ff, 0x00000000, 0xffffffff, 0xfcff3fff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00000c30, 0xfffcf3cf, 0xffffffff, 0xffffffcf, + 0xffffff03, 0xffffff3f, 0x00000000, 0xffffffff, + 0xffffffff, 0x000000f0, 0xffffffff, 0xffffffff, + 0xfffffcff, 0x00000300, 0xcffffc3f, 0xfffffcff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xf3ffffff, 0x00000300, + 0xf3ffffff, 0x00000000, 0xffffffff, 0x33ffffff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x0c000000, 0xf3fffffc, 0xffcfffff, 0xffcfffff, + 0xffc3ffff, 0xffffffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x00f00000, 0xff3fffff, 0xffffffff, + 0xffffffff, 0x03c00000, 0xfc3fcfff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000c00, + 0xfffff3ff, 0x00000000, 0xffffffff, 0xfcff33ff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00000000, 0xfffcffcf, 0xffffffcf, 0xffffffcf, + 0xfffffff3, 0xffffff3f, 0x00000000, 0xffffffff, + 0xffffffff, 0x000000f0, 0xffffff3f, 0xffffffff, + 0xfffffcff, 0x000000c0, 0xcffffc3f, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xffffffff, 0x0c000300, + 0xf3ffffff, 0x00000000, 0xffffffff, 0x3ffffcff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00300000, 0xf3cffffc, 0xffffffff, 0xffcfffff, + 0xff33ffff, 0xff3fffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x00300000, 0xffffffff, 0xffffffff, + 0xfcffffff, 0x00000000, 0xff3fcfff, 0xfcffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xfffff3ff, 0x03000000, + 0xffffffff, 0x00000000, 0xffffffff, 0xffff3fff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00000c00, 0xfffcf3ff, 0xffffffff, 0xffffffff, + 0xffffffc3, 0xffffffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x000000c0, 0xffffffff, 0xffffffff, + 0xffffffff, 0x00000000, 0xcffffcff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xffffffff, 0x0c000000, + 0xf3ffffff, 0x00000000, 0xffffffff, 0x3fffffff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00300000, 0xffcffffc, 0xffffffff, 0xffcfffff, + 0xff33ffff, 0xff3fffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x00f00000, 0xffffffff, 0xffffffff, + 0xfcffffff, 0x00000000, 0xfc3fcfff, 0xfcffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xfffff3ff, 0x03000000, + 0xfffff3ff, 0x00000000, 0xffffffff, 0xffff3fff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00000c00, 0xfffcf3ff, 0xffffffff, 0xffffffcf, + 0xffffffc3, 0xffffffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x000000f0, 0xffffffff, 0xffffffff, + 0xffffffff, 0x00000300, 0xcffffc3f, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xf3ffffff, 0x00000000, 0xffffffff, 0x33ffffff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00300000, 0xfffffffc, 0xffcfffff, 0xffcfffff, + 0xff33ffff, 0xffffffff, 0x00000000, 0xffffffff, + 0xffffffff, 0x00f00000, 0xff3fffff, 0xffffffff, + 0xffffffff, 0x00c00000, 0xfc3fcfff, 0xfcffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, + 0xffffffff, 0xffffffff, 0xfffff3ff, 0x00000c00, + 0xfffff3ff, 0x00000000, 0xffffffff, 0xfcff3fff, + 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, + 0x00000c00, 0xfffcffcf, 0xffffffff, 0xffffffcf +}; + +/**************************************************************************** +* Packs 2 input blocks B, B' into the state using a bitsliced representation. +* Once the packing process is complete, the 256-bit state consists of 8 +* 32-bit word and the input blocks bit positioning is as follows: +* +* 24 24' 56 56' 88 88' 120 120' | ... | 0 0' 32 32' 64 64' 96 96' +* 25 25' 57 57' 89 89' 121 121' | ... | 1 1' 33 33' 65 65' 97 97' +* 26 26' 58 58' 90 90' 122 122' | ... | 2 2' 34 34' 66 66' 98 98' +* 27 27' 59 59' 91 91' 123 123' | ... | 3 3' 35 35' 67 67' 99 99' +* 28 28' 60 60' 92 92' 124 124' | ... | 4 4' 36 36' 68 68' 100 100' +* 29 29' 61 61' 93 93' 125 125' | ... | 5 5' 37 37' 69 69' 101 101' +* 30 30' 62 62' 94 94' 126 126' | ... | 6 6' 38 38' 70 70' 102 102' +* 31 31' 63 63' 95 95' 127 127' | ... | 7 7' 39 39' 71 71' 103 103' +****************************************************************************/ +void packing(u32* out, const u8* block0, const u8* block1) { + u32 tmp; + LE_LOAD(out, block0); + LE_LOAD(out + 1, block1); + LE_LOAD(out + 2, block0 + 4); + LE_LOAD(out + 3, block1 + 4); + LE_LOAD(out + 4, block0 + 8); + LE_LOAD(out + 5, block1 + 8); + LE_LOAD(out + 6, block0 + 12); + LE_LOAD(out + 7, block1 + 12); + SWAPMOVE(out[1], out[0], 0x55555555, 1); + SWAPMOVE(out[3], out[2], 0x55555555, 1); + SWAPMOVE(out[5], out[4], 0x55555555, 1); + SWAPMOVE(out[7], out[6], 0x55555555, 1); + SWAPMOVE(out[2], out[0], 0x30303030, 2); + SWAPMOVE(out[4], out[0], 0x0c0c0c0c, 4); + SWAPMOVE(out[6], out[0], 0x03030303, 6); + SWAPMOVE(out[3], out[1], 0x30303030, 2); + SWAPMOVE(out[5], out[1], 0x0c0c0c0c, 4); + SWAPMOVE(out[7], out[1], 0x03030303, 6); + SWAPMOVE(out[4], out[2], 0x0c0c0c0c, 2); + SWAPMOVE(out[6], out[2], 0x03030303, 4); + SWAPMOVE(out[5], out[3], 0x0c0c0c0c, 2); + SWAPMOVE(out[7], out[3], 0x03030303, 4); + SWAPMOVE(out[6], out[4], 0x03030303, 2); + SWAPMOVE(out[7], out[5], 0x03030303, 2); +} + +/**************************************************************************** +* Unacks the 256-bit state into the 32-byte output byte array. +* Once the unpacking process is complete, the byte ordering within the output +* array is as follows: +* +* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, +* 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 +****************************************************************************/ +void unpacking(u8* out, u8* out_bis, u32 *in) { + u32 tmp; + SWAPMOVE(in[6], in[4], 0x03030303, 2); + SWAPMOVE(in[7], in[5], 0x03030303, 2); + SWAPMOVE(in[5], in[3], 0x0c0c0c0c, 2); + SWAPMOVE(in[7], in[3], 0x03030303, 4); + SWAPMOVE(in[4], in[2], 0x0c0c0c0c, 2); + SWAPMOVE(in[6], in[2], 0x03030303, 4); + SWAPMOVE(in[7], in[1], 0x03030303, 6); + SWAPMOVE(in[5], in[1], 0x0c0c0c0c, 4); + SWAPMOVE(in[3], in[1], 0x30303030, 2); + SWAPMOVE(in[6], in[0], 0x03030303, 6); + SWAPMOVE(in[4], in[0], 0x0c0c0c0c, 4); + SWAPMOVE(in[2], in[0], 0x30303030, 2); + SWAPMOVE(in[1], in[0], 0x55555555, 1); + SWAPMOVE(in[3], in[2], 0x55555555, 1); + SWAPMOVE(in[5], in[4], 0x55555555, 1); + SWAPMOVE(in[7], in[6], 0x55555555, 1); + LE_STORE(out, in[0]); + LE_STORE(out_bis, in[1]); + LE_STORE(out + 4, in[2]); + LE_STORE(out_bis + 4, in[3]); + LE_STORE(out + 8, in[4]); + LE_STORE(out_bis + 8, in[5]); + LE_STORE(out + 12, in[6]); + LE_STORE(out_bis + 12, in[7]); +} + + +//Apply the permutation in a bitsliced manner, twice +void permute_tk_2(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,14) & 0xcc00cc00; + tk[i] |= (tmp & 0x000000ff) << 16; + tk[i] |= (tmp & 0xcc000000)>> 2; + tk[i] |= (tmp & 0x0033cc00) >> 8; + tk[i] |= (tmp & 0x00cc0000) >>18; + } +} + +//Apply the permutation in a bitsliced manner, 4 times +void permute_tk_4(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,22) & 0xcc0000cc; + tk[i] |= ROR(tmp,16) & 0x3300cc00; + tk[i] |= ROR(tmp, 24) & 0x00cc3300; + tk[i] |= (tmp & 0x00cc00cc) >> 2; + } +} + +//Apply the permutation in a bitsliced manner, 6 times +void permute_tk_6(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,6) & 0xcccc0000; + tk[i] |= ROR(tmp,24) & 0x330000cc; + tk[i] |= ROR(tmp,10) & 0x3333; + tk[i] |= (tmp & 0xcc) << 14; + tk[i] |= (tmp & 0x3300) << 2; + } +} + +//Apply the permutation in a bitsliced manner, 8 times +void permute_tk_8(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0xcc000033; + tk[i] |= ROR(tmp,8) & 0x33cc0000; + tk[i] |= ROR(tmp,26) & 0x00333300; + tk[i] |= (tmp & 0x00333300) >> 6; + } +} + +//Apply the permutation in a bitsliced manner, 10 times +void permute_tk_10(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc330000; + tk[i] |= ROR(tmp,26) & 0x33000033; + tk[i] |= ROR(tmp,22) & 0x00cccc00; + tk[i] |= (tmp & 0x00330000) >> 14; + tk[i] |= (tmp & 0xcc00) >> 2; + } +} + +//Apply the permutation in a bitsliced manner, 12 times +void permute_tk_12(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,8) & 0xcc33; + tk[i] |= ROR(tmp,30) & 0x00cc00cc; + tk[i] |= ROR(tmp,10) & 0x33330000; + tk[i] |= ROR(tmp,16) & 0xcc003300; + } +} + +//Apply the permutation in a bitsliced manner, 14 times +void permute_tk_14(u32* tk) { + u32 tmp; + for(int i =0; i < 8; i++) { + tmp = tk[i]; + tk[i] = ROR(tmp,24) & 0x0033cc00; //red + tk[i] |= ROR(tmp,14) & 0x00cc0000; //green + tk[i] |= ROR(tmp,30) & 0xcc000000; //blue + tk[i] |= ROR(tmp,16) & 0x000000ff; //yellow + tk[i] |= ROR(tmp,18) & 0x33003300; //purp + } +} + +void precompute_lfsr_tk2(u32* tk, const u8* tk2_0, + const u8* tk2_1, const int rounds) { + u32 tmp; + u32 state[8]; + packing(state, tk2_0, tk2_1); + memcpy(tk, state, 32); + for(int i = 0 ; i < rounds; i+=2) { + LFSR2(state); + memcpy(tk+i*8+8, state, 32); + } +} + +void precompute_lfsr_tk3(u32* tk, const u8* tk3_0, + const u8* tk3_1, const int rounds) { + u32 tmp; + u32 state[8]; + packing(state, tk3_0, tk3_1); + for(int i = 0; i < 8; i++) + tk[i] ^= state[i]; + for(int i = 0 ; i < rounds; i+=2) { + LFSR3(state); + tk[i*8+8] ^= state[0]; + tk[i*8+9] ^= state[1]; + tk[i*8+10] ^= state[2]; + tk[i*8+11] ^= state[3]; + tk[i*8+12] ^= state[4]; + tk[i*8+13] ^= state[5]; + tk[i*8+14] ^= state[6]; + tk[i*8+15] ^= state[7]; + } +} + +/**************************************************************************** +* XOR with TK with TK1 before applying the permutations. +* The key is then rearranged to match the fixsliced representation. +****************************************************************************/ +void permute_tk(u32* tk, const u8* tk1_0, const u8* tk1_1, const int rounds) { + u32 test; + u32 tk1[8], tmp[8]; + packing(tk1, tk1_0, tk1_1); + memcpy(tmp, tk, 32); + XOR_BLOCK(tmp, tk1); + tk[0] = tmp[6] & 0xf0f0f0f0; //mask to extract rows 1&2 only + tk[1] = tmp[5] & 0xf0f0f0f0; + tk[2] = tmp[0] & 0xf0f0f0f0; + tk[3] = tmp[1] & 0xf0f0f0f0; + tk[4] = tmp[3] & 0xf0f0f0f0; + tk[5] = tmp[7] & 0xf0f0f0f0; + tk[6] = tmp[4] & 0xf0f0f0f0; + tk[7] = tmp[2] & 0xf0f0f0f0; + for(int i = 0 ; i < rounds; i+=8) { + test = (i % 16 < 8) ? 1 : 0; //to apply the right power of P + memcpy(tmp, tk+i*8+8, 32); + XOR_BLOCK(tmp, tk1); + if (test) + permute_tk_2(tmp); // applies P^2 + else + permute_tk_10(tmp); // applies P^10 + tk[i*8+8] = ROR(tmp[4],26) & 0xc3c3c3c3; //mask to extract rows 1&2 only + tk[i*8+9] = ROR(tmp[7],26) & 0xc3c3c3c3; //rotation to match fixslicing + tk[i*8+10] = ROR(tmp[6],26) & 0xc3c3c3c3; + tk[i*8+11] = ROR(tmp[5],26) & 0xc3c3c3c3; + tk[i*8+12] = ROR(tmp[1],26) & 0xc3c3c3c3; + tk[i*8+13] = ROR(tmp[2],26) & 0xc3c3c3c3; + tk[i*8+14] = ROR(tmp[3],26) & 0xc3c3c3c3; + tk[i*8+15] = ROR(tmp[0],26) & 0xc3c3c3c3; + tk[i*8+16] = ROR(tmp[3],28) & 0x03030303; //mask to extract rows 1&2 only + tk[i*8+16] |= ROR(tmp[3],12) & 0x0c0c0c0c; //rotation to match fixslicing + tk[i*8+17] = ROR(tmp[2],28) & 0x03030303; + tk[i*8+17] |= ROR(tmp[2],12) & 0x0c0c0c0c; + tk[i*8+18] = ROR(tmp[4],28) & 0x03030303; + tk[i*8+18] |= ROR(tmp[4],12) & 0x0c0c0c0c; + tk[i*8+19] = ROR(tmp[7],28) & 0x03030303; + tk[i*8+19] |= ROR(tmp[7],12) & 0x0c0c0c0c; + tk[i*8+20] = ROR(tmp[5],28) & 0x03030303; + tk[i*8+20] |= ROR(tmp[5],12) & 0x0c0c0c0c; + tk[i*8+21] = ROR(tmp[0],28) & 0x03030303; + tk[i*8+21] |= ROR(tmp[0],12) & 0x0c0c0c0c; + tk[i*8+22] = ROR(tmp[1],28) & 0x03030303; + tk[i*8+22] |= ROR(tmp[1],12) & 0x0c0c0c0c; + tk[i*8+23] = ROR(tmp[6],28) & 0x03030303; + tk[i*8+23] |= ROR(tmp[6],12) & 0x0c0c0c0c; + memcpy(tmp, tk+i*8+24, 32); + XOR_BLOCK(tmp, tk1); + if (test) + permute_tk_4(tmp); // applies P^4 + else + permute_tk_12(tmp); // applies P^12 + tk[i*8+24] = ROR(tmp[1],14) & 0x30303030; //mask to extract rows 1&2 only + tk[i*8+24] |= ROR(tmp[1],6) & 0x0c0c0c0c; //rotation to match fixslicing + tk[i*8+25] = ROR(tmp[0],14) & 0x30303030; + tk[i*8+25] |= ROR(tmp[0],6) & 0x0c0c0c0c; + tk[i*8+26] = ROR(tmp[3],14) & 0x30303030; + tk[i*8+26] |= ROR(tmp[3],6) & 0x0c0c0c0c; + tk[i*8+27] = ROR(tmp[2],14) & 0x30303030; + tk[i*8+27] |= ROR(tmp[2],6) & 0x0c0c0c0c; + tk[i*8+28] = ROR(tmp[7],14) & 0x30303030; + tk[i*8+28] |= ROR(tmp[7],6) & 0x0c0c0c0c; + tk[i*8+29] = ROR(tmp[6],14) & 0x30303030; + tk[i*8+29] |= ROR(tmp[6],6) & 0x0c0c0c0c; + tk[i*8+30] = ROR(tmp[5],14) & 0x30303030; + tk[i*8+30] |= ROR(tmp[5],6) & 0x0c0c0c0c; + tk[i*8+31] = ROR(tmp[4],14) & 0x30303030; + tk[i*8+31] |= ROR(tmp[4],6) & 0x0c0c0c0c; + tk[i*8+32] = ROR(tmp[6],16) & 0xf0f0f0f0; //mask to extract rows 1&2 only + tk[i*8+33] = ROR(tmp[5],16) & 0xf0f0f0f0; //rotation to match fixslicing + tk[i*8+34] = ROR(tmp[0],16) & 0xf0f0f0f0; + tk[i*8+35] = ROR(tmp[1],16) & 0xf0f0f0f0; + tk[i*8+36] = ROR(tmp[3],16) & 0xf0f0f0f0; + tk[i*8+37] = ROR(tmp[7],16) & 0xf0f0f0f0; + tk[i*8+38] = ROR(tmp[4],16) & 0xf0f0f0f0; + tk[i*8+39] = ROR(tmp[2],16) & 0xf0f0f0f0; + memcpy(tmp, tk+i*8+40, 32); + XOR_BLOCK(tmp, tk1); + if (test) + permute_tk_6(tmp); // applies P^6 + else + permute_tk_14(tmp); // applies P^14 + tk[i*8+40] = ROR(tmp[4],10) & 0xc3c3c3c3; //mask to extract rows 1&2 only + tk[i*8+41] = ROR(tmp[7],10) & 0xc3c3c3c3; //rotation to match fixslicing + tk[i*8+42] = ROR(tmp[6],10) & 0xc3c3c3c3; + tk[i*8+43] = ROR(tmp[5],10) & 0xc3c3c3c3; + tk[i*8+44] = ROR(tmp[1],10) & 0xc3c3c3c3; + tk[i*8+45] = ROR(tmp[2],10) & 0xc3c3c3c3; + tk[i*8+46] = ROR(tmp[3],10) & 0xc3c3c3c3; + tk[i*8+47] = ROR(tmp[0],10) & 0xc3c3c3c3; + tk[i*8+48] = ROR(tmp[3],12) & 0x03030303; //mask to extract rows 1&2 only + tk[i*8+48] |= ROR(tmp[3],28) & 0x0c0c0c0c; //rotation to match fixslicing + tk[i*8+49] = ROR(tmp[2],12) & 0x03030303; + tk[i*8+49] |= ROR(tmp[2],28) & 0x0c0c0c0c; + tk[i*8+50] = ROR(tmp[4],12) & 0x03030303; + tk[i*8+50] |= ROR(tmp[4],28) & 0x0c0c0c0c; + tk[i*8+51] = ROR(tmp[7],12) & 0x03030303; + tk[i*8+51] |= ROR(tmp[7],28) & 0x0c0c0c0c; + tk[i*8+52] = ROR(tmp[5],12) & 0x03030303; + tk[i*8+52] |= ROR(tmp[5],28) & 0x0c0c0c0c; + tk[i*8+53] = ROR(tmp[0],12) & 0x03030303; + tk[i*8+53] |= ROR(tmp[0],28) & 0x0c0c0c0c; + tk[i*8+54] = ROR(tmp[1],12) & 0x03030303; + tk[i*8+54] |= ROR(tmp[1],28) & 0x0c0c0c0c; + tk[i*8+55] = ROR(tmp[6],12) & 0x03030303; + tk[i*8+55] |= ROR(tmp[6],28) & 0x0c0c0c0c; + memcpy(tmp, tk+i*8+56, 32); + XOR_BLOCK(tmp, tk1); + if (test) + permute_tk_8(tmp); // applies P^8 + tk[i*8+56] = ROR(tmp[1],30) & 0x30303030; //mask to extract rows 1&2 only + tk[i*8+56] |= ROR(tmp[1],22) & 0x0c0c0c0c; //rotation to match fixslicing + tk[i*8+57] = ROR(tmp[0],30) & 0x30303030; + tk[i*8+57] |= ROR(tmp[0],22) & 0x0c0c0c0c; + tk[i*8+58] = ROR(tmp[3],30) & 0x30303030; + tk[i*8+58] |= ROR(tmp[3],22) & 0x0c0c0c0c; + tk[i*8+59] = ROR(tmp[2],30) & 0x30303030; + tk[i*8+59] |= ROR(tmp[2],22) & 0x0c0c0c0c; + tk[i*8+60] = ROR(tmp[7],30) & 0x30303030; + tk[i*8+60] |= ROR(tmp[7],22) & 0x0c0c0c0c; + tk[i*8+61] = ROR(tmp[6],30) & 0x30303030; + tk[i*8+61] |= ROR(tmp[6],22) & 0x0c0c0c0c; + tk[i*8+62] = ROR(tmp[5],30) & 0x30303030; + tk[i*8+62] |= ROR(tmp[5],22) & 0x0c0c0c0c; + tk[i*8+63] = ROR(tmp[4],30) & 0x30303030; + tk[i*8+63] |= ROR(tmp[4],22) & 0x0c0c0c0c; + //if (test && (i+8 < rounds)) { //only if next loop iteration + if (i+8 < rounds) { //only if next loop iteration + tk[i*8+64] = tmp[6] & 0xf0f0f0f0; //mask to extract rows 1&2 only + tk[i*8+65] = tmp[5] & 0xf0f0f0f0; + tk[i*8+66] = tmp[0] & 0xf0f0f0f0; + tk[i*8+67] = tmp[1] & 0xf0f0f0f0; + tk[i*8+68] = tmp[3] & 0xf0f0f0f0; + tk[i*8+69] = tmp[7] & 0xf0f0f0f0; + tk[i*8+70] = tmp[4] & 0xf0f0f0f0; + tk[i*8+71] = tmp[2] & 0xf0f0f0f0; + } + } +} + +//Precompute LFSR2(TK2) ^ LFSR3(TK3) ^ rconst +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8 * tk3, int rounds) { + memset(rtk, 0x00, 32*rounds); + precompute_lfsr_tk2(rtk, tk2, tk2, rounds); + precompute_lfsr_tk3(rtk, tk3, tk3, rounds); + permute_tk(rtk, (u8*)(rtk+16), (u8*)(rtk+16), rounds); // rtk+16 is NULL + for(int i = 0; i < rounds; i++) { // add rconsts + for(int j = 0; j < 8; j++) + rtk[i*8+j] ^= rconst_32_bs[i*8+j]; + } +} + +//Precompute TK1 +void precompute_rtk1(u32* rtk1, const u8* tk1, const u8* tk1_bis) { + memset(rtk1, 0x00, 32*16); + permute_tk(rtk1, tk1, tk1_bis, 16); +} diff --git a/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.h b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.h new file mode 100644 index 0000000..29a2ddb --- /dev/null +++ b/skinny/Implementations/crypto_aead/skinnyaeadtk3128128+v1/opt32_2/tk_schedule.h @@ -0,0 +1,72 @@ +#ifndef TK_SCHEDULE_BS_H_ +#define TK_SCHEDULE_BS_H_ + +typedef unsigned char u8; +typedef unsigned int u32; + +typedef struct { + u32 rtk1[8*16]; + u32 rtk2_3[8*40]; +} tweakey; + +void packing(u32* out, const u8* block0, const u8* block1); +void unpacking(u8* out, u8* out_bis, u32 *in); +void precompute_rtk2_3(u32* rtk, const u8* tk2, const u8* tk3, int rounds); +void precompute_rtk1(u32* rtk1, const u8* tk1, const u8* tk1_bis); + +#define LFSR2(tk) ({ \ + tmp = (tk)[0] ^ (tk)[2]; \ + (tk)[0] = (tk)[1]; \ + (tk)[1] = (tk)[2]; \ + (tk)[2] = (tk)[3]; \ + (tk)[3] = (tk)[4]; \ + (tk)[4] = (tk)[5]; \ + (tk)[5] = (tk)[6]; \ + (tk)[6] = (tk)[7]; \ + (tk)[7] = tmp; \ +}) + +#define LFSR3(tk) ({ \ + tmp = (tk)[7] ^ (tk)[1]; \ + (tk)[7] = (tk)[6]; \ + (tk)[6] = (tk)[5]; \ + (tk)[5] = (tk)[4]; \ + (tk)[4] = (tk)[3]; \ + (tk)[3] = (tk)[2]; \ + (tk)[2] = (tk)[1]; \ + (tk)[1] = (tk)[0]; \ + (tk)[0] = tmp; \ +}) + +#define XOR_BLOCK(x,y) ({ \ + (x)[0] ^= (y)[0]; \ + (x)[1] ^= (y)[1]; \ + (x)[2] ^= (y)[2]; \ + (x)[3] ^= (y)[3]; \ + (x)[4] ^= (y)[4]; \ + (x)[5] ^= (y)[5]; \ + (x)[6] ^= (y)[6]; \ + (x)[7] ^= (y)[7]; \ +}) + +#define SWAPMOVE(a, b, mask, n) ({ \ + tmp = (b ^ (a >> n)) & mask; \ + b ^= tmp; \ + a ^= (tmp << n); \ +}) + +#define LE_LOAD(x, y) \ + *(x) = (((u32)(y)[3] << 24) | \ + ((u32)(y)[2] << 16) | \ + ((u32)(y)[1] << 8) | \ + (y)[0]); + +#define LE_STORE(x, y) \ + (x)[0] = (y) & 0xff; \ + (x)[1] = ((y) >> 8) & 0xff; \ + (x)[2] = ((y) >> 16) & 0xff; \ + (x)[3] = (y) >> 24; + +#define ROR(x,y) (((x) >> (y)) | ((x) << (32 - (y)))) + +#endif // TK_SCHEDULE_BS_H_ \ No newline at end of file -- libgit2 0.26.0