/*
 * Cryptographic API.
 *
 * Anubis Algorithm
 *
 * The Anubis algorithm was developed by Paulo S. L. M. Barreto and
 * Vincent Rijmen.
 *
 * See
 *
 *	P.S.L.M. Barreto, V. Rijmen,
 *	``The Anubis block cipher,''
 *	NESSIE submission, 2000.
 *
 * This software implements the "tweaked" version of Anubis.
 * Only the S-box and (consequently) the rounds constants have been
 * changed.
 *
 * The original authors have disclaimed all copyright interest in this
 * code and thus put it in the public domain. The subsequent authors
 * have put this under the GNU General Public License.
 *
 * By Aaron Grothe ajgrothe@yahoo.com, October 28, 2004
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 */

#include <linux/init.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <asm/byteorder.h>
#include <linux/crypto.h>
#include <linux/types.h>

#define ANUBIS_MIN_KEY_SIZE	16
#define ANUBIS_MAX_KEY_SIZE	40
#define ANUBIS_BLOCK_SIZE	16
#define ANUBIS_MAX_N		10
#define ANUBIS_MAX_ROUNDS	(8 + ANUBIS_MAX_N)

struct anubis_ctx {
	int key_len; // in bits
	int R;
	u32 E[ANUBIS_MAX_ROUNDS + 1][4];
	u32 D[ANUBIS_MAX_ROUNDS + 1][4];
};

static const u32 T0[256] = {
	0xba69d2bbU, 0x54a84de5U, 0x2f5ebce2U, 0x74e8cd25U,
	0x53a651f7U, 0xd3bb6bd0U, 0xd2b96fd6U, 0x4d9a29b3U,
	0x50a05dfdU, 0xac458acfU, 0x8d070e09U, 0xbf63c6a5U,
	0x70e0dd3dU, 0x52a455f1U, 0x9a29527bU, 0x4c982db5U,
	0xeac98f46U, 0xd5b773c4U, 0x97336655U, 0xd1bf63dcU,
	0x3366ccaaU, 0x51a259fbU, 0x5bb671c7U, 0xa651a2f3U,
	0xdea15ffeU, 0x48903dadU, 0xa84d9ad7U, 0x992f5e71U,
	0xdbab4be0U, 0x3264c8acU, 0xb773e695U, 0xfce5d732U,
	0xe3dbab70U, 0x9e214263U, 0x913f7e41U, 0x9b2b567dU,
	0xe2d9af76U, 0xbb6bd6bdU, 0x4182199bU, 0x6edca579U,
	0xa557aef9U, 0xcb8b0b80U, 0x6bd6b167U, 0x95376e59U,
	0xa15fbee1U, 0xf3fbeb10U, 0xb17ffe81U, 0x0204080cU,
	0xcc851792U, 0xc49537a2U, 0x1d3a744eU, 0x14285078U,
	0xc39b2bb0U, 0x63c69157U, 0xdaa94fe6U, 0x5dba69d3U,
	0x5fbe61dfU, 0xdca557f2U, 0x7dfae913U, 0xcd871394U,
	0x7ffee11fU, 0x5ab475c1U, 0x6cd8ad75U, 0x5cb86dd5U,
	0xf7f3fb08U, 0x264c98d4U, 0xffe3db38U, 0xedc79354U,
	0xe8cd874aU, 0x9d274e69U, 0x6fdea17fU, 0x8e010203U,
	0x19326456U, 0xa05dbae7U, 0xf0fde71aU, 0x890f1e11U,
	0x0f1e3c22U, 0x070e1c12U, 0xaf4386c5U, 0xfbebcb20U,
	0x08102030U, 0x152a547eU, 0x0d1a342eU, 0x04081018U,
	0x01020406U, 0x64c88d45U, 0xdfa35bf8U, 0x76ecc529U,
	0x79f2f90bU, 0xdda753f4U, 0x3d7af48eU, 0x162c5874U,
	0x3f7efc82U, 0x376edcb2U, 0x6ddaa973U, 0x3870e090U,
	0xb96fdeb1U, 0x73e6d137U, 0xe9cf834cU, 0x356ad4beU,
	0x55aa49e3U, 0x71e2d93bU, 0x7bf6f107U, 0x8c050a0fU,
	0x72e4d531U, 0x880d1a17U, 0xf6f1ff0eU, 0x2a54a8fcU,
	0x3e7cf884U, 0x5ebc65d9U, 0x274e9cd2U, 0x468c0589U,
	0x0c183028U, 0x65ca8943U, 0x68d0bd6dU, 0x61c2995bU,
	0x03060c0aU, 0xc19f23bcU, 0x57ae41efU, 0xd6b17fceU,
	0xd9af43ecU, 0x58b07dcdU, 0xd8ad47eaU, 0x66cc8549U,
	0xd7b37bc8U, 0x3a74e89cU, 0xc88d078aU, 0x3c78f088U,
	0xfae9cf26U, 0x96316253U, 0xa753a6f5U, 0x982d5a77U,
	0xecc59752U, 0xb86ddab7U, 0xc7933ba8U, 0xae4182c3U,
	0x69d2b96bU, 0x4b9631a7U, 0xab4b96ddU, 0xa94f9ed1U,
	0x67ce814fU, 0x0a14283cU, 0x478e018fU, 0xf2f9ef16U,
	0xb577ee99U, 0x224488ccU, 0xe5d7b364U, 0xeec19f5eU,
	0xbe61c2a3U, 0x2b56acfaU, 0x811f3e21U, 0x1224486cU,
	0x831b362dU, 0x1b366c5aU, 0x0e1c3824U, 0x23468ccaU,
	0xf5f7f304U, 0x458a0983U, 0x214284c6U, 0xce811f9eU,
	0x499239abU, 0x2c58b0e8U, 0xf9efc32cU, 0xe6d1bf6eU,
	0xb671e293U, 0x2850a0f0U, 0x172e5c72U, 0x8219322bU,
	0x1a34685cU, 0x8b0b161dU, 0xfee1df3eU, 0x8a09121bU,
	0x09122436U, 0xc98f038cU, 0x87132635U, 0x4e9c25b9U,
	0xe1dfa37cU, 0x2e5cb8e4U, 0xe4d5b762U, 0xe0dda77aU,
	0xebcb8b40U, 0x903d7a47U, 0xa455aaffU, 0x1e3c7844U,
	0x85172e39U, 0x60c09d5dU, 0x00000000U, 0x254a94deU,
	0xf4f5f702U, 0xf1ffe31cU, 0x94356a5fU, 0x0b162c3aU,
	0xe7d3bb68U, 0x75eac923U, 0xefc39b58U, 0x3468d0b8U,
	0x3162c4a6U, 0xd4b577c2U, 0xd0bd67daU, 0x86112233U,
	0x7efce519U, 0xad478ec9U, 0xfde7d334U, 0x2952a4f6U,
	0x3060c0a0U, 0x3b76ec9aU, 0x9f234665U, 0xf8edc72aU,
	0xc6913faeU, 0x13264c6aU, 0x060c1814U, 0x050a141eU,
	0xc59733a4U, 0x11224466U, 0x77eec12fU, 0x7cf8ed15U,
	0x7af4f501U, 0x78f0fd0dU, 0x366cd8b4U, 0x1c387048U,
	0x3972e496U, 0x59b279cbU, 0x18306050U, 0x56ac45e9U,
	0xb37bf68dU, 0xb07dfa87U, 0x244890d8U, 0x204080c0U,
	0xb279f28bU, 0x9239724bU, 0xa35bb6edU, 0xc09d27baU,
	0x44880d85U, 0x62c49551U, 0x10204060U, 0xb475ea9fU,
	0x84152a3fU, 0x43861197U, 0x933b764dU, 0xc2992fb6U,
	0x4a9435a1U, 0xbd67cea9U, 0x8f030605U, 0x2d5ab4eeU,
	0xbc65caafU, 0x9c254a6fU, 0x6ad4b561U, 0x40801d9dU,
	0xcf831b98U, 0xa259b2ebU, 0x801d3a27U, 0x4f9e21bfU,
	0x1f3e7c42U, 0xca890f86U, 0xaa4992dbU, 0x42841591U,
};

