const unsigned long BLOWFISH_P[] = { 0xECE2997A,0x878D9BB6,0xBD99A37F,0x87CE5082, 0x731DA749,0x8D1593C4,0x7759157C,0x64B420F3, 0x16FE203E,0x8D5D0E1A,0x9F8BFD16,0xE50AAE06, 0x6F69D85E,0x4A2B2E2C,0x6C6092F3,0x3E6E839C, 0x7332BC74,0xEB9C5558, }; const unsigned long BLOWFISH_S[] = { 0x421D7293,0x2EC59345,0x9EACE875,0x4B558191, 0xD37BEE4C,0x5D9A8E3C,0x21102E6F,0x478600F2, 0xFCC4FA37,0x78D81A66,0xC1D6A5A6,0x5CF4D077, 0x5B001183,0x6C6BF222,0xA1E6B437,0x25258DFC, 0xB0B6A5C9,0xB922A022,0x6F599F11,0x33AC5389, 0x0BD2CE8A,0xD2BF3D3B,0xEDB1971C,0xABFA231C, 0x250CC0B4,0x1D8F3A1D,0x9CC9C373,0x470F5F5D, 0xF1B26237,0x7CCECDEB,0xB2652840,0xC43C5DC7, 0x52AB9291,0x3CA0F779,0x93C120E2,0x9657FE6C, 0x18E28A36,0x38CBD5C3,0x91321972,0x143C8019, 0x9A986345,0x089BC863,0x088D97D9,0x9AA5298F, 0xBDB4C22E,0xFDDB607B,0x09F6200E,0xF4762B60, 0x112068A4,0xC9C34AAA,0x1646AE14,0x3ED8ABC3, 0x812F9820,0xBE8166F2,0x11992911,0x7E73D832, 0xFFEEEB21,0x2914E308,0x52762303,0x3A1AAF59, 0x6D684400,0x68CEEA3F,0x8020E74C,0x23932FD1, 0x7F81C903,0x28D1DF23,0x47C6546F,0x10E9906D, 0x2FC7E523,0x788B31B6,0xA34779FE,0xD4D3CBCB, 0xA2669C45,0x160EE34B,0xEEC86439,0x01A68E02, 0xC19122FA,0x47108632,0x5ED39396,0x3ACE13D8, 0x1F6DA64C,0x8BDF89A4,0x0340FB9E,0x139DBCFF, 0x5F975A6E,0x0BC71EE0,0x4BCD423F,0xD17F8EBD, 0x9C32844C,0x231E2B4F,0x32764ECA,0x31A86FEB, 0x510786F3,0xC3AD90C6,0x723A86FE,0x5B473CF0, 0x0F1D8D3D,0xD53B2CD6,0x3EB4E682,0xB7F499B6, 0x364C0FA9,0x8C6DFE24,0xEFDD8593,0x5A8C8FD9, 0xFB09F4FF,0x755D8664,0x18172338,0xA730DF83, 0x6D5CAF4D,0xE1AF6FC8,0x52A3A7C5,0xE92640C0, 0x1D26389F,0xE6F81F9F,0x30EE4466,0xA9A2B2FD, 0xDE5E9F8B,0x820D01C4,0x801A3EBF,0x868D144F, 0xE19FD5CC,0xED5982B9,0x40788FA3,0x9D5D0603, 0x2EBB28DA,0x6440756F,0x462528A1,0x180987F2, 0xDCD71AC1,0x8322365A,0x3567ECAF,0x9C1AB502, 0x3AFCB4C0,0x2D316F8D,0xF838B706,0x83D6167A, 0xA8CA2242,0x92251B43,0xFB475A07,0xD6B84FF6, 0xE6E545FF,0xED984921,0xE85F1731,0xAB95905C, 0x139A180D,0xBDF6B63E,0x2E49C8D0,0x91E936B4, 0xA5CD4333,0x6E4420B3,0x99846D33,0xBB6A36F2, 0xBCC62D7E,0x83B9C684,0x4F1D67C9,0x6EEA5BE4, 0xA5C1FBA9,0xD5903D0A,0x3A7D01A3,0xCEF6B09E, 0x8A9038DD,0x6CC5D354,0xFC8E6BE9,0xC31EB29C, 0xF6EB895D,0xBC5CC652,0x108FC0ED,0xBC4BD7C6, 0xF5B247DA,0xC8B6DC25,0xA9AC3ABE,0x2472E65C, 0x20C3DB8B,0xC3C2874F,0x86C09F29,0x3138F070, 0x971005D9,0xC81A7769,0x16D7B065,0xD66B2E55, 0xB85D5B2C,0xA3D31A82,0xB3EEA578,0xA813810E, 0x070D1377,0xD445453D,0xC71D5128,0xC6BE1578, 0xF08F6428,0xBB6A896D,0xC89AF5BE,0xC917210B, 0x7285DFC4,0x68B5EA23,0x3EA24BC8,0x83F2EFA1, 0x3C4F6B8C,0x709EF994,0x04468F7E,0x07F1E3E2, 0xA4B6C9A8,0xECF2B777,0xD9583CA8,0x992DA6B4, 0xCDB55EE2,0x7BCB7842,0xE7E9B318,0x43893D4A, 0xFF8CC771,0xB9C65E4D,0xCCD233D1,0x5B394220, 0x11655394,0xD093D599,0xD54CBED0,0xC39214C9, 0x49BC9528,0xCD176E1D,0x953E5364,0x0245FBAC, 0xA4CB8CD4,0x44DA688D,0xBEE0F8FD,0x34906411, 0x29205E3A,0xBBF92030,0xDFEDC07A,0xF66F3C07, 0x78FFC26D,0x7005FE9A,0x3BF5FE65,0x34CA0E22, 0x51E859F8,0x73866086,0x025BA522,0xE1BF5A23, 0xE9FBF06F,0x78630F0F,0x49D87ED6,0x1E4E522E, 0xD7DAA554,0x73F897DA,0x7E837E88,0x19C4F285, 0xEF5DCED2,0xBF4CBE2C,0x6B3C44ED,0x35197A88, 0xC3021855,0x278FD11F,0x55854B29,0xA71A1A1D, 0xFA3CBA9E,0x71A8DED1,0x04286C0D,0x51A31113, 0xBF38301F,0x6A105725,0xE0FC3F53,0x79FC8C6F, 0x0A8E94EB,0xF9598BE7,0xB53147A5,0x1867499F, 0x77680751,0xDE9854A7,0x4E5B491C,0x8076EE6D, 0xF800F274,0x3E027A2B,0x618E1D68,0x95E7D26A, 0xE88DF5DA,0xDCA65187,0x706D9C25,0x3D32FFA6, 0x26154F23,0x481661AC,0x1C9E7501,0x2668D7CA, 0x29AE367B,0xAB1BCAB4,0x5956746C,0x408FB623, 0x70FDA74D,0x267A3C22,0xCE245B56,0x6D46CBC5, 0x3E9A1DBF,0xF4B14956,0x6433C3E9,0x2512F370, 0x710A1269,0x45D25252,0x8F0E0035,0xE93E893F, 0x059F0EF9,0xBAACE2BA,0x0442C220,0x4315F1FC, 0xB46B7BC8,0xA9E5978D,0xB887DFE3,0x934F68B0, 0xF5A3AD6D,0xFAF2A641,0x62E319A8,0xAA7BA0FC, 0x97933E9F,0x905BA2A2,0x22698B3E,0x7C403613, 0x48B91B6C,0x76D589C3,0xEA0AF0D9,0x254541E4, 0x4C68FCA3,0x861A5BBD,0x0C3D2814,0x11410597, 0x39B93083,0x9856F056,0xF9D62D99,0xBB857A8A, 0xDCDE7FEE,0x854B8A34,0x11941383,0xE7A00321, 0x59414DEF,0x4AD7291D,0x892FA9CA,0x08E8F54B, 0x8DC5620A,0x2057BAC5,0xEF7A58AC,0x07A149C4, 0xBA8F3C45,0x1D96D12B,0x9C66B748,0x95C5B4B7, 0xED541CC2,0xA251536D,0xA4EDBB76,0x38604523, 0x635E92E9,0xE5A2F89E,0x5B525EAD,0x5CA050C9, 0x3C87A7A9,0x89070858,0x37152C1A,0xBAA2FE68, 0x27033C24,0x50C19D69,0x965E070C,0x611C561F, 0x4FB28DD1,0xEFFD2B22,0xC9FCD75C,0x82192997, 0x0420F5A7,0x04B11929,0xF60465E3,0x988CCC21, 0x8B2BA5A1,0x70421CF6,0x8D3A12B2,0x5A9245A6, 0xC7F6141A,0xD7C28FF6,0xE8669164,0x60AD7642, 0x918FB28A,0x7E44CA1E,0xA42DF8EE,0x06FD9F89, 0x3EC461C1,0x588BB24A,0xD770532B,0xD3A71097, 0x1BB81AFE,0xC824B481,0x488393DA,0x73C1E3AF, 0x24B1C15E,0x48AAC468,0xBD55BEF3,0x9FC11E9D, 0xEF2CE2FF,0xBD633C50,0x6FDE4D94,0x2C31F2F6, 0x6EDD1BC0,0x43B3D5CB,0x21A9DE5A,0x3193CC6A, 0x16604CA5,0x2A3C5050,0x32BAFA40,0x082E56AF, 0x8A085A4D,0x4B278229,0xE2693335,0x4B94B79A, 0xF1CF9999,0xF5674594,0x13FFC8AE,0x0FA8089D, 0x77A8DADD,0x10352C72,0x84AD2262,0x3E9687B2, 0x0F644F40,0xF84EB9FC,0x70F83CEC,0xC0014469, 0x88BD4381,0x8697108F,0xC93D7C3A,0x7C328F90, 0xBD14A599,0x435D6435,0xE73B4D63,0x80BCA793, 0x1A08E670,0x173D780F,0x38890082,0xF728D66C, 0x78AD5448,0x5848FAEF,0x28766E24,0x25B37D9B, 0xDD7B5711,0x3061587B,0x7D7F9C69,0x26CDC35C, 0x186E5105,0x63F6BACF,0x785FC8E2,0xB3D56F12, 0x9B5EE2AE,0x37831B5D,0x4C24053A,0x4AFB1ED4, 0x19C8E276,0xAFAB7962,0xB5B6EFBB,0xA845B632, 0xDD267596,0xAE653EF6,0xDCBE94B5,0x8D2F32BD, 0x986F8F0D,0x6812F0C5,0x2FD16C8A,0xA178342B, 0x28F6453B,0xBB389EF4,0xAE4FEF56,0xAD769918, 0xA255A773,0x11448CA8,0xA455382B,0xB1ACCBA6, 0xD40C2707,0x01022D06,0x1260150F,0x03549650, 0x875FF827,0x8848FD7F,0x5724F044,0x72AADBAA, 0xD22038BF,0x4C632982,0xC05D490A,0xAD7C22F9, 0xB5D81AED,0x87B3DCC8,0x6CA81B06,0x379475FC, 0x82F94B61,0x188E3FF8,0x3105EE03,0x4C81B5C0, 0xBCA1FE23,0x288C904F,0x67CAB301,0xCD839435, 0xEDBC05E4,0x89F9CDA7,0x042A93A2,0xA27CD38E, 0x2D56C211,0xE7AD278D,0x1C7E1D41,0xE7F7B82A, 0x83EF848B,0xB0343EF5,0xD86DE0CE,0x8C887D41, 0x633F4E48,0xB61E3116,0x8D381492,0x64EE8715, 0xE9593093,0x932F8560,0x29BBF110,0x849DDDA2, 0x72E4084F,0xE0E2FC14,0xD449B863,0x28949AA5, 0x6F3F93DE,0x5610FD4B,0x6626E7E8,0x7ED92BBC, 0xE5C54C68,0x7A21C8B4,0xCE7DF6AA,0x4E7E6D4D, 0xE0C71068,0x07A0D021,0xBD93F36C,0x4FA001AF, 0x9DF25F75,0xB1EEAAC2,0x272A3BEA,0x90F35536, 0x5D2DF0F5,0x61862870,0x3A72E272,0xDA5C0E3C, 0x58BEAA84,0x0C5D82BD,0xEE7B3142,0x1A2C7CF7, 0xE166D9E9,0x8D210F18,0x9AFA021F,0x8CA402C4, 0x07D5AABC,0xEE604E42,0xA083A093,0xA8025CA2, 0xFF529528,0x2021CC44,0x858A6FFE,0x390E00AD, 0x95F91CAB,0x94E28A82,0x015144A7,0x847B894A, 0xB1459D0C,0x90EC6130,0xB193FCA7,0x5CF05C19, 0xABE438AF,0x8633254E,0xDA173369,0x9929619F, 0x43B1F909,0xEE249E40,0xC977654B,0x5CEEDE29, 0x376AFD4E,0xA156EA63,0x2C52E11B,0x6321370A, 0x5C37C873,0xD8B97243,0x5E306568,0x67AB98C7, 0xF92A3D45,0x9CE53640,0xBFC0F799,0x780E7221, 0x30240C05,0x53D4FC61,0x6F4F00A5,0x7019DCCE, 0xD210665D,0xD4DE43BF,0xA0C4906D,0x9A959121, 0x6B3C9A6E,0xDA6CA139,0xF0EC6479,0x1239DFE7, 0xF849A1E1,0x642DD95D,0xF97F5545,0x9535790A, 0x26226531,0xA38E6F02,0x093AD3A5,0x020955BB, 0x7148D565,0xF63E8167,0xA55502C8,0x941EACF2, 0xA23D89FF,0x7BE7C397,0x963BAD54,0x07D31203, 0xA8C5CFD6,0x88998563,0x7070518A,0x0ADDE3B9, 0x3CEEB1CF,0xA85CB4C1,0xEF6CE433,0xDE30E959, 0x5767C0EC,0x6A410015,0x93AECAC8,0xE7D933B5, 0x0BC4D71B,0xE52FA620,0xE5AC4224,0xEE189ED8, 0x25370151,0x641D64B8,0x57EB26B0,0xCC035118, 0xCE3AB51F,0xE74B4A3F,0x56400FCB,0xDA240998, 0x795BBE06,0x0FE37753,0x58A8F106,0x0C4550EA, 0xAC660A0C,0xC0360865,0x0F5A373F,0xFB77C558, 0xABA1BE8C,0x3A60CB0F,0x5B4660CB,0xE2DCD316, 0x7EDF11A4,0x8FB55220,0xFC3E3EA9,0x79A91FA3, 0x72BA250C,0xF3F1FB10,0x06650DB7,0x4888875C, 0x038B941D,0x0BC7CB8A,0xA558266A,0x8125270C, 0xF9C6A655,0x97375314,0x3D5AC65E,0x7BF5B5FB, 0x7DE1B472,0x8AD00491,0x23434745,0xF8C72F5A, 0xA9E96818,0x877E8739,0xE129CE24,0x60016BDA, 0xA589380F,0xE2A2136D,0xF28791E9,0x98023D6E, 0x3F60A5B5,0xA2D81D0A,0x2B72C734,0xC2FED55D, 0xBE72E7E4,0x75C4BE91,0x18000D47,0x44648EEE, 0xBA5F98C3,0x8AFE6227,0x549FB360,0x0A5F91BC, 0xB5FE7915,0x925145CC,0x60B52089,0x4F2775F9, 0xF12E7521,0x5979EC96,0xB40C584C,0xD9079BFD, 0x6E0087D3,0x75F304F3,0x4D8CF539,0xA9D5B761, 0xC2B6C8AC,0xDB62C83F,0x478AD1F6,0x37F5D9E9, 0x27312221,0x77D44C63,0xCDB8BC34,0x6DD03B96, 0xFCA9A53E,0xF8748694,0x1DBB0972,0x3CF7831E, 0x40B045D8,0xA7177F11,0x999409EE,0x737D5F7D, 0xE7DD0A3E,0x5423FC7C,0x1947177E,0x2B1BD645, 0xD81780D9,0x67ED703A,0x48E2E18E,0xC26EE041, 0xDCE51290,0x1BC8E826,0x19BE2BBC,0xB5CB2246, 0x33A54A14,0x3DEB0BDC,0xCD2FA6E2,0x5F1F261C, 0xD95013C0,0x545F7DC8,0x11E3ECD4,0x48C36163, 0x87417051,0x91CD5A84,0x4807B0AB,0x9C560515, 0x33176BCD,0xA47CD74E,0x74C4CAE8,0xB988A1D9, 0xE99E3134,0x6871F912,0x49918C65,0xAFA0FD31, 0x5F62AB88,0x39375AE1,0x64665842,0x00AB4DFC, 0x43F94B42,0xBDC0450F,0xD49520D0,0x6F215C70, 0xF3EACBEA,0x6A0293B7,0x10ECE2FE,0x81BDFFC0, 0x8DB5952A,0x19D8B352,0xFA341EB3,0x4038059D, 0x8C351E18,0xB6E931C1,0xF2ED3ECA,0x384D0BD9, 0xED004F2B,0x6F3A34B5,0x9F63CAEB,0xFC6ED801, 0x67B611D7,0xB1729B09,0xF7F3FC13,0x3F45FC82, 0x95B6F12B,0x798357F8,0xEC7005CF,0x9729BF68, 0xFEB68AD6,0xE6214661,0xC79F2FC6,0x2A62FC00, 0x952EE069,0xC324D73E,0xBB75D0B4,0x1B3C157A, 0x138D6D37,0x7FD3535B,0x401F5BC4,0xFB6A17EE, 0xDAA02563,0xC0D11734,0x4A14F41F,0xAFF1D9BD, 0xD576BC77,0xE76E394D,0x999A7F72,0xB87637AC, 0x4500E2FD,0x4DE46925,0x105B44BF,0xE7719951, 0xB23F6608,0xDA09378B,0xE6785D14,0xB9D3D087, 0x01E43279,0xE0E21827,0x61A78890,0x5430F676, 0x3BEF316E,0xD5668DFC,0x5965785B,0x69756DE0, 0x4D27188F,0x461A3E80,0xD0017994,0xD053E020, 0x4C354799,0x743ACF50,0x512AC0D4,0xCB55EBFD, 0x0884E3AE,0x3FA2346E,0x843E8966,0x38B8A818, 0x82B70A21,0x140FB35D,0x2705F723,0x7D061F13, 0x8CD668E6,0x657B5F87,0x8050CA9B,0x949857EE, 0x2E79EA0F,0x4415B763,0xC289FEF4,0x41CE8F7A, 0xDEE4FB69,0x38D698E1,0xEBCFAE8D,0xABB4B975, 0xA6EFF066,0x19442C2B,0x823984F6,0xAD69E725, 0x35B84874,0xBA7D95AC,0xE55CD936,0xA3B31928, 0x1BC94FEA,0x1DB555A6,0x8D5685D6,0xE82FE735, 0x05DD952A,0xEAD60A51,0xA8C23FD9,0x23E2F4B1, 0x00BB7FCF,0x28D1785D,0xB9BA3917,0xE9309960, 0x977DFE25,0xA27813A9,0xF77DDA48,0x92F1CDC9, 0xB071A5A2,0xB72063B9,0x5ED69228,0xD7DFF757, 0x9559F7E1,0xE10A8CD8,0xA3A2E8CE,0x37ACEC9A, 0x327135A0,0xE2589B14,0x974450F0,0x5D20C609, 0x84BEAD73,0x16DA4AA7,0x2A56C444,0x9383D8AE, 0x87A85082,0xD6464389,0xD7F0E4FB,0x69E03B48, 0x89FE2FBB,0xA3BB6B64,0xE2742F13,0x0CB318F5, 0xA35B334E,0x9409122A,0x6A1AA74D,0xA66D37BD, 0xFED04165,0x54AFC1D7,0xCAE9321A,0x6EBF1FCA, 0xDBD82D9C,0xA6AF629A,0x020BE359,0xE489161E, 0xE8D2E4CE,0xB8688AD8,0xB36D6260,0xE75B3F0D, 0x3B1F2ED8,0x6A57437E,0x66AA1B5A,0x801F1985, 0x12398344,0x1D76CB53,0x8B14271D,0x94EB5CD1, 0x95BB6C11,0xAF29869F,0x8B0BD55F,0xDB4A96AC, 0x5D76DBB8,0xB79B2BD2,0x1DE977D4,0x70C46079, 0x158C4A11,0x2A27C18A,0x1279D53C,0x19B3494A, 0x1D72B811,0xAA19F50D,0x83755185,0x07692F45, 0xBC3C96DE,0x996C5C57,0x8D7FE502,0x9078A744, 0x3F2E6EB8,0x47871BCC,0x745D634A,0xAAAC893E, 0xF90A6979,0x33B84450,0xBB66F3E8,0xB1D3F872, 0x5351A2E3,0x456026D2,0xBE493C68,0xEE1F2739, 0x446A9AC8,0xA42D07B9,0x4C9D02A5,0x474E7675, 0xA9A0C840,0x719E8295,0x7D2C9156,0xCEF602A5, 0x0FBA9D12,0x37349207,0xC0F3C7C9,0xC513B94E, 0x428067F3,0x6A73EC2A,0x1124068E,0x5C08C9B1, 0x02A66533,0x9832196C,0x60317F5A,0x455A4886, 0x9F7C495B,0x87BB6754,0xA686DA84,0x6E0DC2A1, 0xB9548F8F,0xFE383139,0xCCFA6A55,0x15418A66, 0x512918A4,0x60ED8CD0,0x0F556316,0xBBADA8D0, 0xB1DB7D9F,0x2F0A9259,0x92FD3E34,0x636BC287, 0x04C837D4,0xB30BB311,0x4AE4A9C8,0x6561A8C6, 0xDE3E342B,0xB9DE12C4,0xA5AB0BF6,0x20A9FB0E, 0xB669B1DD,0xCBFBBA85,0x264332EE,0x1CD28CC6, 0x240CDDD3,0xBFBE7BA3,0x431A4A71,0xB55FC792, 0x48E33646,0x4380FD82,0x9DF7FBBD,0xBC30DE31, 0x3D950D25,0xA0775F51,0x8AE9F434,0xDCE3D490, 0xF2EB87C3,0x0426BE6E,0xAAF40F97,0xD034EC8D, 0x2AC4B781,0x1E382DE5,0xBB09F263,0x6100257E, 0x82CCFE8A,0xF350DF77,0x86FA5CD4,0x2BF09255, 0xEDD42D4D,0x812DEE18,0xCF47B5CF,0x8D059B5A, 0x87BB31B3,0x6DFCA21B,0x69C60380,0x790FED88, 0xAB68958B,0x9E3A1278,0x3A7A7D9D,0xD7FD6BF6, };