Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
550 lines (538 sloc) 41.6 KB
/* vim: foldmethod=marker */
#include <stdio.h>
#include <stdlib.h>
#include "des.h"
void test_encrypt(uint64_t key, uint64_t plain, uint64_t cipher)
{
DES_Key _key;
DES_InitKey(&_key, key);
if (DES_Encrypt(&_key, plain) == cipher) {
printf(".");
fflush(stdout);
}
else {
printf("F");
fflush(stdout);
}
}
void test_decrypt(uint64_t key, uint64_t cipher, uint64_t plain)
{
DES_Key _key;
DES_InitKey(&_key, key);
if (DES_Encrypt(&_key, plain) == cipher) {
printf(".");
fflush(stdout);
}
else {
printf("F");
fflush(stdout);
}
}
int main(void)
{
/* {{{ Encryption Tests */
printf("Testing Encryption:\n");
test_encrypt(0x0101010101010101ll, 0x95F8A5E5DD31D900ll, 0x8000000000000000ll);
test_encrypt(0x0101010101010101ll, 0xDD7F121CA5015619ll, 0x4000000000000000ll);
test_encrypt(0x0101010101010101ll, 0x2E8653104F3834EAll, 0x2000000000000000ll);
test_encrypt(0x0101010101010101ll, 0x4BD388FF6CD81D4Fll, 0x1000000000000000ll);
test_encrypt(0x0101010101010101ll, 0x20B9E767B2FB1456ll, 0x0800000000000000ll);
test_encrypt(0x0101010101010101ll, 0x55579380D77138EFll, 0x0400000000000000ll);
test_encrypt(0x0101010101010101ll, 0x6CC5DEFAAF04512Fll, 0x0200000000000000ll);
test_encrypt(0x0101010101010101ll, 0x0D9F279BA5D87260ll, 0x0100000000000000ll);
test_encrypt(0x0101010101010101ll, 0xD9031B0271BD5A0All, 0x0080000000000000ll);
test_encrypt(0x0101010101010101ll, 0x424250B37C3DD951ll, 0x0040000000000000ll);
test_encrypt(0x0101010101010101ll, 0xB8061B7ECD9A21E5ll, 0x0020000000000000ll);
test_encrypt(0x0101010101010101ll, 0xF15D0F286B65BD28ll, 0x0010000000000000ll);
test_encrypt(0x0101010101010101ll, 0xADD0CC8D6E5DEBA1ll, 0x0008000000000000ll);
test_encrypt(0x0101010101010101ll, 0xE6D5F82752AD63D1ll, 0x0004000000000000ll);
test_encrypt(0x0101010101010101ll, 0xECBFE3BD3F591A5Ell, 0x0002000000000000ll);
test_encrypt(0x0101010101010101ll, 0xF356834379D165CDll, 0x0001000000000000ll);
test_encrypt(0x0101010101010101ll, 0x2B9F982F20037FA9ll, 0x0000800000000000ll);
test_encrypt(0x0101010101010101ll, 0x889DE068A16F0BE6ll, 0x0000400000000000ll);
test_encrypt(0x0101010101010101ll, 0xE19E275D846A1298ll, 0x0000200000000000ll);
test_encrypt(0x0101010101010101ll, 0x329A8ED523D71AECll, 0x0000100000000000ll);
test_encrypt(0x0101010101010101ll, 0xE7FCE22557D23C97ll, 0x0000080000000000ll);
test_encrypt(0x0101010101010101ll, 0x12A9F5817FF2D65Dll, 0x0000040000000000ll);
test_encrypt(0x0101010101010101ll, 0xA484C3AD38DC9C19ll, 0x0000020000000000ll);
test_encrypt(0x0101010101010101ll, 0xFBE00A8A1EF8AD72ll, 0x0000010000000000ll);
test_encrypt(0x0101010101010101ll, 0x750D079407521363ll, 0x0000008000000000ll);
test_encrypt(0x0101010101010101ll, 0x64FEED9C724C2FAFll, 0x0000004000000000ll);
test_encrypt(0x0101010101010101ll, 0xF02B263B328E2B60ll, 0x0000002000000000ll);
test_encrypt(0x0101010101010101ll, 0x9D64555A9A10B852ll, 0x0000001000000000ll);
test_encrypt(0x0101010101010101ll, 0xD106FF0BED5255D7ll, 0x0000000800000000ll);
test_encrypt(0x0101010101010101ll, 0xE1652C6B138C64A5ll, 0x0000000400000000ll);
test_encrypt(0x0101010101010101ll, 0xE428581186EC8F46ll, 0x0000000200000000ll);
test_encrypt(0x0101010101010101ll, 0xAEB5F5EDE22D1A36ll, 0x0000000100000000ll);
test_encrypt(0x0101010101010101ll, 0xE943D7568AEC0C5Cll, 0x0000000080000000ll);
test_encrypt(0x0101010101010101ll, 0xDF98C8276F54B04Bll, 0x0000000040000000ll);
test_encrypt(0x0101010101010101ll, 0xB160E4680F6C696Fll, 0x0000000020000000ll);
test_encrypt(0x0101010101010101ll, 0xFA0752B07D9C4AB8ll, 0x0000000010000000ll);
test_encrypt(0x0101010101010101ll, 0xCA3A2B036DBC8502ll, 0x0000000008000000ll);
test_encrypt(0x0101010101010101ll, 0x5E0905517BB59BCFll, 0x0000000004000000ll);
test_encrypt(0x0101010101010101ll, 0x814EEB3B91D90726ll, 0x0000000002000000ll);
test_encrypt(0x0101010101010101ll, 0x4D49DB1532919C9Fll, 0x0000000001000000ll);
test_encrypt(0x0101010101010101ll, 0x25EB5FC3F8CF0621ll, 0x0000000000800000ll);
test_encrypt(0x0101010101010101ll, 0xAB6A20C0620D1C6Fll, 0x0000000000400000ll);
test_encrypt(0x0101010101010101ll, 0x79E90DBC98F92CCAll, 0x0000000000200000ll);
test_encrypt(0x0101010101010101ll, 0x866ECEDD8072BB0Ell, 0x0000000000100000ll);
test_encrypt(0x0101010101010101ll, 0x8B54536F2F3E64A8ll, 0x0000000000080000ll);
test_encrypt(0x0101010101010101ll, 0xEA51D3975595B86Bll, 0x0000000000040000ll);
test_encrypt(0x0101010101010101ll, 0xCAFFC6AC4542DE31ll, 0x0000000000020000ll);
test_encrypt(0x0101010101010101ll, 0x8DD45A2DDF90796Cll, 0x0000000000010000ll);
test_encrypt(0x0101010101010101ll, 0x1029D55E880EC2D0ll, 0x0000000000008000ll);
test_encrypt(0x0101010101010101ll, 0x5D86CB23639DBEA9ll, 0x0000000000004000ll);
test_encrypt(0x0101010101010101ll, 0x1D1CA853AE7C0C5Fll, 0x0000000000002000ll);
test_encrypt(0x0101010101010101ll, 0xCE332329248F3228ll, 0x0000000000001000ll);
test_encrypt(0x0101010101010101ll, 0x8405D1ABE24FB942ll, 0x0000000000000800ll);
test_encrypt(0x0101010101010101ll, 0xE643D78090CA4207ll, 0x0000000000000400ll);
test_encrypt(0x0101010101010101ll, 0x48221B9937748A23ll, 0x0000000000000200ll);
test_encrypt(0x0101010101010101ll, 0xDD7C0BBD61FAFD54ll, 0x0000000000000100ll);
test_encrypt(0x0101010101010101ll, 0x2FBC291A570DB5C4ll, 0x0000000000000080ll);
test_encrypt(0x0101010101010101ll, 0xE07C30D7E4E26E12ll, 0x0000000000000040ll);
test_encrypt(0x0101010101010101ll, 0x0953E2258E8E90A1ll, 0x0000000000000020ll);
test_encrypt(0x0101010101010101ll, 0x5B711BC4CEEBF2EEll, 0x0000000000000010ll);
test_encrypt(0x0101010101010101ll, 0xCC083F1E6D9E85F6ll, 0x0000000000000008ll);
test_encrypt(0x0101010101010101ll, 0xD2FD8867D50D2DFEll, 0x0000000000000004ll);
test_encrypt(0x0101010101010101ll, 0x06E7EA22CE92708Fll, 0x0000000000000002ll);
test_encrypt(0x0101010101010101ll, 0x166B40B44ABA4BD6ll, 0x0000000000000001ll);
test_encrypt(0x0101010101010101ll, 0x8000000000000000ll, 0x95F8A5E5DD31D900ll);
test_encrypt(0x0101010101010101ll, 0x4000000000000000ll, 0xDD7F121CA5015619ll);
test_encrypt(0x0101010101010101ll, 0x2000000000000000ll, 0x2E8653104F3834EAll);
test_encrypt(0x0101010101010101ll, 0x1000000000000000ll, 0x4BD388FF6CD81D4Fll);
test_encrypt(0x0101010101010101ll, 0x0800000000000000ll, 0x20B9E767B2FB1456ll);
test_encrypt(0x0101010101010101ll, 0x0400000000000000ll, 0x55579380D77138EFll);
test_encrypt(0x0101010101010101ll, 0x0200000000000000ll, 0x6CC5DEFAAF04512Fll);
test_encrypt(0x0101010101010101ll, 0x0100000000000000ll, 0x0D9F279BA5D87260ll);
test_encrypt(0x0101010101010101ll, 0x0080000000000000ll, 0xD9031B0271BD5A0All);
test_encrypt(0x0101010101010101ll, 0x0040000000000000ll, 0x424250B37C3DD951ll);
test_encrypt(0x0101010101010101ll, 0x0020000000000000ll, 0xB8061B7ECD9A21E5ll);
test_encrypt(0x0101010101010101ll, 0x0010000000000000ll, 0xF15D0F286B65BD28ll);
test_encrypt(0x0101010101010101ll, 0x0008000000000000ll, 0xADD0CC8D6E5DEBA1ll);
test_encrypt(0x0101010101010101ll, 0x0004000000000000ll, 0xE6D5F82752AD63D1ll);
test_encrypt(0x0101010101010101ll, 0x0002000000000000ll, 0xECBFE3BD3F591A5Ell);
test_encrypt(0x0101010101010101ll, 0x0001000000000000ll, 0xF356834379D165CDll);
test_encrypt(0x0101010101010101ll, 0x0000800000000000ll, 0x2B9F982F20037FA9ll);
test_encrypt(0x0101010101010101ll, 0x0000400000000000ll, 0x889DE068A16F0BE6ll);
test_encrypt(0x0101010101010101ll, 0x0000200000000000ll, 0xE19E275D846A1298ll);
test_encrypt(0x0101010101010101ll, 0x0000100000000000ll, 0x329A8ED523D71AECll);
test_encrypt(0x0101010101010101ll, 0x0000080000000000ll, 0xE7FCE22557D23C97ll);
test_encrypt(0x0101010101010101ll, 0x0000040000000000ll, 0x12A9F5817FF2D65Dll);
test_encrypt(0x0101010101010101ll, 0x0000020000000000ll, 0xA484C3AD38DC9C19ll);
test_encrypt(0x0101010101010101ll, 0x0000010000000000ll, 0xFBE00A8A1EF8AD72ll);
test_encrypt(0x0101010101010101ll, 0x0000008000000000ll, 0x750D079407521363ll);
test_encrypt(0x0101010101010101ll, 0x0000004000000000ll, 0x64FEED9C724C2FAFll);
test_encrypt(0x0101010101010101ll, 0x0000002000000000ll, 0xF02B263B328E2B60ll);
test_encrypt(0x0101010101010101ll, 0x0000001000000000ll, 0x9D64555A9A10B852ll);
test_encrypt(0x0101010101010101ll, 0x0000000800000000ll, 0xD106FF0BED5255D7ll);
test_encrypt(0x0101010101010101ll, 0x0000000400000000ll, 0xE1652C6B138C64A5ll);
test_encrypt(0x0101010101010101ll, 0x0000000200000000ll, 0xE428581186EC8F46ll);
test_encrypt(0x0101010101010101ll, 0x0000000100000000ll, 0xAEB5F5EDE22D1A36ll);
test_encrypt(0x0101010101010101ll, 0x0000000080000000ll, 0xE943D7568AEC0C5Cll);
test_encrypt(0x0101010101010101ll, 0x0000000040000000ll, 0xDF98C8276F54B04Bll);
test_encrypt(0x0101010101010101ll, 0x0000000020000000ll, 0xB160E4680F6C696Fll);
test_encrypt(0x0101010101010101ll, 0x0000000010000000ll, 0xFA0752B07D9C4AB8ll);
test_encrypt(0x0101010101010101ll, 0x0000000008000000ll, 0xCA3A2B036DBC8502ll);
test_encrypt(0x0101010101010101ll, 0x0000000004000000ll, 0x5E0905517BB59BCFll);
test_encrypt(0x0101010101010101ll, 0x0000000002000000ll, 0x814EEB3B91D90726ll);
test_encrypt(0x0101010101010101ll, 0x0000000001000000ll, 0x4D49DB1532919C9Fll);
test_encrypt(0x0101010101010101ll, 0x0000000000800000ll, 0x25EB5FC3F8CF0621ll);
test_encrypt(0x0101010101010101ll, 0x0000000000400000ll, 0xAB6A20C0620D1C6Fll);
test_encrypt(0x0101010101010101ll, 0x0000000000200000ll, 0x79E90DBC98F92CCAll);
test_encrypt(0x0101010101010101ll, 0x0000000000100000ll, 0x866ECEDD8072BB0Ell);
test_encrypt(0x0101010101010101ll, 0x0000000000080000ll, 0x8B54536F2F3E64A8ll);
test_encrypt(0x0101010101010101ll, 0x0000000000040000ll, 0xEA51D3975595B86Bll);
test_encrypt(0x0101010101010101ll, 0x0000000000020000ll, 0xCAFFC6AC4542DE31ll);
test_encrypt(0x0101010101010101ll, 0x0000000000010000ll, 0x8DD45A2DDF90796Cll);
test_encrypt(0x0101010101010101ll, 0x0000000000008000ll, 0x1029D55E880EC2D0ll);
test_encrypt(0x0101010101010101ll, 0x0000000000004000ll, 0x5D86CB23639DBEA9ll);
test_encrypt(0x0101010101010101ll, 0x0000000000002000ll, 0x1D1CA853AE7C0C5Fll);
test_encrypt(0x0101010101010101ll, 0x0000000000001000ll, 0xCE332329248F3228ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000800ll, 0x8405D1ABE24FB942ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000400ll, 0xE643D78090CA4207ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000200ll, 0x48221B9937748A23ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000100ll, 0xDD7C0BBD61FAFD54ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000080ll, 0x2FBC291A570DB5C4ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000040ll, 0xE07C30D7E4E26E12ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000020ll, 0x0953E2258E8E90A1ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000010ll, 0x5B711BC4CEEBF2EEll);
test_encrypt(0x0101010101010101ll, 0x0000000000000008ll, 0xCC083F1E6D9E85F6ll);
test_encrypt(0x0101010101010101ll, 0x0000000000000004ll, 0xD2FD8867D50D2DFEll);
test_encrypt(0x0101010101010101ll, 0x0000000000000002ll, 0x06E7EA22CE92708Fll);
test_encrypt(0x0101010101010101ll, 0x0000000000000001ll, 0x166B40B44ABA4BD6ll);
test_encrypt(0x8001010101010101ll, 0x0000000000000000ll, 0x95A8D72813DAA94Dll);
test_encrypt(0x4001010101010101ll, 0x0000000000000000ll, 0x0EEC1487DD8C26D5ll);
test_encrypt(0x2001010101010101ll, 0x0000000000000000ll, 0x7AD16FFB79C45926ll);
test_encrypt(0x1001010101010101ll, 0x0000000000000000ll, 0xD3746294CA6A6CF3ll);
test_encrypt(0x0801010101010101ll, 0x0000000000000000ll, 0x809F5F873C1FD761ll);
test_encrypt(0x0401010101010101ll, 0x0000000000000000ll, 0xC02FAFFEC989D1FCll);
test_encrypt(0x0201010101010101ll, 0x0000000000000000ll, 0x4615AA1D33E72F10ll);
test_encrypt(0x0180010101010101ll, 0x0000000000000000ll, 0x2055123350C00858ll);
test_encrypt(0x0140010101010101ll, 0x0000000000000000ll, 0xDF3B99D6577397C8ll);
test_encrypt(0x0120010101010101ll, 0x0000000000000000ll, 0x31FE17369B5288C9ll);
test_encrypt(0x0110010101010101ll, 0x0000000000000000ll, 0xDFDD3CC64DAE1642ll);
test_encrypt(0x0108010101010101ll, 0x0000000000000000ll, 0x178C83CE2B399D94ll);
test_encrypt(0x0104010101010101ll, 0x0000000000000000ll, 0x50F636324A9B7F80ll);
test_encrypt(0x0102010101010101ll, 0x0000000000000000ll, 0xA8468EE3BC18F06Dll);
test_encrypt(0x0101800101010101ll, 0x0000000000000000ll, 0xA2DC9E92FD3CDE92ll);
test_encrypt(0x0101400101010101ll, 0x0000000000000000ll, 0xCAC09F797D031287ll);
test_encrypt(0x0101200101010101ll, 0x0000000000000000ll, 0x90BA680B22AEB525ll);
test_encrypt(0x0101100101010101ll, 0x0000000000000000ll, 0xCE7A24F350E280B6ll);
test_encrypt(0x0101080101010101ll, 0x0000000000000000ll, 0x882BFF0AA01A0B87ll);
test_encrypt(0x0101040101010101ll, 0x0000000000000000ll, 0x25610288924511C2ll);
test_encrypt(0x0101020101010101ll, 0x0000000000000000ll, 0xC71516C29C75D170ll);
test_encrypt(0x0101018001010101ll, 0x0000000000000000ll, 0x5199C29A52C9F059ll);
test_encrypt(0x0101014001010101ll, 0x0000000000000000ll, 0xC22F0A294A71F29Fll);
test_encrypt(0x0101012001010101ll, 0x0000000000000000ll, 0xEE371483714C02EAll);
test_encrypt(0x0101011001010101ll, 0x0000000000000000ll, 0xA81FBD448F9E522Fll);
test_encrypt(0x0101010801010101ll, 0x0000000000000000ll, 0x4F644C92E192DFEDll);
test_encrypt(0x0101010401010101ll, 0x0000000000000000ll, 0x1AFA9A66A6DF92AEll);
test_encrypt(0x0101010201010101ll, 0x0000000000000000ll, 0xB3C1CC715CB879D8ll);
test_encrypt(0x0101010180010101ll, 0x0000000000000000ll, 0x19D032E64AB0BD8Bll);
test_encrypt(0x0101010140010101ll, 0x0000000000000000ll, 0x3CFAA7A7DC8720DCll);
test_encrypt(0x0101010120010101ll, 0x0000000000000000ll, 0xB7265F7F447AC6F3ll);
test_encrypt(0x0101010110010101ll, 0x0000000000000000ll, 0x9DB73B3C0D163F54ll);
test_encrypt(0x0101010108010101ll, 0x0000000000000000ll, 0x8181B65BABF4A975ll);
test_encrypt(0x0101010104010101ll, 0x0000000000000000ll, 0x93C9B64042EAA240ll);
test_encrypt(0x0101010102010101ll, 0x0000000000000000ll, 0x5570530829705592ll);
test_encrypt(0x0101010101800101ll, 0x0000000000000000ll, 0x8638809E878787A0ll);
test_encrypt(0x0101010101400101ll, 0x0000000000000000ll, 0x41B9A79AF79AC208ll);
test_encrypt(0x0101010101200101ll, 0x0000000000000000ll, 0x7A9BE42F2009A892ll);
test_encrypt(0x0101010101100101ll, 0x0000000000000000ll, 0x29038D56BA6D2745ll);
test_encrypt(0x0101010101080101ll, 0x0000000000000000ll, 0x5495C6ABF1E5DF51ll);
test_encrypt(0x0101010101040101ll, 0x0000000000000000ll, 0xAE13DBD561488933ll);
test_encrypt(0x0101010101020101ll, 0x0000000000000000ll, 0x024D1FFA8904E389ll);
test_encrypt(0x0101010101018001ll, 0x0000000000000000ll, 0xD1399712F99BF02Ell);
test_encrypt(0x0101010101014001ll, 0x0000000000000000ll, 0x14C1D7C1CFFEC79Ell);
test_encrypt(0x0101010101012001ll, 0x0000000000000000ll, 0x1DE5279DAE3BED6Fll);
test_encrypt(0x0101010101011001ll, 0x0000000000000000ll, 0xE941A33F85501303ll);
test_encrypt(0x0101010101010801ll, 0x0000000000000000ll, 0xDA99DBBC9A03F379ll);
test_encrypt(0x0101010101010401ll, 0x0000000000000000ll, 0xB7FC92F91D8E92E9ll);
test_encrypt(0x0101010101010201ll, 0x0000000000000000ll, 0xAE8E5CAA3CA04E85ll);
test_encrypt(0x0101010101010180ll, 0x0000000000000000ll, 0x9CC62DF43B6EED74ll);
test_encrypt(0x0101010101010140ll, 0x0000000000000000ll, 0xD863DBB5C59A91A0ll);
test_encrypt(0x0101010101010120ll, 0x0000000000000000ll, 0xA1AB2190545B91D7ll);
test_encrypt(0x0101010101010110ll, 0x0000000000000000ll, 0x0875041E64C570F7ll);
test_encrypt(0x0101010101010108ll, 0x0000000000000000ll, 0x5A594528BEBEF1CCll);
test_encrypt(0x0101010101010104ll, 0x0000000000000000ll, 0xFCDB3291DE21F0C0ll);
test_encrypt(0x0101010101010102ll, 0x0000000000000000ll, 0x869EFD7F9F265A09ll);
test_encrypt(0x1046913489980131ll, 0x0000000000000000ll, 0x88D55E54F54C97B4ll);
test_encrypt(0x1007103489988020ll, 0x0000000000000000ll, 0x0C0CC00C83EA48FDll);
test_encrypt(0x10071034C8980120ll, 0x0000000000000000ll, 0x83BC8EF3A6570183ll);
test_encrypt(0x1046103489988020ll, 0x0000000000000000ll, 0xDF725DCAD94EA2E9ll);
test_encrypt(0x1086911519190101ll, 0x0000000000000000ll, 0xE652B53B550BE8B0ll);
test_encrypt(0x1086911519580101ll, 0x0000000000000000ll, 0xAF527120C485CBB0ll);
test_encrypt(0x5107B01519580101ll, 0x0000000000000000ll, 0x0F04CE393DB926D5ll);
test_encrypt(0x1007B01519190101ll, 0x0000000000000000ll, 0xC9F00FFC74079067ll);
test_encrypt(0x3107915498080101ll, 0x0000000000000000ll, 0x7CFD82A593252B4Ell);
test_encrypt(0x3107919498080101ll, 0x0000000000000000ll, 0xCB49A2F9E91363E3ll);
test_encrypt(0x10079115B9080140ll, 0x0000000000000000ll, 0x00B588BE70D23F56ll);
test_encrypt(0x3107911598080140ll, 0x0000000000000000ll, 0x406A9A6AB43399AEll);
test_encrypt(0x1007D01589980101ll, 0x0000000000000000ll, 0x6CB773611DCA9ADAll);
test_encrypt(0x9107911589980101ll, 0x0000000000000000ll, 0x67FD21C17DBB5D70ll);
test_encrypt(0x9107D01589190101ll, 0x0000000000000000ll, 0x9592CB4110430787ll);
test_encrypt(0x1007D01598980120ll, 0x0000000000000000ll, 0xA6B7FF68A318DDD3ll);
test_encrypt(0x1007940498190101ll, 0x0000000000000000ll, 0x4D102196C914CA16ll);
test_encrypt(0x0107910491190401ll, 0x0000000000000000ll, 0x2DFA9F4573594965ll);
test_encrypt(0x0107910491190101ll, 0x0000000000000000ll, 0xB46604816C0E0774ll);
test_encrypt(0x0107940491190401ll, 0x0000000000000000ll, 0x6E7E6221A4F34E87ll);
test_encrypt(0x19079210981A0101ll, 0x0000000000000000ll, 0xAA85E74643233199ll);
test_encrypt(0x1007911998190801ll, 0x0000000000000000ll, 0x2E5A19DB4D1962D6ll);
test_encrypt(0x10079119981A0801ll, 0x0000000000000000ll, 0x23A866A809D30894ll);
test_encrypt(0x1007921098190101ll, 0x0000000000000000ll, 0xD812D961F017D320ll);
test_encrypt(0x100791159819010Bll, 0x0000000000000000ll, 0x055605816E58608Fll);
test_encrypt(0x1004801598190101ll, 0x0000000000000000ll, 0xABD88E8B1B7716F1ll);
test_encrypt(0x1004801598190102ll, 0x0000000000000000ll, 0x537AC95BE69DA1E1ll);
test_encrypt(0x1004801598190108ll, 0x0000000000000000ll, 0xAED0F6AE3C25CDD8ll);
test_encrypt(0x1002911498100104ll, 0x0000000000000000ll, 0xB3E35A5EE53E7B8Dll);
test_encrypt(0x1002911598190104ll, 0x0000000000000000ll, 0x61C79C71921A2EF8ll);
test_encrypt(0x1002911598100201ll, 0x0000000000000000ll, 0xE2F5728F0995013Cll);
test_encrypt(0x1002911698100101ll, 0x0000000000000000ll, 0x1AEAC39A61F0A464ll);
test_encrypt(0x7CA110454A1A6E57ll, 0x01A1D6D039776742ll, 0x690F5B0D9A26939Bll);
test_encrypt(0x0131D9619DC1376Ell, 0x5CD54CA83DEF57DAll, 0x7A389D10354BD271ll);
test_encrypt(0x07A1133E4A0B2686ll, 0x0248D43806F67172ll, 0x868EBB51CAB4599All);
test_encrypt(0x3849674C2602319Ell, 0x51454B582DDF440All, 0x7178876E01F19B2All);
test_encrypt(0x04B915BA43FEB5B6ll, 0x42FD443059577FA2ll, 0xAF37FB421F8C4095ll);
test_encrypt(0x0113B970FD34F2CEll, 0x059B5E0851CF143All, 0x86A560F10EC6D85Bll);
test_encrypt(0x0170F175468FB5E6ll, 0x0756D8E0774761D2ll, 0x0CD3DA020021DC09ll);
test_encrypt(0x43297FAD38E373FEll, 0x762514B829BF486All, 0xEA676B2CB7DB2B7All);
test_encrypt(0x07A7137045DA2A16ll, 0x3BDD119049372802ll, 0xDFD64A815CAF1A0Fll);
test_encrypt(0x04689104C2FD3B2Fll, 0x26955F6835AF609All, 0x5C513C9C4886C088ll);
test_encrypt(0x37D06BB516CB7546ll, 0x164D5E404F275232ll, 0x0A2AEEAE3FF4AB77ll);
test_encrypt(0x1F08260D1AC2465Ell, 0x6B056E18759F5CCAll, 0xEF1BF03E5DFA575All);
test_encrypt(0x584023641ABA6176ll, 0x004BD6EF09176062ll, 0x88BF0DB6D70DEE56ll);
test_encrypt(0x025816164629B007ll, 0x480D39006EE762F2ll, 0xA1F9915541020B56ll);
test_encrypt(0x49793EBC79B3258Fll, 0x437540C8698F3CFAll, 0x6FBF1CAFCFFD0556ll);
test_encrypt(0x4FB05E1515AB73A7ll, 0x072D43A077075292ll, 0x2F22E49BAB7CA1ACll);
test_encrypt(0x49E95D6D4CA229BFll, 0x02FE55778117F12All, 0x5A6B612CC26CCE4All);
test_encrypt(0x018310DC409B26D6ll, 0x1D9D5C5018F728C2ll, 0x5F4C038ED12B2E41ll);
test_encrypt(0x1C587F1C13924FEFll, 0x305532286D6F295All, 0x63FAC0D034D9F793ll);
test_encrypt(0x0000000000000000ll, 0x0000000000000000ll, 0x8CA64DE9C1B123A7ll);
test_encrypt(0xFFFFFFFFFFFFFFFFll, 0xFFFFFFFFFFFFFFFFll, 0x7359B2163E4EDC58ll);
test_encrypt(0x3000000000000000ll, 0x1000000000000001ll, 0x958E6E627A05557Bll);
test_encrypt(0x1111111111111111ll, 0x1111111111111111ll, 0xF40379AB9E0EC533ll);
test_encrypt(0x0123456789ABCDEFll, 0x1111111111111111ll, 0x17668DFC7292532Dll);
test_encrypt(0x1111111111111111ll, 0x0123456789ABCDEFll, 0x8A5AE1F81AB8F2DDll);
test_encrypt(0x0000000000000000ll, 0x0000000000000000ll, 0x8CA64DE9C1B123A7ll);
test_encrypt(0xFEDCBA9876543210ll, 0x0123456789ABCDEFll, 0xED39D950FA74BCC4ll);
test_encrypt(0x7CA110454A1A6E57ll, 0x01A1D6D039776742ll, 0x690F5B0D9A26939Bll);
test_encrypt(0x0131D9619DC1376Ell, 0x5CD54CA83DEF57DAll, 0x7A389D10354BD271ll);
test_encrypt(0x07A1133E4A0B2686ll, 0x0248D43806F67172ll, 0x868EBB51CAB4599All);
test_encrypt(0x3849674C2602319Ell, 0x51454B582DDF440All, 0x7178876E01F19B2All);
test_encrypt(0x04B915BA43FEB5B6ll, 0x42FD443059577FA2ll, 0xAF37FB421F8C4095ll);
test_encrypt(0x0113B970FD34F2CEll, 0x059B5E0851CF143All, 0x86A560F10EC6D85Bll);
test_encrypt(0x0170F175468FB5E6ll, 0x0756D8E0774761D2ll, 0x0CD3DA020021DC09ll);
test_encrypt(0x43297FAD38E373FEll, 0x762514B829BF486All, 0xEA676B2CB7DB2B7All);
test_encrypt(0x07A7137045DA2A16ll, 0x3BDD119049372802ll, 0xDFD64A815CAF1A0Fll);
test_encrypt(0x04689104C2FD3B2Fll, 0x26955F6835AF609All, 0x5C513C9C4886C088ll);
test_encrypt(0x37D06BB516CB7546ll, 0x164D5E404F275232ll, 0x0A2AEEAE3FF4AB77ll);
test_encrypt(0x1F08260D1AC2465Ell, 0x6B056E18759F5CCAll, 0xEF1BF03E5DFA575All);
test_encrypt(0x584023641ABA6176ll, 0x004BD6EF09176062ll, 0x88BF0DB6D70DEE56ll);
test_encrypt(0x025816164629B007ll, 0x480D39006EE762F2ll, 0xA1F9915541020B56ll);
test_encrypt(0x49793EBC79B3258Fll, 0x437540C8698F3CFAll, 0x6FBF1CAFCFFD0556ll);
test_encrypt(0x4FB05E1515AB73A7ll, 0x072D43A077075292ll, 0x2F22E49BAB7CA1ACll);
test_encrypt(0x49E95D6D4CA229BFll, 0x02FE55778117F12All, 0x5A6B612CC26CCE4All);
test_encrypt(0x018310DC409B26D6ll, 0x1D9D5C5018F728C2ll, 0x5F4C038ED12B2E41ll);
test_encrypt(0x1C587F1C13924FEFll, 0x305532286D6F295All, 0x63FAC0D034D9F793ll);
test_encrypt(0x0101010101010101ll, 0x0123456789ABCDEFll, 0x617B3A0CE8F07100ll);
test_encrypt(0x1F1F1F1F0E0E0E0Ell, 0x0123456789ABCDEFll, 0xDB958605F8C8C606ll);
test_encrypt(0xE0FEE0FEF1FEF1FEll, 0x0123456789ABCDEFll, 0xEDBFD1C66C29CCC7ll);
test_encrypt(0x0000000000000000ll, 0xFFFFFFFFFFFFFFFFll, 0x355550B2150E2451ll);
test_encrypt(0xFFFFFFFFFFFFFFFFll, 0x0000000000000000ll, 0xCAAAAF4DEAF1DBAEll);
test_encrypt(0x0123456789ABCDEFll, 0x0000000000000000ll, 0xD5D44FF720683D0Dll);
test_encrypt(0xFEDCBA9876543210ll, 0xFFFFFFFFFFFFFFFFll, 0x2A2BB008DF97C2F2ll);
test_encrypt(0x0101010101010101ll, 0x95F8A5E5DD31D900ll, 0x8000000000000000ll);
test_encrypt(0x0101010101010101ll, 0xDD7F121CA5015619ll, 0x4000000000000000ll);
test_encrypt(0x0101010101010101ll, 0x2E8653104F3834EAll, 0x2000000000000000ll);
test_encrypt(0x0101010101010101ll, 0x4BD388FF6CD81D4Fll, 0x1000000000000000ll);
test_encrypt(0x0101010101010101ll, 0x20B9E767B2FB1456ll, 0x0800000000000000ll);
test_encrypt(0x0101010101010101ll, 0x55579380D77138EFll, 0x0400000000000000ll);
test_encrypt(0x0101010101010101ll, 0x6CC5DEFAAF04512Fll, 0x0200000000000000ll);
test_encrypt(0x0101010101010101ll, 0x0D9F279BA5D87260ll, 0x0100000000000000ll);
test_encrypt(0x0101010101010101ll, 0xD9031B0271BD5A0All, 0x0080000000000000ll);
test_encrypt(0x0101010101010101ll, 0x424250B37C3DD951ll, 0x0040000000000000ll);
test_encrypt(0x0101010101010101ll, 0xB8061B7ECD9A21E5ll, 0x0020000000000000ll);
test_encrypt(0x0101010101010101ll, 0xF15D0F286B65BD28ll, 0x0010000000000000ll);
test_encrypt(0x0101010101010101ll, 0xADD0CC8D6E5DEBA1ll, 0x0008000000000000ll);
test_encrypt(0x0101010101010101ll, 0xE6D5F82752AD63D1ll, 0x0004000000000000ll);
test_encrypt(0x0101010101010101ll, 0xECBFE3BD3F591A5Ell, 0x0002000000000000ll);
test_encrypt(0x0101010101010101ll, 0xF356834379D165CDll, 0x0001000000000000ll);
test_encrypt(0x0101010101010101ll, 0x2B9F982F20037FA9ll, 0x0000800000000000ll);
test_encrypt(0x0101010101010101ll, 0x889DE068A16F0BE6ll, 0x0000400000000000ll);
test_encrypt(0x0101010101010101ll, 0xE19E275D846A1298ll, 0x0000200000000000ll);
test_encrypt(0x0101010101010101ll, 0x329A8ED523D71AECll, 0x0000100000000000ll);
test_encrypt(0x0101010101010101ll, 0xE7FCE22557D23C97ll, 0x0000080000000000ll);
test_encrypt(0x0101010101010101ll, 0x12A9F5817FF2D65Dll, 0x0000040000000000ll);
test_encrypt(0x0101010101010101ll, 0xA484C3AD38DC9C19ll, 0x0000020000000000ll);
test_encrypt(0x0101010101010101ll, 0xFBE00A8A1EF8AD72ll, 0x0000010000000000ll);
test_encrypt(0x0101010101010101ll, 0x750D079407521363ll, 0x0000008000000000ll);
test_encrypt(0x0101010101010101ll, 0x64FEED9C724C2FAFll, 0x0000004000000000ll);
test_encrypt(0x0101010101010101ll, 0xF02B263B328E2B60ll, 0x0000002000000000ll);
test_encrypt(0x0101010101010101ll, 0x9D64555A9A10B852ll, 0x0000001000000000ll);
test_encrypt(0x0101010101010101ll, 0xD106FF0BED5255D7ll, 0x0000000800000000ll);
test_encrypt(0x0101010101010101ll, 0xE1652C6B138C64A5ll, 0x0000000400000000ll);
test_encrypt(0x0101010101010101ll, 0xE428581186EC8F46ll, 0x0000000200000000ll);
test_encrypt(0x0101010101010101ll, 0xAEB5F5EDE22D1A36ll, 0x0000000100000000ll);
test_encrypt(0x0101010101010101ll, 0xE943D7568AEC0C5Cll, 0x0000000080000000ll);
test_encrypt(0x0101010101010101ll, 0xDF98C8276F54B04Bll, 0x0000000040000000ll);
test_encrypt(0x0101010101010101ll, 0xB160E4680F6C696Fll, 0x0000000020000000ll);
test_encrypt(0x0101010101010101ll, 0xFA0752B07D9C4AB8ll, 0x0000000010000000ll);
test_encrypt(0x0101010101010101ll, 0xCA3A2B036DBC8502ll, 0x0000000008000000ll);
test_encrypt(0x0101010101010101ll, 0x5E0905517BB59BCFll, 0x0000000004000000ll);
test_encrypt(0x0101010101010101ll, 0x814EEB3B91D90726ll, 0x0000000002000000ll);
test_encrypt(0x0101010101010101ll, 0x4D49DB1532919C9Fll, 0x0000000001000000ll);
test_encrypt(0x0101010101010101ll, 0x25EB5FC3F8CF0621ll, 0x0000000000800000ll);
test_encrypt(0x0101010101010101ll, 0xAB6A20C0620D1C6Fll, 0x0000000000400000ll);
test_encrypt(0x0101010101010101ll, 0x79E90DBC98F92CCAll, 0x0000000000200000ll);
test_encrypt(0x0101010101010101ll, 0x866ECEDD8072BB0Ell, 0x0000000000100000ll);
test_encrypt(0x0101010101010101ll, 0x8B54536F2F3E64A8ll, 0x0000000000080000ll);
test_encrypt(0x0101010101010101ll, 0xEA51D3975595B86Bll, 0x0000000000040000ll);
test_encrypt(0x0101010101010101ll, 0xCAFFC6AC4542DE31ll, 0x0000000000020000ll);
test_encrypt(0x0101010101010101ll, 0x8DD45A2DDF90796Cll, 0x0000000000010000ll);
test_encrypt(0x0101010101010101ll, 0x1029D55E880EC2D0ll, 0x0000000000008000ll);
test_encrypt(0x0101010101010101ll, 0x5D86CB23639DBEA9ll, 0x0000000000004000ll);
test_encrypt(0x0101010101010101ll, 0x1D1CA853AE7C0C5Fll, 0x0000000000002000ll);
test_encrypt(0x0101010101010101ll, 0xCE332329248F3228ll, 0x0000000000001000ll);
test_encrypt(0x0101010101010101ll, 0x8405D1ABE24FB942ll, 0x0000000000000800ll);
test_encrypt(0x0101010101010101ll, 0xE643D78090CA4207ll, 0x0000000000000400ll);
test_encrypt(0x0101010101010101ll, 0x48221B9937748A23ll, 0x0000000000000200ll);
test_encrypt(0x0101010101010101ll, 0xDD7C0BBD61FAFD54ll, 0x0000000000000100ll);
test_encrypt(0x0101010101010101ll, 0x2FBC291A570DB5C4ll, 0x0000000000000080ll);
test_encrypt(0x0101010101010101ll, 0xE07C30D7E4E26E12ll, 0x0000000000000040ll);
test_encrypt(0x0101010101010101ll, 0x0953E2258E8E90A1ll, 0x0000000000000020ll);
test_encrypt(0x0101010101010101ll, 0x5B711BC4CEEBF2EEll, 0x0000000000000010ll);
test_encrypt(0x0101010101010101ll, 0xCC083F1E6D9E85F6ll, 0x0000000000000008ll);
test_encrypt(0x0101010101010101ll, 0xD2FD8867D50D2DFEll, 0x0000000000000004ll);
test_encrypt(0x0101010101010101ll, 0x06E7EA22CE92708Fll, 0x0000000000000002ll);
test_encrypt(0x0101010101010101ll, 0x166B40B44ABA4BD6ll, 0x0000000000000001ll);
test_encrypt(0x8001010101010101ll, 0x0000000000000000ll, 0x95A8D72813DAA94Dll);
test_encrypt(0x4001010101010101ll, 0x0000000000000000ll, 0x0EEC1487DD8C26D5ll);
test_encrypt(0x2001010101010101ll, 0x0000000000000000ll, 0x7AD16FFB79C45926ll);
test_encrypt(0x1001010101010101ll, 0x0000000000000000ll, 0xD3746294CA6A6CF3ll);
test_encrypt(0x0801010101010101ll, 0x0000000000000000ll, 0x809F5F873C1FD761ll);
test_encrypt(0x0401010101010101ll, 0x0000000000000000ll, 0xC02FAFFEC989D1FCll);
test_encrypt(0x0201010101010101ll, 0x0000000000000000ll, 0x4615AA1D33E72F10ll);
test_encrypt(0x0180010101010101ll, 0x0000000000000000ll, 0x2055123350C00858ll);
test_encrypt(0x0140010101010101ll, 0x0000000000000000ll, 0xDF3B99D6577397C8ll);
test_encrypt(0x0120010101010101ll, 0x0000000000000000ll, 0x31FE17369B5288C9ll);
test_encrypt(0x0110010101010101ll, 0x0000000000000000ll, 0xDFDD3CC64DAE1642ll);
test_encrypt(0x0108010101010101ll, 0x0000000000000000ll, 0x178C83CE2B399D94ll);
test_encrypt(0x0104010101010101ll, 0x0000000000000000ll, 0x50F636324A9B7F80ll);
test_encrypt(0x0102010101010101ll, 0x0000000000000000ll, 0xA8468EE3BC18F06Dll);
test_encrypt(0x0101800101010101ll, 0x0000000000000000ll, 0xA2DC9E92FD3CDE92ll);
test_encrypt(0x0101400101010101ll, 0x0000000000000000ll, 0xCAC09F797D031287ll);
test_encrypt(0x0101200101010101ll, 0x0000000000000000ll, 0x90BA680B22AEB525ll);
test_encrypt(0x0101100101010101ll, 0x0000000000000000ll, 0xCE7A24F350E280B6ll);
test_encrypt(0x0101080101010101ll, 0x0000000000000000ll, 0x882BFF0AA01A0B87ll);
test_encrypt(0x0101040101010101ll, 0x0000000000000000ll, 0x25610288924511C2ll);
test_encrypt(0x0101020101010101ll, 0x0000000000000000ll, 0xC71516C29C75D170ll);
test_encrypt(0x0101018001010101ll, 0x0000000000000000ll, 0x5199C29A52C9F059ll);
test_encrypt(0x0101014001010101ll, 0x0000000000000000ll, 0xC22F0A294A71F29Fll);
test_encrypt(0x0101012001010101ll, 0x0000000000000000ll, 0xEE371483714C02EAll);
test_encrypt(0x0101011001010101ll, 0x0000000000000000ll, 0xA81FBD448F9E522Fll);
test_encrypt(0x0101010801010101ll, 0x0000000000000000ll, 0x4F644C92E192DFEDll);
test_encrypt(0x0101010401010101ll, 0x0000000000000000ll, 0x1AFA9A66A6DF92AEll);
test_encrypt(0x0101010201010101ll, 0x0000000000000000ll, 0xB3C1CC715CB879D8ll);
test_encrypt(0x0101010180010101ll, 0x0000000000000000ll, 0x19D032E64AB0BD8Bll);
test_encrypt(0x0101010140010101ll, 0x0000000000000000ll, 0x3CFAA7A7DC8720DCll);
test_encrypt(0x0101010120010101ll, 0x0000000000000000ll, 0xB7265F7F447AC6F3ll);
test_encrypt(0x0101010110010101ll, 0x0000000000000000ll, 0x9DB73B3C0D163F54ll);
test_encrypt(0x0101010108010101ll, 0x0000000000000000ll, 0x8181B65BABF4A975ll);
test_encrypt(0x0101010104010101ll, 0x0000000000000000ll, 0x93C9B64042EAA240ll);
test_encrypt(0x0101010102010101ll, 0x0000000000000000ll, 0x5570530829705592ll);
test_encrypt(0x0101010101800101ll, 0x0000000000000000ll, 0x8638809E878787A0ll);
test_encrypt(0x0101010101400101ll, 0x0000000000000000ll, 0x41B9A79AF79AC208ll);
test_encrypt(0x0101010101200101ll, 0x0000000000000000ll, 0x7A9BE42F2009A892ll);
test_encrypt(0x0101010101100101ll, 0x0000000000000000ll, 0x29038D56BA6D2745ll);
test_encrypt(0x0101010101080101ll, 0x0000000000000000ll, 0x5495C6ABF1E5DF51ll);
test_encrypt(0x0101010101040101ll, 0x0000000000000000ll, 0xAE13DBD561488933ll);
test_encrypt(0x0101010101020101ll, 0x0000000000000000ll, 0x024D1FFA8904E389ll);
test_encrypt(0x0101010101018001ll, 0x0000000000000000ll, 0xD1399712F99BF02Ell);
test_encrypt(0x0101010101014001ll, 0x0000000000000000ll, 0x14C1D7C1CFFEC79Ell);
test_encrypt(0x0101010101012001ll, 0x0000000000000000ll, 0x1DE5279DAE3BED6Fll);
test_encrypt(0x0101010101011001ll, 0x0000000000000000ll, 0xE941A33F85501303ll);
test_encrypt(0x0101010101010801ll, 0x0000000000000000ll, 0xDA99DBBC9A03F379ll);
test_encrypt(0x0101010101010401ll, 0x0000000000000000ll, 0xB7FC92F91D8E92E9ll);
test_encrypt(0x0101010101010201ll, 0x0000000000000000ll, 0xAE8E5CAA3CA04E85ll);
test_encrypt(0x0101010101010180ll, 0x0000000000000000ll, 0x9CC62DF43B6EED74ll);
test_encrypt(0x0101010101010140ll, 0x0000000000000000ll, 0xD863DBB5C59A91A0ll);
test_encrypt(0x0101010101010120ll, 0x0000000000000000ll, 0xA1AB2190545B91D7ll);
test_encrypt(0x0101010101010110ll, 0x0000000000000000ll, 0x0875041E64C570F7ll);
test_encrypt(0x0101010101010108ll, 0x0000000000000000ll, 0x5A594528BEBEF1CCll);
test_encrypt(0x0101010101010104ll, 0x0000000000000000ll, 0xFCDB3291DE21F0C0ll);
test_encrypt(0x0101010101010102ll, 0x0000000000000000ll, 0x869EFD7F9F265A09ll);
test_encrypt(0x1046913489980131ll, 0x0000000000000000ll, 0x88D55E54F54C97B4ll);
test_encrypt(0x1007103489988020ll, 0x0000000000000000ll, 0x0C0CC00C83EA48FDll);
test_encrypt(0x10071034C8980120ll, 0x0000000000000000ll, 0x83BC8EF3A6570183ll);
test_encrypt(0x1046103489988020ll, 0x0000000000000000ll, 0xDF725DCAD94EA2E9ll);
test_encrypt(0x1086911519190101ll, 0x0000000000000000ll, 0xE652B53B550BE8B0ll);
test_encrypt(0x1086911519580101ll, 0x0000000000000000ll, 0xAF527120C485CBB0ll);
test_encrypt(0x5107B01519580101ll, 0x0000000000000000ll, 0x0F04CE393DB926D5ll);
test_encrypt(0x1007B01519190101ll, 0x0000000000000000ll, 0xC9F00FFC74079067ll);
test_encrypt(0x3107915498080101ll, 0x0000000000000000ll, 0x7CFD82A593252B4Ell);
test_encrypt(0x3107919498080101ll, 0x0000000000000000ll, 0xCB49A2F9E91363E3ll);
test_encrypt(0x10079115B9080140ll, 0x0000000000000000ll, 0x00B588BE70D23F56ll);
test_encrypt(0x3107911598090140ll, 0x0000000000000000ll, 0x406A9A6AB43399AEll);
test_encrypt(0x1007D01589980101ll, 0x0000000000000000ll, 0x6CB773611DCA9ADAll);
test_encrypt(0x9107911589980101ll, 0x0000000000000000ll, 0x67FD21C17DBB5D70ll);
test_encrypt(0x9107D01589190101ll, 0x0000000000000000ll, 0x9592CB4110430787ll);
test_encrypt(0x1007D01598980120ll, 0x0000000000000000ll, 0xA6B7FF68A318DDD3ll);
test_encrypt(0x1007940498190101ll, 0x0000000000000000ll, 0x4D102196C914CA16ll);
test_encrypt(0x0107910491190401ll, 0x0000000000000000ll, 0x2DFA9F4573594965ll);
test_encrypt(0x0107910491190101ll, 0x0000000000000000ll, 0xB46604816C0E0774ll);
test_encrypt(0x0107940491190401ll, 0x0000000000000000ll, 0x6E7E6221A4F34E87ll);
test_encrypt(0x19079210981A0101ll, 0x0000000000000000ll, 0xAA85E74643233199ll);
test_encrypt(0x1007911998190801ll, 0x0000000000000000ll, 0x2E5A19DB4D1962D6ll);
test_encrypt(0x10079119981A0801ll, 0x0000000000000000ll, 0x23A866A809D30894ll);
test_encrypt(0x1007921098190101ll, 0x0000000000000000ll, 0xD812D961F017D320ll);
test_encrypt(0x100791159819010Bll, 0x0000000000000000ll, 0x055605816E58608Fll);
test_encrypt(0x1004801598190101ll, 0x0000000000000000ll, 0xABD88E8B1B7716F1ll);
test_encrypt(0x1004801598190102ll, 0x0000000000000000ll, 0x537AC95BE69DA1E1ll);
test_encrypt(0x1004801598190108ll, 0x0000000000000000ll, 0xAED0F6AE3C25CDD8ll);
test_encrypt(0x1002911598100104ll, 0x0000000000000000ll, 0xB3E35A5EE53E7B8Dll);
test_encrypt(0x1002911598190104ll, 0x0000000000000000ll, 0x61C79C71921A2EF8ll);
test_encrypt(0x1002911598100201ll, 0x0000000000000000ll, 0xE2F5728F0995013Cll);
test_encrypt(0x1002911698100101ll, 0x0000000000000000ll, 0x1AEAC39A61F0A464ll);
test_encrypt(0x7CA110454A1A6E57ll, 0x01A1D6D039776742ll, 0x690F5B0D9A26939Bll);
test_encrypt(0x0131D9619DC1376Ell, 0x5CD54CA83DEF57DAll, 0x7A389D10354BD271ll);
test_encrypt(0x07A1133E4A0B2686ll, 0x0248D43806F67172ll, 0x868EBB51CAB4599All);
test_encrypt(0x3849674C2602319Ell, 0x51454B582DDF440All, 0x7178876E01F19B2All);
test_encrypt(0x04B915BA43FEB5B6ll, 0x42FD443059577FA2ll, 0xAF37FB421F8C4095ll);
test_encrypt(0x0113B970FD34F2CEll, 0x059B5E0851CF143All, 0x86A560F10EC6D85Bll);
test_encrypt(0x0170F175468FB5E6ll, 0x0756D8E0774761D2ll, 0x0CD3DA020021DC09ll);
test_encrypt(0x43297FAD38E373FEll, 0x762514B829BF486All, 0xEA676B2CB7DB2B7All);
test_encrypt(0x07A7137045DA2A16ll, 0x3BDD119049372802ll, 0xDFD64A815CAF1A0Fll);
test_encrypt(0x04689104C2FD3B2Fll, 0x26955F6835AF609All, 0x5C513C9C4886C088ll);
test_encrypt(0x37D06BB516CB7546ll, 0x164D5E404F275232ll, 0x0A2AEEAE3FF4AB77ll);
test_encrypt(0x1F08260D1AC2465Ell, 0x6B056E18759F5CCAll, 0xEF1BF03E5DFA575All);
test_encrypt(0x584023641ABA6176ll, 0x004BD6EF09176062ll, 0x88BF0DB6D70DEE56ll);
test_encrypt(0x025816164629B007ll, 0x480D39006EE762F2ll, 0xA1F9915541020B56ll);
test_encrypt(0x49793EBC79B3258Fll, 0x437540C8698F3CFAll, 0x6FBF1CAFCFFD0556ll);
test_encrypt(0x4FB05E1515AB73A7ll, 0x072D43A077075292ll, 0x2F22E49BAB7CA1ACll);
test_encrypt(0x49E95D6D4CA229BFll, 0x02FE55778117F12All, 0x5A6B612CC26CCE4All);
test_encrypt(0x018310DC409B26D6ll, 0x1D9D5C5018F728C2ll, 0x5F4C038ED12B2E41ll);
test_encrypt(0x1C587F1C13924FEFll, 0x305532286D6F295All, 0x63FAC0D034D9F793ll);
printf("\n");
/* }}} */
/* {{{ Decryption Tests */
printf("Testing Decryption:\n");
test_decrypt(0x8001010101010101ll, 0x95A8D72813DAA94Dll, 0x0000000000000000ll);
test_decrypt(0x4001010101010101ll, 0x0EEC1487DD8C26D5ll, 0x0000000000000000ll);
test_decrypt(0x2001010101010101ll, 0x7AD16FFB79C45926ll, 0x0000000000000000ll);
test_decrypt(0x1001010101010101ll, 0xD3746294CA6A6CF3ll, 0x0000000000000000ll);
test_decrypt(0x0801010101010101ll, 0x809F5F873C1FD761ll, 0x0000000000000000ll);
test_decrypt(0x0401010101010101ll, 0xC02FAFFEC989D1FCll, 0x0000000000000000ll);
test_decrypt(0x0201010101010101ll, 0x4615AA1D33E72F10ll, 0x0000000000000000ll);
test_decrypt(0x0180010101010101ll, 0x2055123350C00858ll, 0x0000000000000000ll);
test_decrypt(0x0140010101010101ll, 0xDF3B99D6577397C8ll, 0x0000000000000000ll);
test_decrypt(0x0120010101010101ll, 0x31FE17369B5288C9ll, 0x0000000000000000ll);
test_decrypt(0x0110010101010101ll, 0xDFDD3CC64DAE1642ll, 0x0000000000000000ll);
test_decrypt(0x0108010101010101ll, 0x178C83CE2B399D94ll, 0x0000000000000000ll);
test_decrypt(0x0104010101010101ll, 0x50F636324A9B7F80ll, 0x0000000000000000ll);
test_decrypt(0x0102010101010101ll, 0xA8468EE3BC18F06Dll, 0x0000000000000000ll);
test_decrypt(0x0101800101010101ll, 0xA2DC9E92FD3CDE92ll, 0x0000000000000000ll);
test_decrypt(0x0101400101010101ll, 0xCAC09F797D031287ll, 0x0000000000000000ll);
test_decrypt(0x0101200101010101ll, 0x90BA680B22AEB525ll, 0x0000000000000000ll);
test_decrypt(0x0101100101010101ll, 0xCE7A24F350E280B6ll, 0x0000000000000000ll);
test_decrypt(0x0101080101010101ll, 0x882BFF0AA01A0B87ll, 0x0000000000000000ll);
test_decrypt(0x0101040101010101ll, 0x25610288924511C2ll, 0x0000000000000000ll);
test_decrypt(0x0101020101010101ll, 0xC71516C29C75D170ll, 0x0000000000000000ll);
test_decrypt(0x0101018001010101ll, 0x5199C29A52C9F059ll, 0x0000000000000000ll);
test_decrypt(0x0101014001010101ll, 0xC22F0A294A71F29Fll, 0x0000000000000000ll);
test_decrypt(0x0101012001010101ll, 0xEE371483714C02EAll, 0x0000000000000000ll);
test_decrypt(0x0101011001010101ll, 0xA81FBD448F9E522Fll, 0x0000000000000000ll);
test_decrypt(0x0101010801010101ll, 0x4F644C92E192DFEDll, 0x0000000000000000ll);
test_decrypt(0x0101010401010101ll, 0x1AFA9A66A6DF92AEll, 0x0000000000000000ll);
test_decrypt(0x0101010201010101ll, 0xB3C1CC715CB879D8ll, 0x0000000000000000ll);
test_decrypt(0x0101010180010101ll, 0x19D032E64AB0BD8Bll, 0x0000000000000000ll);
test_decrypt(0x0101010140010101ll, 0x3CFAA7A7DC8720DCll, 0x0000000000000000ll);
test_decrypt(0x0101010120010101ll, 0xB7265F7F447AC6F3ll, 0x0000000000000000ll);
test_decrypt(0x0101010110010101ll, 0x9DB73B3C0D163F54ll, 0x0000000000000000ll);
test_decrypt(0x0101010108010101ll, 0x8181B65BABF4A975ll, 0x0000000000000000ll);
test_decrypt(0x0101010104010101ll, 0x93C9B64042EAA240ll, 0x0000000000000000ll);
test_decrypt(0x0101010102010101ll, 0x5570530829705592ll, 0x0000000000000000ll);
test_decrypt(0x0101010101800101ll, 0x8638809E878787A0ll, 0x0000000000000000ll);
test_decrypt(0x0101010101400101ll, 0x41B9A79AF79AC208ll, 0x0000000000000000ll);
test_decrypt(0x0101010101200101ll, 0x7A9BE42F2009A892ll, 0x0000000000000000ll);
test_decrypt(0x0101010101100101ll, 0x29038D56BA6D2745ll, 0x0000000000000000ll);
test_decrypt(0x0101010101080101ll, 0x5495C6ABF1E5DF51ll, 0x0000000000000000ll);
test_decrypt(0x0101010101040101ll, 0xAE13DBD561488933ll, 0x0000000000000000ll);
test_decrypt(0x0101010101020101ll, 0x024D1FFA8904E389ll, 0x0000000000000000ll);
test_decrypt(0x0101010101018001ll, 0xD1399712F99BF02Ell, 0x0000000000000000ll);
test_decrypt(0x0101010101014001ll, 0x14C1D7C1CFFEC79Ell, 0x0000000000000000ll);
test_decrypt(0x0101010101012001ll, 0x1DE5279DAE3BED6Fll, 0x0000000000000000ll);
test_decrypt(0x0101010101011001ll, 0xE941A33F85501303ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010801ll, 0xDA99DBBC9A03F379ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010401ll, 0xB7FC92F91D8E92E9ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010201ll, 0xAE8E5CAA3CA04E85ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010180ll, 0x9CC62DF43B6EED74ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010140ll, 0xD863DBB5C59A91A0ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010120ll, 0xA1AB2190545B91D7ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010110ll, 0x0875041E64C570F7ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010108ll, 0x5A594528BEBEF1CCll, 0x0000000000000000ll);
test_decrypt(0x0101010101010104ll, 0xFCDB3291DE21F0C0ll, 0x0000000000000000ll);
test_decrypt(0x0101010101010102ll, 0x869EFD7F9F265A09ll, 0x0000000000000000ll);
printf("\n");
/* }}} */
return EXIT_SUCCESS;
}