static const u32 T1[256] = {
	0x69babbd2U, 0xa854e54dU, 0x5e2fe2bcU, 0xe87425cdU,
	0xa653f751U, 0xbbd3d06bU, 0xb9d2d66fU, 0x9a4db329U,
	0xa050fd5dU, 0x45accf8aU, 0x078d090eU, 0x63bfa5c6U,
	0xe0703dddU, 0xa452f155U, 0x299a7b52U, 0x984cb52dU,
	0xc9ea468fU, 0xb7d5c473U, 0x33975566U, 0xbfd1dc63U,
	0x6633aaccU, 0xa251fb59U, 0xb65bc771U, 0x51a6f3a2U,
	0xa1defe5fU, 0x9048ad3dU, 0x4da8d79aU, 0x2f99715eU,
	0xabdbe04bU, 0x6432acc8U, 0x73b795e6U, 0xe5fc32d7U,
	0xdbe370abU, 0x219e6342U, 0x3f91417eU, 0x2b9b7d56U,
	0xd9e276afU, 0x6bbbbdd6U, 0x82419b19U, 0xdc6e79a5U,
	0x57a5f9aeU, 0x8bcb800bU, 0xd66b67b1U, 0x3795596eU,
	0x5fa1e1beU, 0xfbf310ebU, 0x7fb181feU, 0x04020c08U,
	0x85cc9217U, 0x95c4a237U, 0x3a1d4e74U, 0x28147850U,
	0x9bc3b02bU, 0xc6635791U, 0xa9dae64fU, 0xba5dd369U,
	0xbe5fdf61U, 0xa5dcf257U, 0xfa7d13e9U, 0x87cd9413U,
	0xfe7f1fe1U, 0xb45ac175U, 0xd86c75adU, 0xb85cd56dU,
	0xf3f708fbU, 0x4c26d498U, 0xe3ff38dbU, 0xc7ed5493U,
	0xcde84a87U, 0x279d694eU, 0xde6f7fa1U, 0x018e0302U,
	0x32195664U, 0x5da0e7baU, 0xfdf01ae7U, 0x0f89111eU,
	0x1e0f223cU, 0x0e07121cU, 0x43afc586U, 0xebfb20cbU,
	0x10083020U, 0x2a157e54U, 0x1a0d2e34U, 0x08041810U,
	0x02010604U, 0xc864458dU, 0xa3dff85bU, 0xec7629c5U,
	0xf2790bf9U, 0xa7ddf453U, 0x7a3d8ef4U, 0x2c167458U,
	0x7e3f82fcU, 0x6e37b2dcU, 0xda6d73a9U, 0x703890e0U,
	0x6fb9b1deU, 0xe67337d1U, 0xcfe94c83U, 0x6a35bed4U,
	0xaa55e349U, 0xe2713bd9U, 0xf67b07f1U, 0x058c0f0aU,
	0xe47231d5U, 0x0d88171aU, 0xf1f60effU, 0x542afca8U,
	0x7c3e84f8U, 0xbc5ed965U, 0x4e27d29cU, 0x8c468905U,
	0x180c2830U, 0xca654389U, 0xd0686dbdU, 0xc2615b99U,
	0x06030a0cU, 0x9fc1bc23U, 0xae57ef41U, 0xb1d6ce7fU,
	0xafd9ec43U, 0xb058cd7dU, 0xadd8ea47U, 0xcc664985U,
	0xb3d7c87bU, 0x743a9ce8U, 0x8dc88a07U, 0x783c88f0U,
	0xe9fa26cfU, 0x31965362U, 0x53a7f5a6U, 0x2d98775aU,
	0xc5ec5297U, 0x6db8b7daU, 0x93c7a83bU, 0x41aec382U,
	0xd2696bb9U, 0x964ba731U, 0x4babdd96U, 0x4fa9d19eU,
	0xce674f81U, 0x140a3c28U, 0x8e478f01U, 0xf9f216efU,
	0x77b599eeU, 0x4422cc88U, 0xd7e564b3U, 0xc1ee5e9fU,
	0x61bea3c2U, 0x562bfaacU, 0x1f81213eU, 0x24126c48U,
	0x1b832d36U, 0x361b5a6cU, 0x1c0e2438U, 0x4623ca8cU,
	0xf7f504f3U, 0x8a458309U, 0x4221c684U, 0x81ce9e1fU,
	0x9249ab39U, 0x582ce8b0U, 0xeff92cc3U, 0xd1e66ebfU,
	0x71b693e2U, 0x5028f0a0U, 0x2e17725cU, 0x19822b32U,
	0x341a5c68U, 0x0b8b1d16U, 0xe1fe3edfU, 0x098a1b12U,
	0x12093624U, 0x8fc98c03U, 0x13873526U, 0x9c4eb925U,
	0xdfe17ca3U, 0x5c2ee4b8U, 0xd5e462b7U, 0xdde07aa7U,
	0xcbeb408bU, 0x3d90477aU, 0x55a4ffaaU, 0x3c1e4478U,
	0x1785392eU, 0xc0605d9dU, 0x00000000U, 0x4a25de94U,
	0xf5f402f7U, 0xfff11ce3U, 0x35945f6aU, 0x160b3a2cU,
	0xd3e768bbU, 0xea7523c9U, 0xc3ef589bU, 0x6834b8d0U,
	0x6231a6c4U, 0xb5d4c277U, 0xbdd0da67U, 0x11863322U,
	0xfc7e19e5U, 0x47adc98eU, 0xe7fd34d3U, 0x5229f6a4U,
	0x6030a0c0U, 0x763b9aecU, 0x239f6546U, 0xedf82ac7U,
	0x91c6ae3fU, 0x26136a4cU, 0x0c061418U, 0x0a051e14U,
	0x97c5a433U, 0x22116644U, 0xee772fc1U, 0xf87c15edU,
	0xf47a01f5U, 0xf0780dfdU, 0x6c36b4d8U, 0x381c4870U,
	0x723996e4U, 0xb259cb79U, 0x30185060U, 0xac56e945U,
	0x7bb38df6U, 0x7db087faU, 0x4824d890U, 0x4020c080U,
	0x79b28bf2U, 0x39924b72U, 0x5ba3edb6U, 0x9dc0ba27U,
	0x8844850dU, 0xc4625195U, 0x20106040U, 0x75b49feaU,
	0x15843f2aU, 0x86439711U, 0x3b934d76U, 0x99c2b62fU,
	0x944aa135U, 0x67bda9ceU, 0x038f0506U, 0x5a2deeb4U,
	0x65bcafcaU, 0x259c6f4aU, 0xd46a61b5U, 0x80409d1dU,
	0x83cf981bU, 0x59a2ebb2U, 0x1d80273aU, 0x9e4fbf21U,
	0x3e1f427cU, 0x89ca860fU, 0x49aadb92U, 0x84429115U,
};

