Функция f(A,B).
Сильно нелинейная функция f(A,B) имеет два 64 - битных входных значения A и B, которые обрабатываются с использованием двух "слоев" S - блоков с высочайшей степенью нелинейности для получения 64 - битного выхода . Испльзуются две перестановки для гарантии максимального лавинного эффекта между всеми битами функции.
Основное новшество в предлагаемой мною разработке - это использование двух уровней S-P петли вместо одного , как в большинстве других существующих сейчас шифров Фейстеля .Оно используется как для обеспечения максимального желаемого лавинного эффекта , так и для того чтобы минимизировать возможность существования подходящих разностных и линейных характеристик (для осуществления атак).Наличие ключевой перестановки на входе функции , перенаправляющее различные входы S - блоков, гарантирует, что предугадать то, в какой S - блок попадет отдельный входной бит , - весьма сложно . Это увеличивает сложность получения любой полезной для атаки характеристики.
 
Данная функция выглядит следующим образом :
f(A,B) = Sb ( P ( Sa ( E ( KP ( A,B ) ) ) ), B)

Графически это выглядит так :

В деталях, различные составляющие операций таковы :
KP()
очень простая ключевая перестановка , которая разбивает 64 - битный вход А на два 32 - битных слова , и использует нижние ( т.е. наиболее значимые ) 32 бита входа В , чтобы определить необходимо ли поменять соответствующие пары битов в этих словах (если бит ключа 1), или же нет (если бит ключа 0) , похожая на ту ,что используется в ICE [Kwan97]. Может быть вычислено как :
KP([Al|Ar],SKr) = [((Al & ~SKr)|(Ar & SKr)) | ((Ar & ~SKr)|(Al & SKr))]
E()
Расширяющая функция , похожая на соответствующую в LOKI91,но измененная в плане более быстрого выполнения , которая разбивает на пересекающиеся группы по 13 или 11 бит (S1 или S2 соответственно ), так что по крайней мере несколько бит влияют на два S - блока одновременно, и, с учетом предыдущего сложения, это означает ,что все биты имеют некоторое влияние на множество S - блоков. Таким образом, Е распределяет 64 бита входного значения на 96 битов выходного : 
[4-0,63-56|58-48|52-40|42-32|34-24|28-16|18-8|12-0]. 
Sa(), Sb()
две колонки S - блоков , выполненных просто конкатенацией блоков S1 и S2 (описанных ниже) , так что
Sa() = [S1,S2,S1,S2,S2,S1,S2,S1] и Sb()=[S2,S2,S1,S1,S2,S2,S1,S1]. 
В Sa() входы смешаны (вход + ключ из выхода Е), а в Sb() верхние биты - это только ключевые биты (из нижних , более значимых 32 битов В) .
Р()
перестановка, рассеивающая выходы  S - блоков полностью по 64 - битной длине , используя регулярный шаблон латинского квадрата, похожий на LOKI91, но с такими незначительными изменениями, что один и тот же выход никогда не войдет в соответствующий вход . Р распределяет входные биты [63-0] так: 
[56,48,40,32,24,16,08,00,57,49,41,33,25,17,09,01,
58,50,42,34,26,18,10,02,59,51,43,35,27,19,11,03,
60,52,44,36,28,20,12,04,61,53,45,37,29,21,13,05,
62,54,46,38,30,22,14,06,63,55,47,39,31,23,15,07]
Я полагаю, что эта функция будет выполнима с 24 табличными заданиями(8 на каждый из Sa,P и Sb) , плюс несколько and-ов, or-ов, xor-ов , сдвигов и сложений на каждый цикл .Это сделает ее выполнение реально быстрым и эффективным .