static const u32 T2[256] = {
	0xd2bbba69U, 0x4de554a8U, 0xbce22f5eU, 0xcd2574e8U,
	0x51f753a6U, 0x6bd0d3bbU, 0x6fd6d2b9U, 0x29b34d9aU,
	0x5dfd50a0U, 0x8acfac45U, 0x0e098d07U, 0xc6a5bf63U,
	0xdd3d70e0U, 0x55f152a4U, 0x527b9a29U, 0x2db54c98U,
	0x8f46eac9U, 0x73c4d5b7U, 0x66559733U, 0x63dcd1bfU,
	0xccaa3366U, 0x59fb51a2U, 0x71c75bb6U, 0xa2f3a651U,
	0x5ffedea1U, 0x3dad4890U, 0x9ad7a84dU, 0x5e71992fU,
	0x4be0dbabU, 0xc8ac3264U, 0xe695b773U, 0xd732fce5U,
	0xab70e3dbU, 0x42639e21U, 0x7e41913fU, 0x567d9b2bU,
	0xaf76e2d9U, 0xd6bdbb6bU, 0x199b4182U, 0xa5796edcU,
	0xaef9a557U, 0x0b80cb8bU, 0xb1676bd6U, 0x6e599537U,
	0xbee1a15fU, 0xeb10f3fbU, 0xfe81b17fU, 0x080c0204U,
	0x1792cc85U, 0x37a2c495U, 0x744e1d3aU, 0x50781428U,
	0x2bb0c39bU, 0x915763c6U, 0x4fe6daa9U, 0x69d35dbaU,
	0x61df5fbeU, 0x57f2dca5U, 0xe9137dfaU, 0x1394cd87U,
	0xe11f7ffeU, 0x75c15ab4U, 0xad756cd8U, 0x6dd55cb8U,
	0xfb08f7f3U, 0x98d4264cU, 0xdb38ffe3U, 0x9354edc7U,
	0x874ae8cdU, 0x4e699d27U, 0xa17f6fdeU, 0x02038e01U,
	0x64561932U, 0xbae7a05dU, 0xe71af0fdU, 0x1e11890fU,
	0x3c220f1eU, 0x1c12070eU, 0x86c5af43U, 0xcb20fbebU,
	0x20300810U, 0x547e152aU, 0x342e0d1aU, 0x10180408U,
	0x04060102U, 0x8d4564c8U, 0x5bf8dfa3U, 0xc52976ecU,
	0xf90b79f2U, 0x53f4dda7U, 0xf48e3d7aU, 0x5874162cU,
	0xfc823f7eU, 0xdcb2376eU, 0xa9736ddaU, 0xe0903870U,
	0xdeb1b96fU, 0xd13773e6U, 0x834ce9cfU, 0xd4be356aU,
	0x49e355aaU, 0xd93b71e2U, 0xf1077bf6U, 0x0a0f8c05U,
	0xd53172e4U, 0x1a17880dU, 0xff0ef6f1U, 0xa8fc2a54U,
	0xf8843e7cU, 0x65d95ebcU, 0x9cd2274eU, 0x0589468cU,
	0x30280c18U, 0x894365caU, 0xbd6d68d0U, 0x995b61c2U,
	0x0c0a0306U, 0x23bcc19fU, 0x41ef57aeU, 0x7fced6b1U,
	0x43ecd9afU, 0x7dcd58b0U, 0x47ead8adU, 0x854966ccU,
	0x7bc8d7b3U, 0xe89c3a74U, 0x078ac88dU, 0xf0883c78U,
	0xcf26fae9U, 0x62539631U, 0xa6f5a753U, 0x5a77982dU,
	0x9752ecc5U, 0xdab7b86dU, 0x3ba8c793U, 0x82c3ae41U,
	0xb96b69d2U, 0x31a74b96U, 0x96ddab4bU, 0x9ed1a94fU,
	0x814f67ceU, 0x283c0a14U, 0x018f478eU, 0xef16f2f9U,
	0xee99b577U, 0x88cc2244U, 0xb364e5d7U, 0x9f5eeec1U,
	0xc2a3be61U, 0xacfa2b56U, 0x3e21811fU, 0x486c1224U,
	0x362d831bU, 0x6c5a1b36U, 0x38240e1cU, 0x8cca2346U,
	0xf304f5f7U, 0x0983458aU, 0x84c62142U, 0x1f9ece81U,
	0x39ab4992U, 0xb0e82c58U, 0xc32cf9efU, 0xbf6ee6d1U,
	0xe293b671U, 0xa0f02850U, 0x5c72172eU, 0x322b8219U,
	0x685c1a34U, 0x161d8b0bU, 0xdf3efee1U, 0x121b8a09U,
	0x24360912U, 0x038cc98fU, 0x26358713U, 0x25b94e9cU,
	0xa37ce1dfU, 0xb8e42e5cU, 0xb762e4d5U, 0xa77ae0ddU,
	0x8b40ebcbU, 0x7a47903dU, 0xaaffa455U, 0x78441e3cU,
	0x2e398517U, 0x9d5d60c0U, 0x00000000U, 0x94de254aU,
	0xf702f4f5U, 0xe31cf1ffU, 0x6a5f9435U, 0x2c3a0b16U,
	0xbb68e7d3U, 0xc92375eaU, 0x9b58efc3U, 0xd0b83468U,
	0xc4a63162U, 0x77c2d4b5U, 0x67dad0bdU, 0x22338611U,
	0xe5197efcU, 0x8ec9ad47U, 0xd334fde7U, 0xa4f62952U,
	0xc0a03060U, 0xec9a3b76U, 0x46659f23U, 0xc72af8edU,
	0x3faec691U, 0x4c6a1326U, 0x1814060cU, 0x141e050aU,
	0x33a4c597U, 0x44661122U, 0xc12f77eeU, 0xed157cf8U,
	0xf5017af4U, 0xfd0d78f0U, 0xd8b4366cU, 0x70481c38U,
	0xe4963972U, 0x79cb59b2U, 0x60501830U, 0x45e956acU,
	0xf68db37bU, 0xfa87b07dU, 0x90d82448U, 0x80c02040U,
	0xf28bb279U, 0x724b9239U, 0xb6eda35bU, 0x27bac09dU,
	0x0d854488U, 0x955162c4U, 0x40601020U, 0xea9fb475U,
	0x2a3f8415U, 0x11974386U, 0x764d933bU, 0x2fb6c299U,
	0x35a14a94U, 0xcea9bd67U, 0x06058f03U, 0xb4ee2d5aU,
	0xcaafbc65U, 0x4a6f9c25U, 0xb5616ad4U, 0x1d9d4080U,
	0x1b98cf83U, 0xb2eba259U, 0x3a27801dU, 0x21bf4f9eU,
	0x7c421f3eU, 0x0f86ca89U, 0x92dbaa49U, 0x15914284U,
};

static const u32 T3[256] = {
	0xbbd269baU, 0xe54da854U, 0xe2bc5e2fU, 0x25cde874U,
	0xf751a653U, 0xd06bbbd3U, 0xd66fb9d2U, 0xb3299a4dU,
	0xfd5da050U, 0xcf8a45acU, 0x090e078dU, 0xa5c663bfU,
	0x3ddde070U, 0xf155a452U, 0x7b52299aU, 0xb52d984cU,
	0x468fc9eaU, 0xc473b7d5U, 0x55663397U, 0xdc63bfd1U,
	0xaacc6633U, 0xfb59a251U, 0xc771b65bU, 0xf3a251a6U,
	0xfe5fa1deU, 0xad3d9048U, 0xd79a4da8U, 0x715e2f99U,
	0xe04babdbU, 0xacc86432U, 0x95e673b7U, 0x32d7e5fcU,
	0x70abdbe3U, 0x6342219eU, 0x417e3f91U, 0x7d562b9bU,
	0x76afd9e2U, 0xbdd66bbbU, 0x9b198241U, 0x79a5dc6eU,
	0xf9ae57a5U, 0x800b8bcbU, 0x67b1d66bU, 0x596e3795U,
	0xe1be5fa1U, 0x10ebfbf3U, 0x81fe7fb1U, 0x0c080402U,
	0x921785ccU, 0xa23795c4U, 0x4e743a1dU, 0x78502814U,
	0xb02b9bc3U, 0x5791c663U, 0xe64fa9daU, 0xd369ba5dU,
	0xdf61be5fU, 0xf257a5dcU, 0x13e9fa7dU, 0x941387cdU,
	0x1fe1fe7fU, 0xc175b45aU, 0x75add86cU, 0xd56db85cU,
	0x08fbf3f7U, 0xd4984c26U, 0x38dbe3ffU, 0x5493c7edU,
	0x4a87cde8U, 0x694e279dU, 0x7fa1de6fU, 0x0302018eU,
	0x56643219U, 0xe7ba5da0U, 0x1ae7fdf0U, 0x111e0f89U,
	0x223c1e0fU, 0x121c0e07U, 0xc58643afU, 0x20cbebfbU,
	0x30201008U, 0x7e542a15U, 0x2e341a0dU, 0x18100804U,
	0x06040201U, 0x458dc864U, 0xf85ba3dfU, 0x29c5ec76U,
	0x0bf9f279U, 0xf453a7ddU, 0x8ef47a3dU, 0x74582c16U,
	0x82fc7e3fU, 0xb2dc6e37U, 0x73a9da6dU, 0x90e07038U,
	0xb1de6fb9U, 0x37d1e673U, 0x4c83cfe9U, 0xbed46a35U,
	0xe349aa55U, 0x3bd9e271U, 0x07f1f67bU, 0x0f0a058cU,
	0x31d5e472U, 0x171a0d88U, 0x0efff1f6U, 0xfca8542aU,
	0x84f87c3eU, 0xd965bc5eU, 0xd29c4e27U, 0x89058c46U,
	0x2830180cU, 0x4389ca65U, 0x6dbdd068U, 0x5b99c261U,
	0x0a0c0603U, 0xbc239fc1U, 0xef41ae57U, 0xce7fb1d6U,
	0xec43afd9U, 0xcd7db058U, 0xea47add8U, 0x4985cc66U,
	0xc87bb3d7U, 0x9ce8743aU, 0x8a078dc8U, 0x88f0783cU,
	0x26cfe9faU, 0x53623196U, 0xf5a653a7U, 0x775a2d98U,
	0x5297c5ecU, 0xb7da6db8U, 0xa83b93c7U, 0xc38241aeU,
	0x6bb9d269U, 0xa731964bU, 0xdd964babU, 0xd19e4fa9U,
	0x4f81ce67U, 0x3c28140aU, 0x8f018e47U, 0x16eff9f2U,
	0x99ee77b5U, 0xcc884422U, 0x64b3d7e5U, 0x5e9fc1eeU,
	0xa3c261beU, 0xfaac562bU, 0x213e1f81U, 0x6c482412U,
	0x2d361b83U, 0x5a6c361bU, 0x24381c0eU, 0xca8c4623U,
	0x04f3f7f5U, 0x83098a45U, 0xc6844221U, 0x9e1f81ceU,
	0xab399249U, 0xe8b0582cU, 0x2cc3eff9U, 0x6ebfd1e6U,
	0x93e271b6U, 0xf0a05028U, 0x725c2e17U, 0x2b321982U,
	0x5c68341aU, 0x1d160b8bU, 0x3edfe1feU, 0x1b12098aU,
	0x36241209U, 0x8c038fc9U, 0x35261387U, 0xb9259c4eU,
	0x7ca3dfe1U, 0xe4b85c2eU, 0x62b7d5e4U, 0x7aa7dde0U,
	0x408bcbebU, 0x477a3d90U, 0xffaa55a4U, 0x44783c1eU,
	0x392e1785U, 0x5d9dc060U, 0x00000000U, 0xde944a25U,
	0x02f7f5f4U, 0x1ce3fff1U, 0x5f6a3594U, 0x3a2c160bU,
	0x68bbd3e7U, 0x23c9ea75U, 0x589bc3efU, 0xb8d06834U,
	0xa6c46231U, 0xc277b5d4U, 0xda67bdd0U, 0x33221186U,
	0x19e5fc7eU, 0xc98e47adU, 0x34d3e7fdU, 0xf6a45229U,
	0xa0c06030U, 0x9aec763bU, 0x6546239fU, 0x2ac7edf8U,
	0xae3f91c6U, 0x6a4c2613U, 0x14180c06U, 0x1e140a05U,
	0xa43397c5U, 0x66442211U, 0x2fc1ee77U, 0x15edf87cU,
	0x01f5f47aU, 0x0dfdf078U, 0xb4d86c36U, 0x4870381cU,
	0x96e47239U, 0xcb79b259U, 0x50603018U, 0xe945ac56U,
	0x8df67bb3U, 0x87fa7db0U, 0xd8904824U, 0xc0804020U,
	0x8bf279b2U, 0x4b723992U, 0xedb65ba3U, 0xba279dc0U,
	0x850d8844U, 0x5195c462U, 0x60402010U, 0x9fea75b4U,
	0x3f2a1584U, 0x97118643U, 0x4d763b93U, 0xb62f99c2U,
	0xa135944aU, 0xa9ce67bdU, 0x0506038fU, 0xeeb45a2dU,
	0xafca65bcU, 0x6f4a259cU, 0x61b5d46aU, 0x9d1d8040U,
	0x981b83cfU, 0xebb259a2U, 0x273a1d80U, 0xbf219e4fU,
	0x427c3e1fU, 0x860f89caU, 0xdb9249aaU, 0x91158442U,
};

static const u32 T4[256] = {
	0xbabababaU, 0x54545454U, 0x2f2f2f2fU, 0x74747474U,
	0x53535353U, 0xd3d3d3d3U, 0xd2d2d2d2U, 0x4d4d4d4dU,
	0x50505050U, 0xacacacacU, 0x8d8d8d8dU, 0xbfbfbfbfU,
	0x70707070U, 0x52525252U, 0x9a9a9a9aU, 0x4c4c4c4cU,
	0xeaeaeaeaU, 0xd5d5d5d5U, 0x97979797U, 0xd1d1d1d1U,
	0x33333333U, 0x51515151U, 0x5b5b5b5bU, 0xa6a6a6a6U,
	0xdedededeU, 0x48484848U, 0xa8a8a8a8U, 0x99999999U,
	0xdbdbdbdbU, 0x32323232U, 0xb7b7b7b7U, 0xfcfcfcfcU,
	0xe3e3e3e3U, 0x9e9e9e9eU, 0x91919191U, 0x9b9b9b9bU,
	0xe2e2e2e2U, 0xbbbbbbbbU, 0x41414141U, 0x6e6e6e6eU,
	0xa5a5a5a5U, 0xcbcbcbcbU, 0x6b6b6b6bU, 0x95959595U,
	0xa1a1a1a1U, 0xf3f3f3f3U, 0xb1b1b1b1U, 0x02020202U,
	0xccccccccU, 0xc4c4c4c4U, 0x1d1d1d1dU, 0x14141414U,
	0xc3c3c3c3U, 0x63636363U, 0xdadadadaU, 0x5d5d5d5dU,
	0x5f5f5f5fU, 0xdcdcdcdcU, 0x7d7d7d7dU, 0xcdcdcdcdU,
	0x7f7f7f7fU, 0x5a5a5a5aU, 0x6c6c6c6cU, 0x5c5c5c5cU,
	0xf7f7f7f7U, 0x26262626U, 0xffffffffU, 0xededededU,
	0xe8e8e8e8U, 0x9d9d9d9dU, 0x6f6f6f6fU, 0x8e8e8e8eU,
	0x19191919U, 0xa0a0a0a0U, 0xf0f0f0f0U, 0x89898989U,
	0x0f0f0f0fU, 0x07070707U, 0xafafafafU, 0xfbfbfbfbU,
	0x08080808U, 0x15151515U, 0x0d0d0d0dU, 0x04040404U,
	0x01010101U, 0x64646464U, 0xdfdfdfdfU, 0x76767676U,
	0x79797979U, 0xddddddddU, 0x3d3d3d3dU, 0x16161616U,
	0x3f3f3f3fU, 0x37373737U, 0x6d6d6d6dU, 0x38383838U,
	0xb9b9b9b9U, 0x73737373U, 0xe9e9e9e9U, 0x35353535U,
	0x55555555U, 0x71717171U, 0x7b7b7b7bU, 0x8c8c8c8cU,
	0x72727272U, 0x88888888U, 0xf6f6f6f6U, 0x2a2a2a2aU,
	0x3e3e3e3eU, 0x5e5e5e5eU, 0x27272727U, 0x46464646U,
	0x0c0c0c0cU, 0x65656565U, 0x68686868U, 0x61616161U,
	0x03030303U, 0xc1c1c1c1U, 0x57575757U, 0xd6d6d6d6U,
	0xd9d9d9d9U, 0x58585858U, 0xd8d8d8d8U, 0x66666666U,
	0xd7d7d7d7U, 0x3a3a3a3aU, 0xc8c8c8c8U, 0x3c3c3c3cU,
	0xfafafafaU, 0x96969696U, 0xa7a7a7a7U, 0x98989898U,
	0xececececU, 0xb8b8b8b8U, 0xc7c7c7c7U, 0xaeaeaeaeU,
	0x69696969U, 0x4b4b4b4bU, 0xababababU, 0xa9a9a9a9U,
	0x67676767U, 0x0a0a0a0aU, 0x47474747U, 0xf2f2f2f2U,
	0xb5b5b5b5U, 0x22222222U, 0xe5e5e5e5U, 0xeeeeeeeeU,
	0xbebebebeU, 0x2b2b2b2bU, 0x81818181U, 0x12121212U,
	0x83838383U, 0x1b1b1b1bU, 0x0e0e0e0eU, 0x23232323U,
	0xf5f5f5f5U, 0x45454545U, 0x21212121U, 0xcecececeU,
	0x49494949U, 0x2c2c2c2cU, 0xf9f9f9f9U, 0xe6e6e6e6U,
	0xb6b6b6b6U, 0x28282828U, 0x17171717U, 0x82828282U,
	0x1a1a1a1aU, 0x8b8b8b8bU, 0xfefefefeU, 0x8a8a8a8aU,
	0x09090909U, 0xc9c9c9c9U, 0x87878787U, 0x4e4e4e4eU,
	0xe1e1e1e1U, 0x2e2e2e2eU, 0xe4e4e4e4U, 0xe0e0e0e0U,
	0xebebebebU, 0x90909090U, 0xa4a4a4a4U, 0x1e1e1e1eU,
	0x85858585U, 0x60606060U, 0x00000000U, 0x25252525U,
	0xf4f4f4f4U, 0xf1f1f1f1U, 0x94949494U, 0x0b0b0b0bU,
	0xe7e7e7e7U, 0x75757575U, 0xefefefefU, 0x34343434U,
	0x31313131U, 0xd4d4d4d4U, 0xd0d0d0d0U, 0x86868686U,
	0x7e7e7e7eU, 0xadadadadU, 0xfdfdfdfdU, 0x29292929U,
	0x30303030U, 0x3b3b3b3bU, 0x9f9f9f9fU, 0xf8f8f8f8U,
	0xc6c6c6c6U, 0x13131313U, 0x06060606U, 0x05050505U,
	0xc5c5c5c5U, 0x11111111U, 0x77777777U, 0x7c7c7c7cU,
	0x7a7a7a7aU, 0x78787878U, 0x36363636U, 0x1c1c1c1cU,
	0x39393939U, 0x59595959U, 0x18181818U, 0x56565656U,
	0xb3b3b3b3U, 0xb0b0b0b0U, 0x24242424U, 0x20202020U,
	0xb2b2b2b2U, 0x92929292U, 0xa3a3a3a3U, 0xc0c0c0c0U,
	0x44444444U, 0x62626262U, 0x10101010U, 0xb4b4b4b4U,
	0x84848484U, 0x43434343U, 0x93939393U, 0xc2c2c2c2U,
	0x4a4a4a4aU, 0xbdbdbdbdU, 0x8f8f8f8fU, 0x2d2d2d2dU,
	0xbcbcbcbcU, 0x9c9c9c9cU, 0x6a6a6a6aU, 0x40404040U,
	0xcfcfcfcfU, 0xa2a2a2a2U, 0x80808080U, 0x4f4f4f4fU,
	0x1f1f1f1fU, 0xcacacacaU, 0xaaaaaaaaU, 0x42424242U,
};

static const u32 T5[256] = {
	0x00000000U, 0x01020608U, 0x02040c10U, 0x03060a18U,
	0x04081820U, 0x050a1e28U, 0x060c1430U, 0x070e1238U,
	0x08103040U, 0x09123648U, 0x0a143c50U, 0x0b163a58U,
	0x0c182860U, 0x0d1a2e68U, 0x0e1c2470U, 0x0f1e2278U,
	0x10206080U, 0x11226688U, 0x12246c90U, 0x13266a98U,
	0x142878a0U, 0x152a7ea8U, 0x162c74b0U, 0x172e72b8U,
	0x183050c0U, 0x193256c8U, 0x1a345cd0U, 0x1b365ad8U,
	0x1c3848e0U, 0x1d3a4ee8U, 0x1e3c44f0U, 0x1f3e42f8U,
	0x2040c01dU, 0x2142c615U, 0x2244cc0dU, 0x2346ca05U,
	0x2448d83dU, 0x254ade35U, 0x264cd42dU, 0x274ed225U,
	0x2850f05dU, 0x2952f655U, 0x2a54fc4dU, 0x2b56fa45U,
	0x2c58e87dU, 0x2d5aee75U, 0x2e5ce46dU, 0x2f5ee265U,
	0x3060a09dU, 0x3162a695U, 0x3264ac8dU, 0x3366aa85U,
	0x3468b8bdU, 0x356abeb5U, 0x366cb4adU, 0x376eb2a5U,
	0x387090ddU, 0x397296d5U, 0x3a749ccdU, 0x3b769ac5U,
	0x3c7888fdU, 0x3d7a8ef5U, 0x3e7c84edU, 0x3f7e82e5U,
	0x40809d3aU, 0x41829b32U, 0x4284912aU, 0x43869722U,
	0x4488851aU, 0x458a8312U, 0x468c890aU, 0x478e8f02U,
	0x4890ad7aU, 0x4992ab72U, 0x4a94a16aU, 0x4b96a762U,
	0x4c98b55aU, 0x4d9ab352U, 0x4e9cb94aU, 0x4f9ebf42U,
	0x50a0fdbaU, 0x51a2fbb2U, 0x52a4f1aaU, 0x53a6f7a2U,
	0x54a8e59aU, 0x55aae392U, 0x56ace98aU, 0x57aeef82U,
	0x58b0cdfaU, 0x59b2cbf2U, 0x5ab4c1eaU, 0x5bb6c7e2U,
	0x5cb8d5daU, 0x5dbad3d2U, 0x5ebcd9caU, 0x5fbedfc2U,
	0x60c05d27U, 0x61c25b2fU, 0x62c45137U, 0x63c6573fU,
	0x64c84507U, 0x65ca430fU, 0x66cc4917U, 0x67ce4f1fU,
	0x68d06d67U, 0x69d26b6fU, 0x6ad46177U, 0x6bd6677fU,
	0x6cd87547U, 0x6dda734fU, 0x6edc7957U, 0x6fde7f5fU,
	0x70e03da7U, 0x71e23bafU, 0x72e431b7U, 0x73e637bfU,
	0x74e82587U, 0x75ea238fU, 0x76ec2997U, 0x77ee2f9fU,
	0x78f00de7U, 0x79f20befU, 0x7af401f7U, 0x7bf607ffU,
	0x7cf815c7U, 0x7dfa13cfU, 0x7efc19d7U, 0x7ffe1fdfU,
	0x801d2774U, 0x811f217cU, 0x82192b64U, 0x831b2d6cU,
	0x84153f54U, 0x8517395cU, 0x86113344U, 0x8713354cU,
	0x880d1734U, 0x890f113cU, 0x8a091b24U, 0x8b0b1d2cU,
	0x8c050f14U, 0x8d07091cU, 0x8e010304U, 0x8f03050cU,
	0x903d47f4U, 0x913f41fcU, 0x92394be4U, 0x933b4decU,
	0x94355fd4U, 0x953759dcU, 0x963153c4U, 0x973355ccU,
	0x982d77b4U, 0x992f71bcU, 0x9a297ba4U, 0x9b2b7dacU,
	0x9c256f94U, 0x9d27699cU, 0x9e216384U, 0x9f23658cU,
	0xa05de769U, 0xa15fe161U, 0xa259eb79U, 0xa35bed71U,
	0xa455ff49U, 0xa557f941U, 0xa651f359U, 0xa753f551U,
	0xa84dd729U, 0xa94fd121U, 0xaa49db39U, 0xab4bdd31U,
	0xac45cf09U, 0xad47c901U, 0xae41c319U, 0xaf43c511U,
	0xb07d87e9U, 0xb17f81e1U, 0xb2798bf9U, 0xb37b8df1U,
	0xb4759fc9U, 0xb57799c1U, 0xb67193d9U, 0xb77395d1U,
	0xb86db7a9U, 0xb96fb1a1U, 0xba69bbb9U, 0xbb6bbdb1U,
	0xbc65af89U, 0xbd67a981U, 0xbe61a399U, 0xbf63a591U,
	0xc09dba4eU, 0xc19fbc46U, 0xc299b65eU, 0xc39bb056U,
	0xc495a26eU, 0xc597a466U, 0xc691ae7eU, 0xc793a876U,
	0xc88d8a0eU, 0xc98f8c06U, 0xca89861eU, 0xcb8b8016U,
	0xcc85922eU, 0xcd879426U, 0xce819e3eU, 0xcf839836U,
	0xd0bddaceU, 0xd1bfdcc6U, 0xd2b9d6deU, 0xd3bbd0d6U,
	0xd4b5c2eeU, 0xd5b7c4e6U, 0xd6b1cefeU, 0xd7b3c8f6U,
	0xd8adea8eU, 0xd9afec86U, 0xdaa9e69eU, 0xdbabe096U,
	0xdca5f2aeU, 0xdda7f4a6U, 0xdea1febeU, 0xdfa3f8b6U,
	0xe0dd7a53U, 0xe1df7c5bU, 0xe2d97643U, 0xe3db704bU,
	0xe4d56273U, 0xe5d7647bU, 0xe6d16e63U, 0xe7d3686bU,
	0xe8cd4a13U, 0xe9cf4c1bU, 0xeac94603U, 0xebcb400bU,
	0xecc55233U, 0xedc7543bU, 0xeec15e23U, 0xefc3582bU,
	0xf0fd1ad3U, 0xf1ff1cdbU, 0xf2f916c3U, 0xf3fb10cbU,
	0xf4f502f3U, 0xf5f704fbU, 0xf6f10ee3U, 0xf7f308ebU,
	0xf8ed2a93U, 0xf9ef2c9bU, 0xfae92683U, 0xfbeb208bU,
	0xfce532b3U, 0xfde734bbU, 0xfee13ea3U, 0xffe338abU,
};

static const u32 rc[] = {
	0xba542f74U, 0x53d3d24dU, 0x50ac8dbfU, 0x70529a4cU,
	0xead597d1U, 0x33515ba6U, 0xde48a899U, 0xdb32b7fcU,
	0xe39e919bU, 0xe2bb416eU, 0xa5cb6b95U, 0xa1f3b102U,
	0xccc41d14U, 0xc363da5dU, 0x5fdc7dcdU, 0x7f5a6c5cU,
	0xf726ffedU, 0xe89d6f8eU, 0x19a0f089U,
};

static int anubis_setkey(struct crypto_tfm *tfm, const u8 *in_key,
			 unsigned int key_len)
{
	struct anubis_ctx *ctx = crypto_tfm_ctx(tfm);
	const __be32 *key = (const __be32 *)in_key;
	u32 *flags = &tfm->crt_flags;
	int N, R, i, r;
	u32 kappa[ANUBIS_MAX_N];
	u32 inter[ANUBIS_MAX_N];

	switch (key_len)
	{
		case 16: case 20: case 24: case 28:
		case 32: case 36: case 40:
			break;
		default:
			*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
			return - EINVAL;
	}

	ctx->key_len = key_len * 8;
	N = ctx->key_len >> 5;
	ctx->R = R = 8 + N;

	/* * map cipher key to initial key state (mu): */
	for (i = 0; i < N; i++)
		kappa[i] = be32_to_cpu(key[i]);

	/*
	 * generate R + 1 round keys:
	 */
	for (r = 0; r <= R; r++) {
		u32 K0, K1, K2, K3;
		/*
		 * generate r-th round key K^r:
		 */
		K0 = T4[(kappa[N - 1] >> 24)       ];
		K1 = T4[(kappa[N - 1] >> 16) & 0xff];
		K2 = T4[(kappa[N - 1] >>  8) & 0xff];
		K3 = T4[(kappa[N - 1]      ) & 0xff];
		for (i = N - 2; i >= 0; i--) {
			K0 = T4[(kappa[i] >> 24)       ] ^
				(T5[(K0 >> 24)       ] & 0xff000000U) ^
				(T5[(K0 >> 16) & 0xff] & 0x00ff0000U) ^
				(T5[(K0 >>  8) & 0xff] & 0x0000ff00U) ^
				(T5[(K0      ) & 0xff] & 0x000000ffU);
			K1 = T4[(kappa[i] >> 16) & 0xff] ^
				(T5[(K1 >> 24)       ] & 0xff000000U) ^
				(T5[(K1 >> 16) & 0xff] & 0x00ff0000U) ^
				(T5[(K1 >>  8) & 0xff] & 0x0000ff00U) ^
				(T5[(K1      ) & 0xff] & 0x000000ffU);
			K2 = T4[(kappa[i] >>  8) & 0xff] ^
				(T5[(K2 >> 24)       ] & 0xff000000U) ^
				(T5[(K2 >> 16) & 0xff] & 0x00ff0000U) ^
				(T5[(K2 >>  8) & 0xff] & 0x0000ff00U) ^
				(T5[(K2      ) & 0xff] & 0x000000ffU);
			K3 = T4[(kappa[i]      ) & 0xff] ^
				(T5[(K3 >> 24)       ] & 0xff000000U) ^
				(T5[(K3 >> 16) & 0xff] & 0x00ff0000U) ^
				(T5[(K3 >>  8) & 0xff] & 0x0000ff00U) ^
				(T5[(K3      ) & 0xff] & 0x000000ffU);
		}

		ctx->E[r][0] = K0;
		ctx->E[r][1] = K1;
		ctx->E[r][2] = K2;
		ctx->E[r][3] = K3;

		/*
		 * compute kappa^{r+1} from kappa^r:
		 */
		if (r == R) {
			break;
		}
		for (i = 0; i < N; i++) {
			int j = i;
			inter[i]  = T0[(kappa[j--] >> 24)       ];
			if (j < 0) j = N - 1;
			inter[i] ^= T1[(kappa[j--] >> 16) & 0xff];
			if (j < 0) j = N - 1;
			inter[i] ^= T2[(kappa[j--] >>  8) & 0xff];
			if (j < 0) j = N - 1;
			inter[i] ^= T3[(kappa[j  ]      ) & 0xff];
		}
		kappa[0] = inter[0] ^ rc[r];
		for (i = 1; i < N; i++) {
			kappa[i] = inter[i];
		}
	}

	/*
	 * generate inverse key schedule: K'^0 = K^R, K'^R =
	 * 				  K^0, K'^r = theta(K^{R-r}):
	 */
	for (i = 0; i < 4; i++) {
		ctx->D[0][i] = ctx->E[R][i];
		ctx->D[R][i] = ctx->E[0][i];
	}
	for (r = 1; r < R; r++) {
		for (i = 0; i < 4; i++) {
			u32 v = ctx->E[R - r][i];
			ctx->D[r][i] =
				T0[T4[(v >> 24)       ] & 0xff] ^
				T1[T4[(v >> 16) & 0xff] & 0xff] ^
				T2[T4[(v >>  8) & 0xff] & 0xff] ^
				T3[T4[(v      ) & 0xff] & 0xff];
		}
	}

	return 0;
}

static void anubis_crypt(u32 roundKey[ANUBIS_MAX_ROUNDS + 1][4],
		u8 *ciphertext, const u8 *plaintext, const int R)
{
	const __be32 *src = (const __be32 *)plaintext;
	__be32 *dst = (__be32 *)ciphertext;
	int i, r;
	u32 state[4];
	u32 inter[4];

	/*
	 * map plaintext block to cipher state (mu)
	 * and add initial round key (sigma[K^0]):
	 */
	for (i = 0; i < 4; i++)
		state[i] = be32_to_cpu(src[i]) ^ roundKey[0][i];

	/*
	 * R - 1 full rounds:
	 */

	for (r = 1; r < R; r++) {
		inter[0] =
			T0[(state[0] >> 24)       ] ^
			T1[(state[1] >> 24)       ] ^
			T2[(state[2] >> 24)       ] ^
			T3[(state[3] >> 24)       ] ^
			roundKey[r][0];
		inter[1] =
			T0[(state[0] >> 16) & 0xff] ^
			T1[(state[1] >> 16) & 0xff] ^
			T2[(state[2] >> 16) & 0xff] ^
			T3[(state[3] >> 16) & 0xff] ^
			roundKey[r][1];
		inter[2] =
			T0[(state[0] >>  8) & 0xff] ^
			T1[(state[1] >>  8) & 0xff] ^
			T2[(state[2] >>  8) & 0xff] ^
			T3[(state[3] >>  8) & 0xff] ^
			roundKey[r][2];
		inter[3] =
			T0[(state[0]      ) & 0xff] ^
			T1[(state[1]      ) & 0xff] ^
			T2[(state[2]      ) & 0xff] ^
			T3[(state[3]      ) & 0xff] ^
			roundKey[r][3];
		state[0] = inter[0];
		state[1] = inter[1];
		state[2] = inter[2];
		state[3] = inter[3];
	}

	/*
	 * last round:
	 */

	inter[0] =
		(T0[(state[0] >> 24)       ] & 0xff000000U) ^
		(T1[(state[1] >> 24)       ] & 0x00ff0000U) ^
		(T2[(state[2] >> 24)       ] & 0x0000ff00U) ^
		(T3[(state[3] >> 24)       ] & 0x000000ffU) ^
		roundKey[R][0];
	inter[1] =
		(T0[(state[0] >> 16) & 0xff] & 0xff000000U) ^
		(T1[(state[1] >> 16) & 0xff] & 0x00ff0000U) ^
		(T2[(state[2] >> 16) & 0xff] & 0x0000ff00U) ^
		(T3[(state[3] >> 16) & 0xff] & 0x000000ffU) ^
		roundKey[R][1];
	inter[2] =
		(T0[(state[0] >>  8) & 0xff] & 0xff000000U) ^
		(T1[(state[1] >>  8) & 0xff] & 0x00ff0000U) ^
		(T2[(state[2] >>  8) & 0xff] & 0x0000ff00U) ^
		(T3[(state[3] >>  8) & 0xff] & 0x000000ffU) ^
		roundKey[R][2];
	inter[3] =
		(T0[(state[0]      ) & 0xff] & 0xff000000U) ^
		(T1[(state[1]      ) & 0xff] & 0x00ff0000U) ^
		(T2[(state[2]      ) & 0xff] & 0x0000ff00U) ^
		(T3[(state[3]      ) & 0xff] & 0x000000ffU) ^
		roundKey[R][3];

	/*
	 * map cipher state to ciphertext block (mu^{-1}):
	 */

	for (i = 0; i < 4; i++)
		dst[i] = cpu_to_be32(inter[i]);
}

static void anubis_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
{
	struct anubis_ctx *ctx = crypto_tfm_ctx(tfm);
	anubis_crypt(ctx->E, dst, src, ctx->R);
}

static void anubis_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
{
	struct anubis_ctx *ctx = crypto_tfm_ctx(tfm);
	anubis_crypt(ctx->D, dst, src, ctx->R);
}

static struct crypto_alg anubis_alg = {
	.cra_name		=	"anubis",
	.cra_flags		=	CRYPTO_ALG_TYPE_CIPHER,
	.cra_blocksize		=	ANUBIS_BLOCK_SIZE,
	.cra_ctxsize		=	sizeof (struct anubis_ctx),
	.cra_alignmask		=	3,
	.cra_module		=	THIS_MODULE,
	.cra_list		=	LIST_HEAD_INIT(anubis_alg.cra_list),
	.cra_u			=	{ .cipher = {
	.cia_min_keysize	=	ANUBIS_MIN_KEY_SIZE,
	.cia_max_keysize	=	ANUBIS_MAX_KEY_SIZE,
	.cia_setkey		= 	anubis_setkey,
	.cia_encrypt		=	anubis_encrypt,
	.cia_decrypt		=	anubis_decrypt } }
};

static int __init init(void)
{
	int ret = 0;
	
	ret = crypto_register_alg(&anubis_alg);
	return ret;
}

static void __exit fini(void)
{
	crypto_unregister_alg(&anubis_alg);
}

module_init(init);
module_exit(fini);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Anubis Cryptographic Algorithm");
