Need PureBasic-Blowfish-code for Linux

Everything else that doesn't fall into one of the other PB categories.
User avatar
Kukulkan
Addict
Addict
Posts: 1396
Joined: Mon Jun 06, 2005 2:35 pm
Location: germany
Contact:

Need PureBasic-Blowfish-code for Linux

Post by Kukulkan »

Hi,

I have to convert a windows-based PB-program to linux. The only problem seem to be the use of dicryptosys.dll for Blowfish encryption.

Is there any blowfish-code available for PB?

Or any library that works on linux for this?

I only encrypt and decrypt short strings with a maximum length of 1KB. So, the speed is not the critical part.

Kukulkan
Hatonastick
Enthusiast
Enthusiast
Posts: 149
Joined: Wed Apr 27, 2005 11:50 am
Location: Adelaide, Australia
Contact:

Post by Hatonastick »

I could drag out my old PureCrypt library, cut out everything except for Blowfish, make it compilable for Linux/*NIX if you like. That's if you haven't found another solution yet. Hmm either that or get LibTomCrypt and compile it under Linux (which it will do) and access it directly.

Actually heres the Blowfish.c file and the Blowfish.h file if someone wants to translate it into PureBASIC. I'm out of practice myself so don't think I could do it. I'm sure it's possible though.
///////////////////////////////////////////////////////////////////////////////
// PureCrypt v1.0a //
///////////////////////////////////////////////////////////////////////////////
// Blowfish cipher routines. //
///////////////////////////////////////////////////////////////////////////////

// Endian specific macros - converting to a big endian machine would need to be
// done here
#include "System.h"
// Bits and pieces relevant for the functions below
#include "Blowfish.h"
// Mostly just needed for the HeapAlloc() function
#include <windows.h>

// The PB memory heap handle
extern int *PB_MemoryBase;

// PureCrypt API //////////////////////////////////////////////////////////////

// These are probably leaking memory like a sieve due to the fact that they return
// a new block of allocated memory each time they are called. Might have to somehow
// check to see if heap has been allocated and free it before creating a new one.
// Maybe handle it a bit like strok(). ie.

// Blowfish encode 8 bytes
PBCHAR PB_BlowfishEncode(uchar8 *password, ulong32 length, uchar8 *buffer, int rounds)
{
BLOWFISH key;
char *result = NULL;

// Setup the number of rounds
switch (rounds) {
case 0:
rounds = 0;
case 1:
rounds = 16;
default:
rounds = 0;
}

// Have we got input?
if (buffer && *buffer && password && *password && length > 0) {
if (blowfish_setup(password, length, rounds, &key) != TRUE) {
return result;
}
// Allocate memory within the PB heap
result = HeapAlloc(PB_MemoryBase, HEAP_ZERO_MEMORY, 8);
if (blowfish_ecb_encrypt(buffer, (unsigned char *)result, &key) != TRUE) {
// Free the allocated memory
HeapFree(PB_MemoryBase, 0, result);
result = NULL;
return result;
}
}

return result;
}

// Blowfish decode 8 bytes
PBCHAR PB_BlowfishDecode(uchar8 *password, ulong32 length, uchar8 *buffer, int rounds)
{
BLOWFISH key;
char *result = NULL;

// Setup the number of rounds
switch (rounds) {
case 0:
rounds = 0;
case 1:
rounds = 16;
default:
rounds = 0;
}

// Have we got input?
if (buffer && *buffer && password && *password && length > 0) {
if (blowfish_setup(password, length, rounds, &key) != TRUE) {
return result;
}
// Allocate memory within the PB heap
result = HeapAlloc(PB_MemoryBase, HEAP_ZERO_MEMORY, 8);
if (blowfish_ecb_decrypt(buffer, (unsigned char *)result, &key) != TRUE) {
// Free the allocated memory
HeapFree(PB_MemoryBase, 0, result);
result = NULL;
return result;
}
}

return result;
}

// Blowfish ///////////////////////////////////////////////////////////////////

int blowfish_setup(uchar8 *key, int keylen, int num_rounds, BLOWFISH *skey)
{
ulong32 x, y, z, A;
uchar8 B[8];

if (key == NULL || skey == NULL)
return FALSE;

/* check key length */
if (keylen < 8 || keylen > 56) {
return FALSE;
}

/* check rounds */
if (num_rounds != 0 && num_rounds != 16) {
return FALSE;
}

/* load in key bytes (Supplied by David Hopwood) */
for (x = y = 0; x < 18; x++) {
A = 0;
for (z = 0; z < 4; z++) {
A = (A << 8) | ((ulong32)key[y++] & 255);
if (y == (ulong32)keylen) {
y = 0;
}
}
skey->K[x] = ORIG_P[x] ^ A;
}

/* copy sboxes */
for (x = 0; x < 4; x++) {
for (y = 0; y < 256; y++) {
skey->S[x][y] = ORIG_S[x][y];
}
}

/* encrypt K array */
for (x = 0; x < 8; x++) {
B[x] = 0;
}

for (x = 0; x < 18; x += 2) {
/* encrypt it */
blowfish_ecb_encrypt(B, B, skey);
/* copy it */
LOAD32H(skey->K[x], &B[0]);
LOAD32H(skey->K[x+1], &B[4]);
}

/* encrypt S array */
for (x = 0; x < 4; x++) {
for (y = 0; y < 256; y += 2) {
/* encrypt it */
blowfish_ecb_encrypt(B, B, skey);
/* copy it */
LOAD32H(skey->S[x][y], &B[0]);
LOAD32H(skey->S[x][y+1], &B[4]);
}
}

return TRUE;
}

#ifdef S1
#undef S1
#endif
#define S1 skey->S[0]
#ifdef S2
#undef S2
#endif
#define S2 skey->S[1]
#ifdef S3
#undef S3
#endif
#define S3 skey->S[2]
#ifdef S4
#undef S4
#endif
#define S4 skey->S[3]

#ifdef F
#undef F
#endif
#define F(x) ((S1[byte(x,3)] + S2[byte(x,2)]) ^ S3[byte(x,1)]) + S4[byte(x,0)]

int blowfish_ecb_encrypt(uchar8 *pt, uchar8 *ct, BLOWFISH *skey)
{
ulong32 L, R;
int r;

if (pt == NULL || ct == NULL || skey == NULL)
return FALSE;

/* load it */
LOAD32H(L, &pt[0]);
LOAD32H(R, &pt[4]);

/* do 16 rounds */
for (r = 0; r < 16; ) {
L ^= skey->K[r++]; R ^= F(L);
R ^= skey->K[r++]; L ^= F(R);
L ^= skey->K[r++]; R ^= F(L);
R ^= skey->K[r++]; L ^= F(R);
}

/* last keying */
R ^= skey->K[17];
L ^= skey->K[16];

/* store */
STORE32H(R, &ct[0]);
STORE32H(L, &ct[4]);

return TRUE;
}

int blowfish_ecb_decrypt(uchar8 *ct, uchar8 *pt, BLOWFISH *skey)
{
ulong32 L, R;
int r;

if (pt == NULL || ct == NULL || skey == NULL)
return FALSE;

/* load it */
LOAD32H(R, &ct[0]);
LOAD32H(L, &ct[4]);

/* undo last keying */
R ^= skey->K[17];
L ^= skey->K[16];

/* do 16 rounds */
for (r = 15; r > 0; ) {
L ^= F(R); R ^= skey->K[r--];
R ^= F(L); L ^= skey->K[r--];
L ^= F(R); R ^= skey->K[r--];
R ^= F(L); L ^= skey->K[r--];
}

/* store */
STORE32H(L, &pt[0]);
STORE32H(R, &pt[4]);

return TRUE;
}
///////////////////////////////////////////////////////////////////////////////
// PureCrypt v1.0a //
///////////////////////////////////////////////////////////////////////////////
// Contains library defines, macros, structures etc. //
///////////////////////////////////////////////////////////////////////////////

// Blowfish ///////////////////////////////////////////////////////////////////

typedef struct blowfish {
ulong32 S[4][256];
ulong32 K[18];
} BLOWFISH;

int blowfish_setup(uchar8 *key, int keylen, int num_rounds, BLOWFISH *skey);
int blowfish_ecb_encrypt(uchar8 *pt, uchar8 *ct, BLOWFISH *skey);
int blowfish_ecb_decrypt(uchar8 *ct, uchar8 *pt, BLOWFISH *skey);

// Table data /////////////////////////////////////////////////////////////////

static const ulong32 ORIG_P[16 + 2] = {
0x243F6A88UL, 0x85A308D3UL, 0x13198A2EUL, 0x03707344UL,
0xA4093822UL, 0x299F31D0UL, 0x082EFA98UL, 0xEC4E6C89UL,
0x452821E6UL, 0x38D01377UL, 0xBE5466CFUL, 0x34E90C6CUL,
0xC0AC29B7UL, 0xC97C50DDUL, 0x3F84D5B5UL, 0xB5470917UL,
0x9216D5D9UL, 0x8979FB1BUL
};

static const ulong32 ORIG_S[4][256] = {
{ 0xD1310BA6UL, 0x98DFB5ACUL, 0x2FFD72DBUL, 0xD01ADFB7UL,
0xB8E1AFEDUL, 0x6A267E96UL, 0xBA7C9045UL, 0xF12C7F99UL,
0x24A19947UL, 0xB3916CF7UL, 0x0801F2E2UL, 0x858EFC16UL,
0x636920D8UL, 0x71574E69UL, 0xA458FEA3UL, 0xF4933D7EUL,
0x0D95748FUL, 0x728EB658UL, 0x718BCD58UL, 0x82154AEEUL,
0x7B54A41DUL, 0xC25A59B5UL, 0x9C30D539UL, 0x2AF26013UL,
0xC5D1B023UL, 0x286085F0UL, 0xCA417918UL, 0xB8DB38EFUL,
0x8E79DCB0UL, 0x603A180EUL, 0x6C9E0E8BUL, 0xB01E8A3EUL,
0xD71577C1UL, 0xBD314B27UL, 0x78AF2FDAUL, 0x55605C60UL,
0xE65525F3UL, 0xAA55AB94UL, 0x57489862UL, 0x63E81440UL,
0x55CA396AUL, 0x2AAB10B6UL, 0xB4CC5C34UL, 0x1141E8CEUL,
0xA15486AFUL, 0x7C72E993UL, 0xB3EE1411UL, 0x636FBC2AUL,
0x2BA9C55DUL, 0x741831F6UL, 0xCE5C3E16UL, 0x9B87931EUL,
0xAFD6BA33UL, 0x6C24CF5CUL, 0x7A325381UL, 0x28958677UL,
0x3B8F4898UL, 0x6B4BB9AFUL, 0xC4BFE81BUL, 0x66282193UL,
0x61D809CCUL, 0xFB21A991UL, 0x487CAC60UL, 0x5DEC8032UL,
0xEF845D5DUL, 0xE98575B1UL, 0xDC262302UL, 0xEB651B88UL,
0x23893E81UL, 0xD396ACC5UL, 0x0F6D6FF3UL, 0x83F44239UL,
0x2E0B4482UL, 0xA4842004UL, 0x69C8F04AUL, 0x9E1F9B5EUL,
0x21C66842UL, 0xF6E96C9AUL, 0x670C9C61UL, 0xABD388F0UL,
0x6A51A0D2UL, 0xD8542F68UL, 0x960FA728UL, 0xAB5133A3UL,
0x6EEF0B6CUL, 0x137A3BE4UL, 0xBA3BF050UL, 0x7EFB2A98UL,
0xA1F1651DUL, 0x39AF0176UL, 0x66CA593EUL, 0x82430E88UL,
0x8CEE8619UL, 0x456F9FB4UL, 0x7D84A5C3UL, 0x3B8B5EBEUL,
0xE06F75D8UL, 0x85C12073UL, 0x401A449FUL, 0x56C16AA6UL,
0x4ED3AA62UL, 0x363F7706UL, 0x1BFEDF72UL, 0x429B023DUL,
0x37D0D724UL, 0xD00A1248UL, 0xDB0FEAD3UL, 0x49F1C09BUL,
0x075372C9UL, 0x80991B7BUL, 0x25D479D8UL, 0xF6E8DEF7UL,
0xE3FE501AUL, 0xB6794C3BUL, 0x976CE0BDUL, 0x04C006BAUL,
0xC1A94FB6UL, 0x409F60C4UL, 0x5E5C9EC2UL, 0x196A2463UL,
0x68FB6FAFUL, 0x3E6C53B5UL, 0x1339B2EBUL, 0x3B52EC6FUL,
0x6DFC511FUL, 0x9B30952CUL, 0xCC814544UL, 0xAF5EBD09UL,
0xBEE3D004UL, 0xDE334AFDUL, 0x660F2807UL, 0x192E4BB3UL,
0xC0CBA857UL, 0x45C8740FUL, 0xD20B5F39UL, 0xB9D3FBDBUL,
0x5579C0BDUL, 0x1A60320AUL, 0xD6A100C6UL, 0x402C7279UL,
0x679F25FEUL, 0xFB1FA3CCUL, 0x8EA5E9F8UL, 0xDB3222F8UL,
0x3C7516DFUL, 0xFD616B15UL, 0x2F501EC8UL, 0xAD0552ABUL,
0x323DB5FAUL, 0xFD238760UL, 0x53317B48UL, 0x3E00DF82UL,
0x9E5C57BBUL, 0xCA6F8CA0UL, 0x1A87562EUL, 0xDF1769DBUL,
0xD542A8F6UL, 0x287EFFC3UL, 0xAC6732C6UL, 0x8C4F5573UL,
0x695B27B0UL, 0xBBCA58C8UL, 0xE1FFA35DUL, 0xB8F011A0UL,
0x10FA3D98UL, 0xFD2183B8UL, 0x4AFCB56CUL, 0x2DD1D35BUL,
0x9A53E479UL, 0xB6F84565UL, 0xD28E49BCUL, 0x4BFB9790UL,
0xE1DDF2DAUL, 0xA4CB7E33UL, 0x62FB1341UL, 0xCEE4C6E8UL,
0xEF20CADAUL, 0x36774C01UL, 0xD07E9EFEUL, 0x2BF11FB4UL,
0x95DBDA4DUL, 0xAE909198UL, 0xEAAD8E71UL, 0x6B93D5A0UL,
0xD08ED1D0UL, 0xAFC725E0UL, 0x8E3C5B2FUL, 0x8E7594B7UL,
0x8FF6E2FBUL, 0xF2122B64UL, 0x8888B812UL, 0x900DF01CUL,
0x4FAD5EA0UL, 0x688FC31CUL, 0xD1CFF191UL, 0xB3A8C1ADUL,
0x2F2F2218UL, 0xBE0E1777UL, 0xEA752DFEUL, 0x8B021FA1UL,
0xE5A0CC0FUL, 0xB56F74E8UL, 0x18ACF3D6UL, 0xCE89E299UL,
0xB4A84FE0UL, 0xFD13E0B7UL, 0x7CC43B81UL, 0xD2ADA8D9UL,
0x165FA266UL, 0x80957705UL, 0x93CC7314UL, 0x211A1477UL,
0xE6AD2065UL, 0x77B5FA86UL, 0xC75442F5UL, 0xFB9D35CFUL,
0xEBCDAF0CUL, 0x7B3E89A0UL, 0xD6411BD3UL, 0xAE1E7E49UL,
0x00250E2DUL, 0x2071B35EUL, 0x226800BBUL, 0x57B8E0AFUL,
0x2464369BUL, 0xF009B91EUL, 0x5563911DUL, 0x59DFA6AAUL,
0x78C14389UL, 0xD95A537FUL, 0x207D5BA2UL, 0x02E5B9C5UL,
0x83260376UL, 0x6295CFA9UL, 0x11C81968UL, 0x4E734A41UL,
0xB3472DCAUL, 0x7B14A94AUL, 0x1B510052UL, 0x9A532915UL,
0xD60F573FUL, 0xBC9BC6E4UL, 0x2B60A476UL, 0x81E67400UL,
0x08BA6FB5UL, 0x571BE91FUL, 0xF296EC6BUL, 0x2A0DD915UL,
0xB6636521UL, 0xE7B9F9B6UL, 0xFF34052EUL, 0xC5855664UL,
0x53B02D5DUL, 0xA99F8FA1UL, 0x08BA4799UL, 0x6E85076AUL },
{ 0x4B7A70E9UL, 0xB5B32944UL, 0xDB75092EUL, 0xC4192623UL,
0xAD6EA6B0UL, 0x49A7DF7DUL, 0x9CEE60B8UL, 0x8FEDB266UL,
0xECAA8C71UL, 0x699A17FFUL, 0x5664526CUL, 0xC2B19EE1UL,
0x193602A5UL, 0x75094C29UL, 0xA0591340UL, 0xE4183A3EUL,
0x3F54989AUL, 0x5B429D65UL, 0x6B8FE4D6UL, 0x99F73FD6UL,
0xA1D29C07UL, 0xEFE830F5UL, 0x4D2D38E6UL, 0xF0255DC1UL,
0x4CDD2086UL, 0x8470EB26UL, 0x6382E9C6UL, 0x021ECC5EUL,
0x09686B3FUL, 0x3EBAEFC9UL, 0x3C971814UL, 0x6B6A70A1UL,
0x687F3584UL, 0x52A0E286UL, 0xB79C5305UL, 0xAA500737UL,
0x3E07841CUL, 0x7FDEAE5CUL, 0x8E7D44ECUL, 0x5716F2B8UL,
0xB03ADA37UL, 0xF0500C0DUL, 0xF01C1F04UL, 0x0200B3FFUL,
0xAE0CF51AUL, 0x3CB574B2UL, 0x25837A58UL, 0xDC0921BDUL,
0xD19113F9UL, 0x7CA92FF6UL, 0x94324773UL, 0x22F54701UL,
0x3AE5E581UL, 0x37C2DADCUL, 0xC8B57634UL, 0x9AF3DDA7UL,
0xA9446146UL, 0x0FD0030EUL, 0xECC8C73EUL, 0xA4751E41UL,
0xE238CD99UL, 0x3BEA0E2FUL, 0x3280BBA1UL, 0x183EB331UL,
0x4E548B38UL, 0x4F6DB908UL, 0x6F420D03UL, 0xF60A04BFUL,
0x2CB81290UL, 0x24977C79UL, 0x5679B072UL, 0xBCAF89AFUL,
0xDE9A771FUL, 0xD9930810UL, 0xB38BAE12UL, 0xDCCF3F2EUL,
0x5512721FUL, 0x2E6B7124UL, 0x501ADDE6UL, 0x9F84CD87UL,
0x7A584718UL, 0x7408DA17UL, 0xBC9F9ABCUL, 0xE94B7D8CUL,
0xEC7AEC3AUL, 0xDB851DFAUL, 0x63094366UL, 0xC464C3D2UL,
0xEF1C1847UL, 0x3215D908UL, 0xDD433B37UL, 0x24C2BA16UL,
0x12A14D43UL, 0x2A65C451UL, 0x50940002UL, 0x133AE4DDUL,
0x71DFF89EUL, 0x10314E55UL, 0x81AC77D6UL, 0x5F11199BUL,
0x043556F1UL, 0xD7A3C76BUL, 0x3C11183BUL, 0x5924A509UL,
0xF28FE6EDUL, 0x97F1FBFAUL, 0x9EBABF2CUL, 0x1E153C6EUL,
0x86E34570UL, 0xEAE96FB1UL, 0x860E5E0AUL, 0x5A3E2AB3UL,
0x771FE71CUL, 0x4E3D06FAUL, 0x2965DCB9UL, 0x99E71D0FUL,
0x803E89D6UL, 0x5266C825UL, 0x2E4CC978UL, 0x9C10B36AUL,
0xC6150EBAUL, 0x94E2EA78UL, 0xA5FC3C53UL, 0x1E0A2DF4UL,
0xF2F74EA7UL, 0x361D2B3DUL, 0x1939260FUL, 0x19C27960UL,
0x5223A708UL, 0xF71312B6UL, 0xEBADFE6EUL, 0xEAC31F66UL,
0xE3BC4595UL, 0xA67BC883UL, 0xB17F37D1UL, 0x018CFF28UL,
0xC332DDEFUL, 0xBE6C5AA5UL, 0x65582185UL, 0x68AB9802UL,
0xEECEA50FUL, 0xDB2F953BUL, 0x2AEF7DADUL, 0x5B6E2F84UL,
0x1521B628UL, 0x29076170UL, 0xECDD4775UL, 0x619F1510UL,
0x13CCA830UL, 0xEB61BD96UL, 0x0334FE1EUL, 0xAA0363CFUL,
0xB5735C90UL, 0x4C70A239UL, 0xD59E9E0BUL, 0xCBAADE14UL,
0xEECC86BCUL, 0x60622CA7UL, 0x9CAB5CABUL, 0xB2F3846EUL,
0x648B1EAFUL, 0x19BDF0CAUL, 0xA02369B9UL, 0x655ABB50UL,
0x40685A32UL, 0x3C2AB4B3UL, 0x319EE9D5UL, 0xC021B8F7UL,
0x9B540B19UL, 0x875FA099UL, 0x95F7997EUL, 0x623D7DA8UL,
0xF837889AUL, 0x97E32D77UL, 0x11ED935FUL, 0x16681281UL,
0x0E358829UL, 0xC7E61FD6UL, 0x96DEDFA1UL, 0x7858BA99UL,
0x57F584A5UL, 0x1B227263UL, 0x9B83C3FFUL, 0x1AC24696UL,
0xCDB30AEBUL, 0x532E3054UL, 0x8FD948E4UL, 0x6DBC3128UL,
0x58EBF2EFUL, 0x34C6FFEAUL, 0xFE28ED61UL, 0xEE7C3C73UL,
0x5D4A14D9UL, 0xE864B7E3UL, 0x42105D14UL, 0x203E13E0UL,
0x45EEE2B6UL, 0xA3AAABEAUL, 0xDB6C4F15UL, 0xFACB4FD0UL,
0xC742F442UL, 0xEF6ABBB5UL, 0x654F3B1DUL, 0x41CD2105UL,
0xD81E799EUL, 0x86854DC7UL, 0xE44B476AUL, 0x3D816250UL,
0xCF62A1F2UL, 0x5B8D2646UL, 0xFC8883A0UL, 0xC1C7B6A3UL,
0x7F1524C3UL, 0x69CB7492UL, 0x47848A0BUL, 0x5692B285UL,
0x095BBF00UL, 0xAD19489DUL, 0x1462B174UL, 0x23820E00UL,
0x58428D2AUL, 0x0C55F5EAUL, 0x1DADF43EUL, 0x233F7061UL,
0x3372F092UL, 0x8D937E41UL, 0xD65FECF1UL, 0x6C223BDBUL,
0x7CDE3759UL, 0xCBEE7460UL, 0x4085F2A7UL, 0xCE77326EUL,
0xA6078084UL, 0x19F8509EUL, 0xE8EFD855UL, 0x61D99735UL,
0xA969A7AAUL, 0xC50C06C2UL, 0x5A04ABFCUL, 0x800BCADCUL,
0x9E447A2EUL, 0xC3453484UL, 0xFDD56705UL, 0x0E1E9EC9UL,
0xDB73DBD3UL, 0x105588CDUL, 0x675FDA79UL, 0xE3674340UL,
0xC5C43465UL, 0x713E38D8UL, 0x3D28F89EUL, 0xF16DFF20UL,
0x153E21E7UL, 0x8FB03D4AUL, 0xE6E39F2BUL, 0xDB83ADF7UL },
{ 0xE93D5A68UL, 0x948140F7UL, 0xF64C261CUL, 0x94692934UL,
0x411520F7UL, 0x7602D4F7UL, 0xBCF46B2EUL, 0xD4A20068UL,
0xD4082471UL, 0x3320F46AUL, 0x43B7D4B7UL, 0x500061AFUL,
0x1E39F62EUL, 0x97244546UL, 0x14214F74UL, 0xBF8B8840UL,
0x4D95FC1DUL, 0x96B591AFUL, 0x70F4DDD3UL, 0x66A02F45UL,
0xBFBC09ECUL, 0x03BD9785UL, 0x7FAC6DD0UL, 0x31CB8504UL,
0x96EB27B3UL, 0x55FD3941UL, 0xDA2547E6UL, 0xABCA0A9AUL,
0x28507825UL, 0x530429F4UL, 0x0A2C86DAUL, 0xE9B66DFBUL,
0x68DC1462UL, 0xD7486900UL, 0x680EC0A4UL, 0x27A18DEEUL,
0x4F3FFEA2UL, 0xE887AD8CUL, 0xB58CE006UL, 0x7AF4D6B6UL,
0xAACE1E7CUL, 0xD3375FECUL, 0xCE78A399UL, 0x406B2A42UL,
0x20FE9E35UL, 0xD9F385B9UL, 0xEE39D7ABUL, 0x3B124E8BUL,
0x1DC9FAF7UL, 0x4B6D1856UL, 0x26A36631UL, 0xEAE397B2UL,
0x3A6EFA74UL, 0xDD5B4332UL, 0x6841E7F7UL, 0xCA7820FBUL,
0xFB0AF54EUL, 0xD8FEB397UL, 0x454056ACUL, 0xBA489527UL,
0x55533A3AUL, 0x20838D87UL, 0xFE6BA9B7UL, 0xD096954BUL,
0x55A867BCUL, 0xA1159A58UL, 0xCCA92963UL, 0x99E1DB33UL,
0xA62A4A56UL, 0x3F3125F9UL, 0x5EF47E1CUL, 0x9029317CUL,
0xFDF8E802UL, 0x04272F70UL, 0x80BB155CUL, 0x05282CE3UL,
0x95C11548UL, 0xE4C66D22UL, 0x48C1133FUL, 0xC70F86DCUL,
0x07F9C9EEUL, 0x41041F0FUL, 0x404779A4UL, 0x5D886E17UL,
0x325F51EBUL, 0xD59BC0D1UL, 0xF2BCC18FUL, 0x41113564UL,
0x257B7834UL, 0x602A9C60UL, 0xDFF8E8A3UL, 0x1F636C1BUL,
0x0E12B4C2UL, 0x02E1329EUL, 0xAF664FD1UL, 0xCAD18115UL,
0x6B2395E0UL, 0x333E92E1UL, 0x3B240B62UL, 0xEEBEB922UL,
0x85B2A20EUL, 0xE6BA0D99UL, 0xDE720C8CUL, 0x2DA2F728UL,
0xD0127845UL, 0x95B794FDUL, 0x647D0862UL, 0xE7CCF5F0UL,
0x5449A36FUL, 0x877D48FAUL, 0xC39DFD27UL, 0xF33E8D1EUL,
0x0A476341UL, 0x992EFF74UL, 0x3A6F6EABUL, 0xF4F8FD37UL,
0xA812DC60UL, 0xA1EBDDF8UL, 0x991BE14CUL, 0xDB6E6B0DUL,
0xC67B5510UL, 0x6D672C37UL, 0x2765D43BUL, 0xDCD0E804UL,
0xF1290DC7UL, 0xCC00FFA3UL, 0xB5390F92UL, 0x690FED0BUL,
0x667B9FFBUL, 0xCEDB7D9CUL, 0xA091CF0BUL, 0xD9155EA3UL,
0xBB132F88UL, 0x515BAD24UL, 0x7B9479BFUL, 0x763BD6EBUL,
0x37392EB3UL, 0xCC115979UL, 0x8026E297UL, 0xF42E312DUL,
0x6842ADA7UL, 0xC66A2B3BUL, 0x12754CCCUL, 0x782EF11CUL,
0x6A124237UL, 0xB79251E7UL, 0x06A1BBE6UL, 0x4BFB6350UL,
0x1A6B1018UL, 0x11CAEDFAUL, 0x3D25BDD8UL, 0xE2E1C3C9UL,
0x44421659UL, 0x0A121386UL, 0xD90CEC6EUL, 0xD5ABEA2AUL,
0x64AF674EUL, 0xDA86A85FUL, 0xBEBFE988UL, 0x64E4C3FEUL,
0x9DBC8057UL, 0xF0F7C086UL, 0x60787BF8UL, 0x6003604DUL,
0xD1FD8346UL, 0xF6381FB0UL, 0x7745AE04UL, 0xD736FCCCUL,
0x83426B33UL, 0xF01EAB71UL, 0xB0804187UL, 0x3C005E5FUL,
0x77A057BEUL, 0xBDE8AE24UL, 0x55464299UL, 0xBF582E61UL,
0x4E58F48FUL, 0xF2DDFDA2UL, 0xF474EF38UL, 0x8789BDC2UL,
0x5366F9C3UL, 0xC8B38E74UL, 0xB475F255UL, 0x46FCD9B9UL,
0x7AEB2661UL, 0x8B1DDF84UL, 0x846A0E79UL, 0x915F95E2UL,
0x466E598EUL, 0x20B45770UL, 0x8CD55591UL, 0xC902DE4CUL,
0xB90BACE1UL, 0xBB8205D0UL, 0x11A86248UL, 0x7574A99EUL,
0xB77F19B6UL, 0xE0A9DC09UL, 0x662D09A1UL, 0xC4324633UL,
0xE85A1F02UL, 0x09F0BE8CUL, 0x4A99A025UL, 0x1D6EFE10UL,
0x1AB93D1DUL, 0x0BA5A4DFUL, 0xA186F20FUL, 0x2868F169UL,
0xDCB7DA83UL, 0x573906FEUL, 0xA1E2CE9BUL, 0x4FCD7F52UL,
0x50115E01UL, 0xA70683FAUL, 0xA002B5C4UL, 0x0DE6D027UL,
0x9AF88C27UL, 0x773F8641UL, 0xC3604C06UL, 0x61A806B5UL,
0xF0177A28UL, 0xC0F586E0UL, 0x006058AAUL, 0x30DC7D62UL,
0x11E69ED7UL, 0x2338EA63UL, 0x53C2DD94UL, 0xC2C21634UL,
0xBBCBEE56UL, 0x90BCB6DEUL, 0xEBFC7DA1UL, 0xCE591D76UL,
0x6F05E409UL, 0x4B7C0188UL, 0x39720A3DUL, 0x7C927C24UL,
0x86E3725FUL, 0x724D9DB9UL, 0x1AC15BB4UL, 0xD39EB8FCUL,
0xED545578UL, 0x08FCA5B5UL, 0xD83D7CD3UL, 0x4DAD0FC4UL,
0x1E50EF5EUL, 0xB161E6F8UL, 0xA28514D9UL, 0x6C51133CUL,
0x6FD5C7E7UL, 0x56E14EC4UL, 0x362ABFCEUL, 0xDDC6C837UL,
0xD79A3234UL, 0x92638212UL, 0x670EFA8EUL, 0x406000E0UL },
{ 0x3A39CE37UL, 0xD3FAF5CFUL, 0xABC27737UL, 0x5AC52D1BUL,
0x5CB0679EUL, 0x4FA33742UL, 0xD3822740UL, 0x99BC9BBEUL,
0xD5118E9DUL, 0xBF0F7315UL, 0xD62D1C7EUL, 0xC700C47BUL,
0xB78C1B6BUL, 0x21A19045UL, 0xB26EB1BEUL, 0x6A366EB4UL,
0x5748AB2FUL, 0xBC946E79UL, 0xC6A376D2UL, 0x6549C2C8UL,
0x530FF8EEUL, 0x468DDE7DUL, 0xD5730A1DUL, 0x4CD04DC6UL,
0x2939BBDBUL, 0xA9BA4650UL, 0xAC9526E8UL, 0xBE5EE304UL,
0xA1FAD5F0UL, 0x6A2D519AUL, 0x63EF8CE2UL, 0x9A86EE22UL,
0xC089C2B8UL, 0x43242EF6UL, 0xA51E03AAUL, 0x9CF2D0A4UL,
0x83C061BAUL, 0x9BE96A4DUL, 0x8FE51550UL, 0xBA645BD6UL,
0x2826A2F9UL, 0xA73A3AE1UL, 0x4BA99586UL, 0xEF5562E9UL,
0xC72FEFD3UL, 0xF752F7DAUL, 0x3F046F69UL, 0x77FA0A59UL,
0x80E4A915UL, 0x87B08601UL, 0x9B09E6ADUL, 0x3B3EE593UL,
0xE990FD5AUL, 0x9E34D797UL, 0x2CF0B7D9UL, 0x022B8B51UL,
0x96D5AC3AUL, 0x017DA67DUL, 0xD1CF3ED6UL, 0x7C7D2D28UL,
0x1F9F25CFUL, 0xADF2B89BUL, 0x5AD6B472UL, 0x5A88F54CUL,
0xE029AC71UL, 0xE019A5E6UL, 0x47B0ACFDUL, 0xED93FA9BUL,
0xE8D3C48DUL, 0x283B57CCUL, 0xF8D56629UL, 0x79132E28UL,
0x785F0191UL, 0xED756055UL, 0xF7960E44UL, 0xE3D35E8CUL,
0x15056DD4UL, 0x88F46DBAUL, 0x03A16125UL, 0x0564F0BDUL,
0xC3EB9E15UL, 0x3C9057A2UL, 0x97271AECUL, 0xA93A072AUL,
0x1B3F6D9BUL, 0x1E6321F5UL, 0xF59C66FBUL, 0x26DCF319UL,
0x7533D928UL, 0xB155FDF5UL, 0x03563482UL, 0x8ABA3CBBUL,
0x28517711UL, 0xC20AD9F8UL, 0xABCC5167UL, 0xCCAD925FUL,
0x4DE81751UL, 0x3830DC8EUL, 0x379D5862UL, 0x9320F991UL,
0xEA7A90C2UL, 0xFB3E7BCEUL, 0x5121CE64UL, 0x774FBE32UL,
0xA8B6E37EUL, 0xC3293D46UL, 0x48DE5369UL, 0x6413E680UL,
0xA2AE0810UL, 0xDD6DB224UL, 0x69852DFDUL, 0x09072166UL,
0xB39A460AUL, 0x6445C0DDUL, 0x586CDECFUL, 0x1C20C8AEUL,
0x5BBEF7DDUL, 0x1B588D40UL, 0xCCD2017FUL, 0x6BB4E3BBUL,
0xDDA26A7EUL, 0x3A59FF45UL, 0x3E350A44UL, 0xBCB4CDD5UL,
0x72EACEA8UL, 0xFA6484BBUL, 0x8D6612AEUL, 0xBF3C6F47UL,
0xD29BE463UL, 0x542F5D9EUL, 0xAEC2771BUL, 0xF64E6370UL,
0x740E0D8DUL, 0xE75B1357UL, 0xF8721671UL, 0xAF537D5DUL,
0x4040CB08UL, 0x4EB4E2CCUL, 0x34D2466AUL, 0x0115AF84UL,
0xE1B00428UL, 0x95983A1DUL, 0x06B89FB4UL, 0xCE6EA048UL,
0x6F3F3B82UL, 0x3520AB82UL, 0x011A1D4BUL, 0x277227F8UL,
0x611560B1UL, 0xE7933FDCUL, 0xBB3A792BUL, 0x344525BDUL,
0xA08839E1UL, 0x51CE794BUL, 0x2F32C9B7UL, 0xA01FBAC9UL,
0xE01CC87EUL, 0xBCC7D1F6UL, 0xCF0111C3UL, 0xA1E8AAC7UL,
0x1A908749UL, 0xD44FBD9AUL, 0xD0DADECBUL, 0xD50ADA38UL,
0x0339C32AUL, 0xC6913667UL, 0x8DF9317CUL, 0xE0B12B4FUL,
0xF79E59B7UL, 0x43F5BB3AUL, 0xF2D519FFUL, 0x27D9459CUL,
0xBF97222CUL, 0x15E6FC2AUL, 0x0F91FC71UL, 0x9B941525UL,
0xFAE59361UL, 0xCEB69CEBUL, 0xC2A86459UL, 0x12BAA8D1UL,
0xB6C1075EUL, 0xE3056A0CUL, 0x10D25065UL, 0xCB03A442UL,
0xE0EC6E0EUL, 0x1698DB3BUL, 0x4C98A0BEUL, 0x3278E964UL,
0x9F1F9532UL, 0xE0D392DFUL, 0xD3A0342BUL, 0x8971F21EUL,
0x1B0A7441UL, 0x4BA3348CUL, 0xC5BE7120UL, 0xC37632D8UL,
0xDF359F8DUL, 0x9B992F2EUL, 0xE60B6F47UL, 0x0FE3F11DUL,
0xE54CDA54UL, 0x1EDAD891UL, 0xCE6279CFUL, 0xCD3E7E6FUL,
0x1618B166UL, 0xFD2C1D05UL, 0x848FD2C5UL, 0xF6FB2299UL,
0xF523F357UL, 0xA6327623UL, 0x93A83531UL, 0x56CCCD02UL,
0xACF08162UL, 0x5A75EBB5UL, 0x6E163697UL, 0x88D273CCUL,
0xDE966292UL, 0x81B949D0UL, 0x4C50901BUL, 0x71C65614UL,
0xE6C6C7BDUL, 0x327A140AUL, 0x45E1D006UL, 0xC3F27B9AUL,
0xC9AA53FDUL, 0x62A80F00UL, 0xBB25BFE2UL, 0x35BDD2F6UL,
0x71126905UL, 0xB2040222UL, 0xB6CBCF7CUL, 0xCD769C2BUL,
0x53113EC0UL, 0x1640E3D3UL, 0x38ABBD60UL, 0x2547ADF0UL,
0xBA38209CUL, 0xF746CE76UL, 0x77AFA1C5UL, 0x20756060UL,
0x85CBFE4EUL, 0x8AE88DD8UL, 0x7AAAF9B0UL, 0x4CF9AA7EUL,
0x1948C25CUL, 0x02FB8A8CUL, 0x01C36AE4UL, 0xD6EBE1F9UL,
0x90D4F869UL, 0xA65CDEA0UL, 0x3F09252DUL, 0xC208E69FUL,
0xB74E6132UL, 0xCE77E25BUL, 0x578FDFE3UL, 0x3AC372E6UL
}
};
Please forgive my poor English, I'm an Australian.
Hatonastick
Enthusiast
Enthusiast
Posts: 149
Joined: Wed Apr 27, 2005 11:50 am
Location: Adelaide, Australia
Contact:

Post by Hatonastick »

Always wanted to rewrite the PureCrypt (mangled version of LibTomCrypt) in PureBASIC instead of C. Just never had the level of PB knowledge needed.
Please forgive my poor English, I'm an Australian.
DarkDragon
Addict
Addict
Posts: 2347
Joined: Mon Jun 02, 2003 9:16 am
Location: Germany
Contact:

Post by DarkDragon »

The Header:

Code: Select all

;/////////////////////////////////////////////////////////////////////////////
; PureCrypt v1.0a //
;/////////////////////////////////////////////////////////////////////////////
; Contains library defines, macros, structures etc. //
;/////////////////////////////////////////////////////////////////////////////

; Blowfish ///////////////////////////////////////////////////////////////////

Structure BLOWFISH
  S.l[4*256]
  K.l[18]
EndStructure

Declare.l blowfish_setup(*key.BYTE, keylen.l, num_rounds.l, *skey.BLOWFISH);
Declare.l blowfish_ecb_encrypt(*pt.BYTE, *ct.BYTE, *skey.BLOWFISH);
Declare.l blowfish_ecb_decrypt(*ct.BYTE, *pt.BYTE, *skey.BLOWFISH);

; Table Data /////////////////////////////////////////////////////////////////

DataSection
  ORIG_P:
  Data.l $243F6A88 & $FFFFFFFF, $85A308D3 & $FFFFFFFF, $13198A2E & $FFFFFFFF, $03707344 & $FFFFFFFF
  Data.l $A4093822 & $FFFFFFFF, $299F31D0 & $FFFFFFFF, $082EFA98 & $FFFFFFFF, $EC4E6C89 & $FFFFFFFF
  Data.l $452821E6 & $FFFFFFFF, $38D01377 & $FFFFFFFF, $BE5466CF & $FFFFFFFF, $34E90C6C & $FFFFFFFF
  Data.l $C0AC29B7 & $FFFFFFFF, $C97C50DD & $FFFFFFFF, $3F84D5B5 & $FFFFFFFF, $B5470917 & $FFFFFFFF
  Data.l $9216D5D9 & $FFFFFFFF, $8979FB1B & $FFFFFFFF, 0, 0
  
  ORIG_S:
  Data.l $D1310BA6 & $FFFFFFFF, $98DFB5AC & $FFFFFFFF, $2FFD72DB & $FFFFFFFF, $D01ADFB7 & $FFFFFFFF
  Data.l $B8E1AFED & $FFFFFFFF, $6A267E96 & $FFFFFFFF, $BA7C9045 & $FFFFFFFF, $F12C7F99 & $FFFFFFFF
  Data.l $24A19947 & $FFFFFFFF, $B3916CF7 & $FFFFFFFF, $0801F2E2 & $FFFFFFFF, $858EFC16 & $FFFFFFFF
  Data.l $636920D8 & $FFFFFFFF, $71574E69 & $FFFFFFFF, $A458FEA3 & $FFFFFFFF, $F4933D7E & $FFFFFFFF
  Data.l $0D95748F & $FFFFFFFF, $728EB658 & $FFFFFFFF, $718BCD58 & $FFFFFFFF, $82154AEE & $FFFFFFFF
  Data.l $7B54A41D & $FFFFFFFF, $C25A59B5 & $FFFFFFFF, $9C30D539 & $FFFFFFFF, $2AF26013 & $FFFFFFFF
  Data.l $C5D1B023 & $FFFFFFFF, $286085F0 & $FFFFFFFF, $CA417918 & $FFFFFFFF, $B8DB38EF & $FFFFFFFF
  Data.l $8E79DCB0 & $FFFFFFFF, $603A180E & $FFFFFFFF, $6C9E0E8B & $FFFFFFFF, $B01E8A3E & $FFFFFFFF
  Data.l $D71577C1 & $FFFFFFFF, $BD314B27 & $FFFFFFFF, $78AF2FDA & $FFFFFFFF, $55605C60 & $FFFFFFFF
  Data.l $E65525F3 & $FFFFFFFF, $AA55AB94 & $FFFFFFFF, $57489862 & $FFFFFFFF, $63E81440 & $FFFFFFFF
  Data.l $55CA396A & $FFFFFFFF, $2AAB10B6 & $FFFFFFFF, $B4CC5C34 & $FFFFFFFF, $1141E8CE & $FFFFFFFF
  Data.l $A15486AF & $FFFFFFFF, $7C72E993 & $FFFFFFFF, $B3EE1411 & $FFFFFFFF, $636FBC2A & $FFFFFFFF
  Data.l $2BA9C55D & $FFFFFFFF, $741831F6 & $FFFFFFFF, $CE5C3E16 & $FFFFFFFF, $9B87931E & $FFFFFFFF
  Data.l $AFD6BA33 & $FFFFFFFF, $6C24CF5C & $FFFFFFFF, $7A325381 & $FFFFFFFF, $28958677 & $FFFFFFFF
  Data.l $3B8F4898 & $FFFFFFFF, $6B4BB9AF & $FFFFFFFF, $C4BFE81B & $FFFFFFFF, $66282193 & $FFFFFFFF
  Data.l $61D809CC & $FFFFFFFF, $FB21A991 & $FFFFFFFF, $487CAC60 & $FFFFFFFF, $5DEC8032 & $FFFFFFFF
  Data.l $EF845D5D & $FFFFFFFF, $E98575B1 & $FFFFFFFF, $DC262302 & $FFFFFFFF, $EB651B88 & $FFFFFFFF
  Data.l $23893E81 & $FFFFFFFF, $D396ACC5 & $FFFFFFFF, $0F6D6FF3 & $FFFFFFFF, $83F44239 & $FFFFFFFF
  Data.l $2E0B4482 & $FFFFFFFF, $A4842004 & $FFFFFFFF, $69C8F04A & $FFFFFFFF, $9E1F9B5E & $FFFFFFFF
  Data.l $21C66842 & $FFFFFFFF, $F6E96C9A & $FFFFFFFF, $670C9C61 & $FFFFFFFF, $ABD388F0 & $FFFFFFFF
  Data.l $6A51A0D2 & $FFFFFFFF, $D8542F68 & $FFFFFFFF, $960FA728 & $FFFFFFFF, $AB5133A3 & $FFFFFFFF
  Data.l $6EEF0B6C & $FFFFFFFF, $137A3BE4 & $FFFFFFFF, $BA3BF050 & $FFFFFFFF, $7EFB2A98 & $FFFFFFFF
  Data.l $A1F1651D & $FFFFFFFF, $39AF0176 & $FFFFFFFF, $66CA593E & $FFFFFFFF, $82430E88 & $FFFFFFFF
  Data.l $8CEE8619 & $FFFFFFFF, $456F9FB4 & $FFFFFFFF, $7D84A5C3 & $FFFFFFFF, $3B8B5EBE & $FFFFFFFF
  Data.l $E06F75D8 & $FFFFFFFF, $85C12073 & $FFFFFFFF, $401A449F & $FFFFFFFF, $56C16AA6 & $FFFFFFFF
  Data.l $4ED3AA62 & $FFFFFFFF, $363F7706 & $FFFFFFFF, $1BFEDF72 & $FFFFFFFF, $429B023D & $FFFFFFFF
  Data.l $37D0D724 & $FFFFFFFF, $D00A1248 & $FFFFFFFF, $DB0FEAD3 & $FFFFFFFF, $49F1C09B & $FFFFFFFF
  Data.l $075372C9 & $FFFFFFFF, $80991B7B & $FFFFFFFF, $25D479D8 & $FFFFFFFF, $F6E8DEF7 & $FFFFFFFF
  Data.l $E3FE501A & $FFFFFFFF, $B6794C3B & $FFFFFFFF, $976CE0BD & $FFFFFFFF, $04C006BA & $FFFFFFFF
  Data.l $C1A94FB6 & $FFFFFFFF, $409F60C4 & $FFFFFFFF, $5E5C9EC2 & $FFFFFFFF, $196A2463 & $FFFFFFFF
  Data.l $68FB6FAF & $FFFFFFFF, $3E6C53B5 & $FFFFFFFF, $1339B2EB & $FFFFFFFF, $3B52EC6F & $FFFFFFFF
  Data.l $6DFC511F & $FFFFFFFF, $9B30952C & $FFFFFFFF, $CC814544 & $FFFFFFFF, $AF5EBD09 & $FFFFFFFF
  Data.l $BEE3D004 & $FFFFFFFF, $DE334AFD & $FFFFFFFF, $660F2807 & $FFFFFFFF, $192E4BB3 & $FFFFFFFF
  Data.l $C0CBA857 & $FFFFFFFF, $45C8740F & $FFFFFFFF, $D20B5F39 & $FFFFFFFF, $B9D3FBDB & $FFFFFFFF
  Data.l $5579C0BD & $FFFFFFFF, $1A60320A & $FFFFFFFF, $D6A100C6 & $FFFFFFFF, $402C7279 & $FFFFFFFF
  Data.l $679F25FE & $FFFFFFFF, $FB1FA3CC & $FFFFFFFF, $8EA5E9F8 & $FFFFFFFF, $DB3222F8 & $FFFFFFFF
  Data.l $3C7516DF & $FFFFFFFF, $FD616B15 & $FFFFFFFF, $2F501EC8 & $FFFFFFFF, $AD0552AB & $FFFFFFFF
  Data.l $323DB5FA & $FFFFFFFF, $FD238760 & $FFFFFFFF, $53317B48 & $FFFFFFFF, $3E00DF82 & $FFFFFFFF
  Data.l $9E5C57BB & $FFFFFFFF, $CA6F8CA0 & $FFFFFFFF, $1A87562E & $FFFFFFFF, $DF1769DB & $FFFFFFFF
  Data.l $D542A8F6 & $FFFFFFFF, $287EFFC3 & $FFFFFFFF, $AC6732C6 & $FFFFFFFF, $8C4F5573 & $FFFFFFFF
  Data.l $695B27B0 & $FFFFFFFF, $BBCA58C8 & $FFFFFFFF, $E1FFA35D & $FFFFFFFF, $B8F011A0 & $FFFFFFFF
  Data.l $10FA3D98 & $FFFFFFFF, $FD2183B8 & $FFFFFFFF, $4AFCB56C & $FFFFFFFF, $2DD1D35B & $FFFFFFFF
  Data.l $9A53E479 & $FFFFFFFF, $B6F84565 & $FFFFFFFF, $D28E49BC & $FFFFFFFF, $4BFB9790 & $FFFFFFFF
  Data.l $E1DDF2DA & $FFFFFFFF, $A4CB7E33 & $FFFFFFFF, $62FB1341 & $FFFFFFFF, $CEE4C6E8 & $FFFFFFFF
  Data.l $EF20CADA & $FFFFFFFF, $36774C01 & $FFFFFFFF, $D07E9EFE & $FFFFFFFF, $2BF11FB4 & $FFFFFFFF
  Data.l $95DBDA4D & $FFFFFFFF, $AE909198 & $FFFFFFFF, $EAAD8E71 & $FFFFFFFF, $6B93D5A0 & $FFFFFFFF
  Data.l $D08ED1D0 & $FFFFFFFF, $AFC725E0 & $FFFFFFFF, $8E3C5B2F & $FFFFFFFF, $8E7594B7 & $FFFFFFFF
  Data.l $8FF6E2FB & $FFFFFFFF, $F2122B64 & $FFFFFFFF, $8888B812 & $FFFFFFFF, $900DF01C & $FFFFFFFF
  Data.l $4FAD5EA0 & $FFFFFFFF, $688FC31C & $FFFFFFFF, $D1CFF191 & $FFFFFFFF, $B3A8C1AD & $FFFFFFFF
  Data.l $2F2F2218 & $FFFFFFFF, $BE0E1777 & $FFFFFFFF, $EA752DFE & $FFFFFFFF, $8B021FA1 & $FFFFFFFF
  Data.l $E5A0CC0F & $FFFFFFFF, $B56F74E8 & $FFFFFFFF, $18ACF3D6 & $FFFFFFFF, $CE89E299 & $FFFFFFFF
  Data.l $B4A84FE0 & $FFFFFFFF, $FD13E0B7 & $FFFFFFFF, $7CC43B81 & $FFFFFFFF, $D2ADA8D9 & $FFFFFFFF
  Data.l $165FA266 & $FFFFFFFF, $80957705 & $FFFFFFFF, $93CC7314 & $FFFFFFFF, $211A1477 & $FFFFFFFF
  Data.l $E6AD2065 & $FFFFFFFF, $77B5FA86 & $FFFFFFFF, $C75442F5 & $FFFFFFFF, $FB9D35CF & $FFFFFFFF
  Data.l $EBCDAF0C & $FFFFFFFF, $7B3E89A0 & $FFFFFFFF, $D6411BD3 & $FFFFFFFF, $AE1E7E49 & $FFFFFFFF
  Data.l $00250E2D & $FFFFFFFF, $2071B35E & $FFFFFFFF, $226800BB & $FFFFFFFF, $57B8E0AF & $FFFFFFFF
  Data.l $2464369B & $FFFFFFFF, $F009B91E & $FFFFFFFF, $5563911D & $FFFFFFFF, $59DFA6AA & $FFFFFFFF
  Data.l $78C14389 & $FFFFFFFF, $D95A537F & $FFFFFFFF, $207D5BA2 & $FFFFFFFF, $02E5B9C5 & $FFFFFFFF
  Data.l $83260376 & $FFFFFFFF, $6295CFA9 & $FFFFFFFF, $11C81968 & $FFFFFFFF, $4E734A41 & $FFFFFFFF
  Data.l $B3472DCA & $FFFFFFFF, $7B14A94A & $FFFFFFFF, $1B510052 & $FFFFFFFF, $9A532915 & $FFFFFFFF
  Data.l $D60F573F & $FFFFFFFF, $BC9BC6E4 & $FFFFFFFF, $2B60A476 & $FFFFFFFF, $81E67400 & $FFFFFFFF
  Data.l $08BA6FB5 & $FFFFFFFF, $571BE91F & $FFFFFFFF, $F296EC6B & $FFFFFFFF, $2A0DD915 & $FFFFFFFF
  Data.l $B6636521 & $FFFFFFFF, $E7B9F9B6 & $FFFFFFFF, $FF34052E & $FFFFFFFF, $C5855664 & $FFFFFFFF
  Data.l $53B02D5D & $FFFFFFFF, $A99F8FA1 & $FFFFFFFF, $08BA4799 & $FFFFFFFF, $6E85076A & $FFFFFFFF
  Data.l $4B7A70E9 & $FFFFFFFF, $B5B32944 & $FFFFFFFF, $DB75092E & $FFFFFFFF, $C4192623 & $FFFFFFFF
  Data.l $AD6EA6B0 & $FFFFFFFF, $49A7DF7D & $FFFFFFFF, $9CEE60B8 & $FFFFFFFF, $8FEDB266 & $FFFFFFFF
  Data.l $ECAA8C71 & $FFFFFFFF, $699A17FF & $FFFFFFFF, $5664526C & $FFFFFFFF, $C2B19EE1 & $FFFFFFFF
  Data.l $193602A5 & $FFFFFFFF, $75094C29 & $FFFFFFFF, $A0591340 & $FFFFFFFF, $E4183A3E & $FFFFFFFF
  Data.l $3F54989A & $FFFFFFFF, $5B429D65 & $FFFFFFFF, $6B8FE4D6 & $FFFFFFFF, $99F73FD6 & $FFFFFFFF
  Data.l $A1D29C07 & $FFFFFFFF, $EFE830F5 & $FFFFFFFF, $4D2D38E6 & $FFFFFFFF, $F0255DC1 & $FFFFFFFF
  Data.l $4CDD2086 & $FFFFFFFF, $8470EB26 & $FFFFFFFF, $6382E9C6 & $FFFFFFFF, $021ECC5E & $FFFFFFFF
  Data.l $09686B3F & $FFFFFFFF, $3EBAEFC9 & $FFFFFFFF, $3C971814 & $FFFFFFFF, $6B6A70A1 & $FFFFFFFF
  Data.l $687F3584 & $FFFFFFFF, $52A0E286 & $FFFFFFFF, $B79C5305 & $FFFFFFFF, $AA500737 & $FFFFFFFF
  Data.l $3E07841C & $FFFFFFFF, $7FDEAE5C & $FFFFFFFF, $8E7D44EC & $FFFFFFFF, $5716F2B8 & $FFFFFFFF
  Data.l $B03ADA37 & $FFFFFFFF, $F0500C0D & $FFFFFFFF, $F01C1F04 & $FFFFFFFF, $0200B3FF & $FFFFFFFF
  Data.l $AE0CF51A & $FFFFFFFF, $3CB574B2 & $FFFFFFFF, $25837A58 & $FFFFFFFF, $DC0921BD & $FFFFFFFF
  Data.l $D19113F9 & $FFFFFFFF, $7CA92FF6 & $FFFFFFFF, $94324773 & $FFFFFFFF, $22F54701 & $FFFFFFFF
  Data.l $3AE5E581 & $FFFFFFFF, $37C2DADC & $FFFFFFFF, $C8B57634 & $FFFFFFFF, $9AF3DDA7 & $FFFFFFFF
  Data.l $A9446146 & $FFFFFFFF, $0FD0030E & $FFFFFFFF, $ECC8C73E & $FFFFFFFF, $A4751E41 & $FFFFFFFF
  Data.l $E238CD99 & $FFFFFFFF, $3BEA0E2F & $FFFFFFFF, $3280BBA1 & $FFFFFFFF, $183EB331 & $FFFFFFFF
  Data.l $4E548B38 & $FFFFFFFF, $4F6DB908 & $FFFFFFFF, $6F420D03 & $FFFFFFFF, $F60A04BF & $FFFFFFFF
  Data.l $2CB81290 & $FFFFFFFF, $24977C79 & $FFFFFFFF, $5679B072 & $FFFFFFFF, $BCAF89AF & $FFFFFFFF
  Data.l $DE9A771F & $FFFFFFFF, $D9930810 & $FFFFFFFF, $B38BAE12 & $FFFFFFFF, $DCCF3F2E & $FFFFFFFF
  Data.l $5512721F & $FFFFFFFF, $2E6B7124 & $FFFFFFFF, $501ADDE6 & $FFFFFFFF, $9F84CD87 & $FFFFFFFF
  Data.l $7A584718 & $FFFFFFFF, $7408DA17 & $FFFFFFFF, $BC9F9ABC & $FFFFFFFF, $E94B7D8C & $FFFFFFFF
  Data.l $EC7AEC3A & $FFFFFFFF, $DB851DFA & $FFFFFFFF, $63094366 & $FFFFFFFF, $C464C3D2 & $FFFFFFFF
  Data.l $EF1C1847 & $FFFFFFFF, $3215D908 & $FFFFFFFF, $DD433B37 & $FFFFFFFF, $24C2BA16 & $FFFFFFFF
  Data.l $12A14D43 & $FFFFFFFF, $2A65C451 & $FFFFFFFF, $50940002 & $FFFFFFFF, $133AE4DD & $FFFFFFFF
  Data.l $71DFF89E & $FFFFFFFF, $10314E55 & $FFFFFFFF, $81AC77D6 & $FFFFFFFF, $5F11199B & $FFFFFFFF
  Data.l $043556F1 & $FFFFFFFF, $D7A3C76B & $FFFFFFFF, $3C11183B & $FFFFFFFF, $5924A509 & $FFFFFFFF
  Data.l $F28FE6ED & $FFFFFFFF, $97F1FBFA & $FFFFFFFF, $9EBABF2C & $FFFFFFFF, $1E153C6E & $FFFFFFFF
  Data.l $86E34570 & $FFFFFFFF, $EAE96FB1 & $FFFFFFFF, $860E5E0A & $FFFFFFFF, $5A3E2AB3 & $FFFFFFFF
  Data.l $771FE71C & $FFFFFFFF, $4E3D06FA & $FFFFFFFF, $2965DCB9 & $FFFFFFFF, $99E71D0F & $FFFFFFFF
  Data.l $803E89D6 & $FFFFFFFF, $5266C825 & $FFFFFFFF, $2E4CC978 & $FFFFFFFF, $9C10B36A & $FFFFFFFF
  Data.l $C6150EBA & $FFFFFFFF, $94E2EA78 & $FFFFFFFF, $A5FC3C53 & $FFFFFFFF, $1E0A2DF4 & $FFFFFFFF
  Data.l $F2F74EA7 & $FFFFFFFF, $361D2B3D & $FFFFFFFF, $1939260F & $FFFFFFFF, $19C27960 & $FFFFFFFF
  Data.l $5223A708 & $FFFFFFFF, $F71312B6 & $FFFFFFFF, $EBADFE6E & $FFFFFFFF, $EAC31F66 & $FFFFFFFF
  Data.l $E3BC4595 & $FFFFFFFF, $A67BC883 & $FFFFFFFF, $B17F37D1 & $FFFFFFFF, $018CFF28 & $FFFFFFFF
  Data.l $C332DDEF & $FFFFFFFF, $BE6C5AA5 & $FFFFFFFF, $65582185 & $FFFFFFFF, $68AB9802 & $FFFFFFFF
  Data.l $EECEA50F & $FFFFFFFF, $DB2F953B & $FFFFFFFF, $2AEF7DAD & $FFFFFFFF, $5B6E2F84 & $FFFFFFFF
  Data.l $1521B628 & $FFFFFFFF, $29076170 & $FFFFFFFF, $ECDD4775 & $FFFFFFFF, $619F1510 & $FFFFFFFF
  Data.l $13CCA830 & $FFFFFFFF, $EB61BD96 & $FFFFFFFF, $0334FE1E & $FFFFFFFF, $AA0363CF & $FFFFFFFF
  Data.l $B5735C90 & $FFFFFFFF, $4C70A239 & $FFFFFFFF, $D59E9E0B & $FFFFFFFF, $CBAADE14 & $FFFFFFFF
  Data.l $EECC86BC & $FFFFFFFF, $60622CA7 & $FFFFFFFF, $9CAB5CAB & $FFFFFFFF, $B2F3846E & $FFFFFFFF
  Data.l $648B1EAF & $FFFFFFFF, $19BDF0CA & $FFFFFFFF, $A02369B9 & $FFFFFFFF, $655ABB50 & $FFFFFFFF
  Data.l $40685A32 & $FFFFFFFF, $3C2AB4B3 & $FFFFFFFF, $319EE9D5 & $FFFFFFFF, $C021B8F7 & $FFFFFFFF
  Data.l $9B540B19 & $FFFFFFFF, $875FA099 & $FFFFFFFF, $95F7997E & $FFFFFFFF, $623D7DA8 & $FFFFFFFF
  Data.l $F837889A & $FFFFFFFF, $97E32D77 & $FFFFFFFF, $11ED935F & $FFFFFFFF, $16681281 & $FFFFFFFF
  Data.l $0E358829 & $FFFFFFFF, $C7E61FD6 & $FFFFFFFF, $96DEDFA1 & $FFFFFFFF, $7858BA99 & $FFFFFFFF
  Data.l $57F584A5 & $FFFFFFFF, $1B227263 & $FFFFFFFF, $9B83C3FF & $FFFFFFFF, $1AC24696 & $FFFFFFFF
  Data.l $CDB30AEB & $FFFFFFFF, $532E3054 & $FFFFFFFF, $8FD948E4 & $FFFFFFFF, $6DBC3128 & $FFFFFFFF
  Data.l $58EBF2EF & $FFFFFFFF, $34C6FFEA & $FFFFFFFF, $FE28ED61 & $FFFFFFFF, $EE7C3C73 & $FFFFFFFF
  Data.l $5D4A14D9 & $FFFFFFFF, $E864B7E3 & $FFFFFFFF, $42105D14 & $FFFFFFFF, $203E13E0 & $FFFFFFFF
  Data.l $45EEE2B6 & $FFFFFFFF, $A3AAABEA & $FFFFFFFF, $DB6C4F15 & $FFFFFFFF, $FACB4FD0 & $FFFFFFFF
  Data.l $C742F442 & $FFFFFFFF, $EF6ABBB5 & $FFFFFFFF, $654F3B1D & $FFFFFFFF, $41CD2105 & $FFFFFFFF
  Data.l $D81E799E & $FFFFFFFF, $86854DC7 & $FFFFFFFF, $E44B476A & $FFFFFFFF, $3D816250 & $FFFFFFFF
  Data.l $CF62A1F2 & $FFFFFFFF, $5B8D2646 & $FFFFFFFF, $FC8883A0 & $FFFFFFFF, $C1C7B6A3 & $FFFFFFFF
  Data.l $7F1524C3 & $FFFFFFFF, $69CB7492 & $FFFFFFFF, $47848A0B & $FFFFFFFF, $5692B285 & $FFFFFFFF
  Data.l $095BBF00 & $FFFFFFFF, $AD19489D & $FFFFFFFF, $1462B174 & $FFFFFFFF, $23820E00 & $FFFFFFFF
  Data.l $58428D2A & $FFFFFFFF, $0C55F5EA & $FFFFFFFF, $1DADF43E & $FFFFFFFF, $233F7061 & $FFFFFFFF
  Data.l $3372F092 & $FFFFFFFF, $8D937E41 & $FFFFFFFF, $D65FECF1 & $FFFFFFFF, $6C223BDB & $FFFFFFFF
  Data.l $7CDE3759 & $FFFFFFFF, $CBEE7460 & $FFFFFFFF, $4085F2A7 & $FFFFFFFF, $CE77326E & $FFFFFFFF
  Data.l $A6078084 & $FFFFFFFF, $19F8509E & $FFFFFFFF, $E8EFD855 & $FFFFFFFF, $61D99735 & $FFFFFFFF
  Data.l $A969A7AA & $FFFFFFFF, $C50C06C2 & $FFFFFFFF, $5A04ABFC & $FFFFFFFF, $800BCADC & $FFFFFFFF
  Data.l $9E447A2E & $FFFFFFFF, $C3453484 & $FFFFFFFF, $FDD56705 & $FFFFFFFF, $0E1E9EC9 & $FFFFFFFF
  Data.l $DB73DBD3 & $FFFFFFFF, $105588CD & $FFFFFFFF, $675FDA79 & $FFFFFFFF, $E3674340 & $FFFFFFFF
  Data.l $C5C43465 & $FFFFFFFF, $713E38D8 & $FFFFFFFF, $3D28F89E & $FFFFFFFF, $F16DFF20 & $FFFFFFFF
  Data.l $153E21E7 & $FFFFFFFF, $8FB03D4A & $FFFFFFFF, $E6E39F2B & $FFFFFFFF, $DB83ADF7 & $FFFFFFFF
  Data.l $E93D5A68 & $FFFFFFFF, $948140F7 & $FFFFFFFF, $F64C261C & $FFFFFFFF, $94692934 & $FFFFFFFF
  Data.l $411520F7 & $FFFFFFFF, $7602D4F7 & $FFFFFFFF, $BCF46B2E & $FFFFFFFF, $D4A20068 & $FFFFFFFF
  Data.l $D4082471 & $FFFFFFFF, $3320F46A & $FFFFFFFF, $43B7D4B7 & $FFFFFFFF, $500061AF & $FFFFFFFF
  Data.l $1E39F62E & $FFFFFFFF, $97244546 & $FFFFFFFF, $14214F74 & $FFFFFFFF, $BF8B8840 & $FFFFFFFF
  Data.l $4D95FC1D & $FFFFFFFF, $96B591AF & $FFFFFFFF, $70F4DDD3 & $FFFFFFFF, $66A02F45 & $FFFFFFFF
  Data.l $BFBC09EC & $FFFFFFFF, $03BD9785 & $FFFFFFFF, $7FAC6DD0 & $FFFFFFFF, $31CB8504 & $FFFFFFFF
  Data.l $96EB27B3 & $FFFFFFFF, $55FD3941 & $FFFFFFFF, $DA2547E6 & $FFFFFFFF, $ABCA0A9A & $FFFFFFFF
  Data.l $28507825 & $FFFFFFFF, $530429F4 & $FFFFFFFF, $0A2C86DA & $FFFFFFFF, $E9B66DFB & $FFFFFFFF
  Data.l $68DC1462 & $FFFFFFFF, $D7486900 & $FFFFFFFF, $680EC0A4 & $FFFFFFFF, $27A18DEE & $FFFFFFFF
  Data.l $4F3FFEA2 & $FFFFFFFF, $E887AD8C & $FFFFFFFF, $B58CE006 & $FFFFFFFF, $7AF4D6B6 & $FFFFFFFF
  Data.l $AACE1E7C & $FFFFFFFF, $D3375FEC & $FFFFFFFF, $CE78A399 & $FFFFFFFF, $406B2A42 & $FFFFFFFF
  Data.l $20FE9E35 & $FFFFFFFF, $D9F385B9 & $FFFFFFFF, $EE39D7AB & $FFFFFFFF, $3B124E8B & $FFFFFFFF
  Data.l $1DC9FAF7 & $FFFFFFFF, $4B6D1856 & $FFFFFFFF, $26A36631 & $FFFFFFFF, $EAE397B2 & $FFFFFFFF
  Data.l $3A6EFA74 & $FFFFFFFF, $DD5B4332 & $FFFFFFFF, $6841E7F7 & $FFFFFFFF, $CA7820FB & $FFFFFFFF
  Data.l $FB0AF54E & $FFFFFFFF, $D8FEB397 & $FFFFFFFF, $454056AC & $FFFFFFFF, $BA489527 & $FFFFFFFF
  Data.l $55533A3A & $FFFFFFFF, $20838D87 & $FFFFFFFF, $FE6BA9B7 & $FFFFFFFF, $D096954B & $FFFFFFFF
  Data.l $55A867BC & $FFFFFFFF, $A1159A58 & $FFFFFFFF, $CCA92963 & $FFFFFFFF, $99E1DB33 & $FFFFFFFF
  Data.l $A62A4A56 & $FFFFFFFF, $3F3125F9 & $FFFFFFFF, $5EF47E1C & $FFFFFFFF, $9029317C & $FFFFFFFF
  Data.l $FDF8E802 & $FFFFFFFF, $04272F70 & $FFFFFFFF, $80BB155C & $FFFFFFFF, $05282CE3 & $FFFFFFFF
  Data.l $95C11548 & $FFFFFFFF, $E4C66D22 & $FFFFFFFF, $48C1133F & $FFFFFFFF, $C70F86DC & $FFFFFFFF
  Data.l $07F9C9EE & $FFFFFFFF, $41041F0F & $FFFFFFFF, $404779A4 & $FFFFFFFF, $5D886E17 & $FFFFFFFF
  Data.l $325F51EB & $FFFFFFFF, $D59BC0D1 & $FFFFFFFF, $F2BCC18F & $FFFFFFFF, $41113564 & $FFFFFFFF
  Data.l $257B7834 & $FFFFFFFF, $602A9C60 & $FFFFFFFF, $DFF8E8A3 & $FFFFFFFF, $1F636C1B & $FFFFFFFF
  Data.l $0E12B4C2 & $FFFFFFFF, $02E1329E & $FFFFFFFF, $AF664FD1 & $FFFFFFFF, $CAD18115 & $FFFFFFFF
  Data.l $6B2395E0 & $FFFFFFFF, $333E92E1 & $FFFFFFFF, $3B240B62 & $FFFFFFFF, $EEBEB922 & $FFFFFFFF
  Data.l $85B2A20E & $FFFFFFFF, $E6BA0D99 & $FFFFFFFF, $DE720C8C & $FFFFFFFF, $2DA2F728 & $FFFFFFFF
  Data.l $D0127845 & $FFFFFFFF, $95B794FD & $FFFFFFFF, $647D0862 & $FFFFFFFF, $E7CCF5F0 & $FFFFFFFF
  Data.l $5449A36F & $FFFFFFFF, $877D48FA & $FFFFFFFF, $C39DFD27 & $FFFFFFFF, $F33E8D1E & $FFFFFFFF
  Data.l $0A476341 & $FFFFFFFF, $992EFF74 & $FFFFFFFF, $3A6F6EAB & $FFFFFFFF, $F4F8FD37 & $FFFFFFFF
  Data.l $A812DC60 & $FFFFFFFF, $A1EBDDF8 & $FFFFFFFF, $991BE14C & $FFFFFFFF, $DB6E6B0D & $FFFFFFFF
  Data.l $C67B5510 & $FFFFFFFF, $6D672C37 & $FFFFFFFF, $2765D43B & $FFFFFFFF, $DCD0E804 & $FFFFFFFF
  Data.l $F1290DC7 & $FFFFFFFF, $CC00FFA3 & $FFFFFFFF, $B5390F92 & $FFFFFFFF, $690FED0B & $FFFFFFFF
  Data.l $667B9FFB & $FFFFFFFF, $CEDB7D9C & $FFFFFFFF, $A091CF0B & $FFFFFFFF, $D9155EA3 & $FFFFFFFF
  Data.l $BB132F88 & $FFFFFFFF, $515BAD24 & $FFFFFFFF, $7B9479BF & $FFFFFFFF, $763BD6EB & $FFFFFFFF
  Data.l $37392EB3 & $FFFFFFFF, $CC115979 & $FFFFFFFF, $8026E297 & $FFFFFFFF, $F42E312D & $FFFFFFFF
  Data.l $6842ADA7 & $FFFFFFFF, $C66A2B3B & $FFFFFFFF, $12754CCC & $FFFFFFFF, $782EF11C & $FFFFFFFF
  Data.l $6A124237 & $FFFFFFFF, $B79251E7 & $FFFFFFFF, $06A1BBE6 & $FFFFFFFF, $4BFB6350 & $FFFFFFFF
  Data.l $1A6B1018 & $FFFFFFFF, $11CAEDFA & $FFFFFFFF, $3D25BDD8 & $FFFFFFFF, $E2E1C3C9 & $FFFFFFFF
  Data.l $44421659 & $FFFFFFFF, $0A121386 & $FFFFFFFF, $D90CEC6E & $FFFFFFFF, $D5ABEA2A & $FFFFFFFF
  Data.l $64AF674E & $FFFFFFFF, $DA86A85F & $FFFFFFFF, $BEBFE988 & $FFFFFFFF, $64E4C3FE & $FFFFFFFF
  Data.l $9DBC8057 & $FFFFFFFF, $F0F7C086 & $FFFFFFFF, $60787BF8 & $FFFFFFFF, $6003604D & $FFFFFFFF
  Data.l $D1FD8346 & $FFFFFFFF, $F6381FB0 & $FFFFFFFF, $7745AE04 & $FFFFFFFF, $D736FCCC & $FFFFFFFF
  Data.l $83426B33 & $FFFFFFFF, $F01EAB71 & $FFFFFFFF, $B0804187 & $FFFFFFFF, $3C005E5F & $FFFFFFFF
  Data.l $77A057BE & $FFFFFFFF, $BDE8AE24 & $FFFFFFFF, $55464299 & $FFFFFFFF, $BF582E61 & $FFFFFFFF
  Data.l $4E58F48F & $FFFFFFFF, $F2DDFDA2 & $FFFFFFFF, $F474EF38 & $FFFFFFFF, $8789BDC2 & $FFFFFFFF
  Data.l $5366F9C3 & $FFFFFFFF, $C8B38E74 & $FFFFFFFF, $B475F255 & $FFFFFFFF, $46FCD9B9 & $FFFFFFFF
  Data.l $7AEB2661 & $FFFFFFFF, $8B1DDF84 & $FFFFFFFF, $846A0E79 & $FFFFFFFF, $915F95E2 & $FFFFFFFF
  Data.l $466E598E & $FFFFFFFF, $20B45770 & $FFFFFFFF, $8CD55591 & $FFFFFFFF, $C902DE4C & $FFFFFFFF
  Data.l $B90BACE1 & $FFFFFFFF, $BB8205D0 & $FFFFFFFF, $11A86248 & $FFFFFFFF, $7574A99E & $FFFFFFFF
  Data.l $B77F19B6 & $FFFFFFFF, $E0A9DC09 & $FFFFFFFF, $662D09A1 & $FFFFFFFF, $C4324633 & $FFFFFFFF
  Data.l $E85A1F02 & $FFFFFFFF, $09F0BE8C & $FFFFFFFF, $4A99A025 & $FFFFFFFF, $1D6EFE10 & $FFFFFFFF
  Data.l $1AB93D1D & $FFFFFFFF, $0BA5A4DF & $FFFFFFFF, $A186F20F & $FFFFFFFF, $2868F169 & $FFFFFFFF
  Data.l $DCB7DA83 & $FFFFFFFF, $573906FE & $FFFFFFFF, $A1E2CE9B & $FFFFFFFF, $4FCD7F52 & $FFFFFFFF
  Data.l $50115E01 & $FFFFFFFF, $A70683FA & $FFFFFFFF, $A002B5C4 & $FFFFFFFF, $0DE6D027 & $FFFFFFFF
  Data.l $9AF88C27 & $FFFFFFFF, $773F8641 & $FFFFFFFF, $C3604C06 & $FFFFFFFF, $61A806B5 & $FFFFFFFF
  Data.l $F0177A28 & $FFFFFFFF, $C0F586E0 & $FFFFFFFF, $006058AA & $FFFFFFFF, $30DC7D62 & $FFFFFFFF
  Data.l $11E69ED7 & $FFFFFFFF, $2338EA63 & $FFFFFFFF, $53C2DD94 & $FFFFFFFF, $C2C21634 & $FFFFFFFF
  Data.l $BBCBEE56 & $FFFFFFFF, $90BCB6DE & $FFFFFFFF, $EBFC7DA1 & $FFFFFFFF, $CE591D76 & $FFFFFFFF
  Data.l $6F05E409 & $FFFFFFFF, $4B7C0188 & $FFFFFFFF, $39720A3D & $FFFFFFFF, $7C927C24 & $FFFFFFFF
  Data.l $86E3725F & $FFFFFFFF, $724D9DB9 & $FFFFFFFF, $1AC15BB4 & $FFFFFFFF, $D39EB8FC & $FFFFFFFF
  Data.l $ED545578 & $FFFFFFFF, $08FCA5B5 & $FFFFFFFF, $D83D7CD3 & $FFFFFFFF, $4DAD0FC4 & $FFFFFFFF
  Data.l $1E50EF5E & $FFFFFFFF, $B161E6F8 & $FFFFFFFF, $A28514D9 & $FFFFFFFF, $6C51133C & $FFFFFFFF
  Data.l $6FD5C7E7 & $FFFFFFFF, $56E14EC4 & $FFFFFFFF, $362ABFCE & $FFFFFFFF, $DDC6C837 & $FFFFFFFF
  Data.l $D79A3234 & $FFFFFFFF, $92638212 & $FFFFFFFF, $670EFA8E & $FFFFFFFF, $406000E0 & $FFFFFFFF
  Data.l $3A39CE37 & $FFFFFFFF, $D3FAF5CF & $FFFFFFFF, $ABC27737 & $FFFFFFFF, $5AC52D1B & $FFFFFFFF
  Data.l $5CB0679E & $FFFFFFFF, $4FA33742 & $FFFFFFFF, $D3822740 & $FFFFFFFF, $99BC9BBE & $FFFFFFFF
  Data.l $D5118E9D & $FFFFFFFF, $BF0F7315 & $FFFFFFFF, $D62D1C7E & $FFFFFFFF, $C700C47B & $FFFFFFFF
  Data.l $B78C1B6B & $FFFFFFFF, $21A19045 & $FFFFFFFF, $B26EB1BE & $FFFFFFFF, $6A366EB4 & $FFFFFFFF
  Data.l $5748AB2F & $FFFFFFFF, $BC946E79 & $FFFFFFFF, $C6A376D2 & $FFFFFFFF, $6549C2C8 & $FFFFFFFF
  Data.l $530FF8EE & $FFFFFFFF, $468DDE7D & $FFFFFFFF, $D5730A1D & $FFFFFFFF, $4CD04DC6 & $FFFFFFFF
  Data.l $2939BBDB & $FFFFFFFF, $A9BA4650 & $FFFFFFFF, $AC9526E8 & $FFFFFFFF, $BE5EE304 & $FFFFFFFF
  Data.l $A1FAD5F0 & $FFFFFFFF, $6A2D519A & $FFFFFFFF, $63EF8CE2 & $FFFFFFFF, $9A86EE22 & $FFFFFFFF
  Data.l $C089C2B8 & $FFFFFFFF, $43242EF6 & $FFFFFFFF, $A51E03AA & $FFFFFFFF, $9CF2D0A4 & $FFFFFFFF
  Data.l $83C061BA & $FFFFFFFF, $9BE96A4D & $FFFFFFFF, $8FE51550 & $FFFFFFFF, $BA645BD6 & $FFFFFFFF
  Data.l $2826A2F9 & $FFFFFFFF, $A73A3AE1 & $FFFFFFFF, $4BA99586 & $FFFFFFFF, $EF5562E9 & $FFFFFFFF
  Data.l $C72FEFD3 & $FFFFFFFF, $F752F7DA & $FFFFFFFF, $3F046F69 & $FFFFFFFF, $77FA0A59 & $FFFFFFFF
  Data.l $80E4A915 & $FFFFFFFF, $87B08601 & $FFFFFFFF, $9B09E6AD & $FFFFFFFF, $3B3EE593 & $FFFFFFFF
  Data.l $E990FD5A & $FFFFFFFF, $9E34D797 & $FFFFFFFF, $2CF0B7D9 & $FFFFFFFF, $022B8B51 & $FFFFFFFF
  Data.l $96D5AC3A & $FFFFFFFF, $017DA67D & $FFFFFFFF, $D1CF3ED6 & $FFFFFFFF, $7C7D2D28 & $FFFFFFFF
  Data.l $1F9F25CF & $FFFFFFFF, $ADF2B89B & $FFFFFFFF, $5AD6B472 & $FFFFFFFF, $5A88F54C & $FFFFFFFF
  Data.l $E029AC71 & $FFFFFFFF, $E019A5E6 & $FFFFFFFF, $47B0ACFD & $FFFFFFFF, $ED93FA9B & $FFFFFFFF
  Data.l $E8D3C48D & $FFFFFFFF, $283B57CC & $FFFFFFFF, $F8D56629 & $FFFFFFFF, $79132E28 & $FFFFFFFF
  Data.l $785F0191 & $FFFFFFFF, $ED756055 & $FFFFFFFF, $F7960E44 & $FFFFFFFF, $E3D35E8C & $FFFFFFFF
  Data.l $15056DD4 & $FFFFFFFF, $88F46DBA & $FFFFFFFF, $03A16125 & $FFFFFFFF, $0564F0BD & $FFFFFFFF
  Data.l $C3EB9E15 & $FFFFFFFF, $3C9057A2 & $FFFFFFFF, $97271AEC & $FFFFFFFF, $A93A072A & $FFFFFFFF
  Data.l $1B3F6D9B & $FFFFFFFF, $1E6321F5 & $FFFFFFFF, $F59C66FB & $FFFFFFFF, $26DCF319 & $FFFFFFFF
  Data.l $7533D928 & $FFFFFFFF, $B155FDF5 & $FFFFFFFF, $03563482 & $FFFFFFFF, $8ABA3CBB & $FFFFFFFF
  Data.l $28517711 & $FFFFFFFF, $C20AD9F8 & $FFFFFFFF, $ABCC5167 & $FFFFFFFF, $CCAD925F & $FFFFFFFF
  Data.l $4DE81751 & $FFFFFFFF, $3830DC8E & $FFFFFFFF, $379D5862 & $FFFFFFFF, $9320F991 & $FFFFFFFF
  Data.l $EA7A90C2 & $FFFFFFFF, $FB3E7BCE & $FFFFFFFF, $5121CE64 & $FFFFFFFF, $774FBE32 & $FFFFFFFF
  Data.l $A8B6E37E & $FFFFFFFF, $C3293D46 & $FFFFFFFF, $48DE5369 & $FFFFFFFF, $6413E680 & $FFFFFFFF
  Data.l $A2AE0810 & $FFFFFFFF, $DD6DB224 & $FFFFFFFF, $69852DFD & $FFFFFFFF, $09072166 & $FFFFFFFF
  Data.l $B39A460A & $FFFFFFFF, $6445C0DD & $FFFFFFFF, $586CDECF & $FFFFFFFF, $1C20C8AE & $FFFFFFFF
  Data.l $5BBEF7DD & $FFFFFFFF, $1B588D40 & $FFFFFFFF, $CCD2017F & $FFFFFFFF, $6BB4E3BB & $FFFFFFFF
  Data.l $DDA26A7E & $FFFFFFFF, $3A59FF45 & $FFFFFFFF, $3E350A44 & $FFFFFFFF, $BCB4CDD5 & $FFFFFFFF
  Data.l $72EACEA8 & $FFFFFFFF, $FA6484BB & $FFFFFFFF, $8D6612AE & $FFFFFFFF, $BF3C6F47 & $FFFFFFFF
  Data.l $D29BE463 & $FFFFFFFF, $542F5D9E & $FFFFFFFF, $AEC2771B & $FFFFFFFF, $F64E6370 & $FFFFFFFF
  Data.l $740E0D8D & $FFFFFFFF, $E75B1357 & $FFFFFFFF, $F8721671 & $FFFFFFFF, $AF537D5D & $FFFFFFFF
  Data.l $4040CB08 & $FFFFFFFF, $4EB4E2CC & $FFFFFFFF, $34D2466A & $FFFFFFFF, $0115AF84 & $FFFFFFFF
  Data.l $E1B00428 & $FFFFFFFF, $95983A1D & $FFFFFFFF, $06B89FB4 & $FFFFFFFF, $CE6EA048 & $FFFFFFFF
  Data.l $6F3F3B82 & $FFFFFFFF, $3520AB82 & $FFFFFFFF, $011A1D4B & $FFFFFFFF, $277227F8 & $FFFFFFFF
  Data.l $611560B1 & $FFFFFFFF, $E7933FDC & $FFFFFFFF, $BB3A792B & $FFFFFFFF, $344525BD & $FFFFFFFF
  Data.l $A08839E1 & $FFFFFFFF, $51CE794B & $FFFFFFFF, $2F32C9B7 & $FFFFFFFF, $A01FBAC9 & $FFFFFFFF
  Data.l $E01CC87E & $FFFFFFFF, $BCC7D1F6 & $FFFFFFFF, $CF0111C3 & $FFFFFFFF, $A1E8AAC7 & $FFFFFFFF
  Data.l $1A908749 & $FFFFFFFF, $D44FBD9A & $FFFFFFFF, $D0DADECB & $FFFFFFFF, $D50ADA38 & $FFFFFFFF
  Data.l $0339C32A & $FFFFFFFF, $C6913667 & $FFFFFFFF, $8DF9317C & $FFFFFFFF, $E0B12B4F & $FFFFFFFF
  Data.l $F79E59B7 & $FFFFFFFF, $43F5BB3A & $FFFFFFFF, $F2D519FF & $FFFFFFFF, $27D9459C & $FFFFFFFF
  Data.l $BF97222C & $FFFFFFFF, $15E6FC2A & $FFFFFFFF, $0F91FC71 & $FFFFFFFF, $9B941525 & $FFFFFFFF
  Data.l $FAE59361 & $FFFFFFFF, $CEB69CEB & $FFFFFFFF, $C2A86459 & $FFFFFFFF, $12BAA8D1 & $FFFFFFFF
  Data.l $B6C1075E & $FFFFFFFF, $E3056A0C & $FFFFFFFF, $10D25065 & $FFFFFFFF, $CB03A442 & $FFFFFFFF
  Data.l $E0EC6E0E & $FFFFFFFF, $1698DB3B & $FFFFFFFF, $4C98A0BE & $FFFFFFFF, $3278E964 & $FFFFFFFF
  Data.l $9F1F9532 & $FFFFFFFF, $E0D392DF & $FFFFFFFF, $D3A0342B & $FFFFFFFF, $8971F21E & $FFFFFFFF
  Data.l $1B0A7441 & $FFFFFFFF, $4BA3348C & $FFFFFFFF, $C5BE7120 & $FFFFFFFF, $C37632D8 & $FFFFFFFF
  Data.l $DF359F8D & $FFFFFFFF, $9B992F2E & $FFFFFFFF, $E60B6F47 & $FFFFFFFF, $0FE3F11D & $FFFFFFFF
  Data.l $E54CDA54 & $FFFFFFFF, $1EDAD891 & $FFFFFFFF, $CE6279CF & $FFFFFFFF, $CD3E7E6F & $FFFFFFFF
  Data.l $1618B166 & $FFFFFFFF, $FD2C1D05 & $FFFFFFFF, $848FD2C5 & $FFFFFFFF, $F6FB2299 & $FFFFFFFF
  Data.l $F523F357 & $FFFFFFFF, $A6327623 & $FFFFFFFF, $93A83531 & $FFFFFFFF, $56CCCD02 & $FFFFFFFF
  Data.l $ACF08162 & $FFFFFFFF, $5A75EBB5 & $FFFFFFFF, $6E163697 & $FFFFFFFF, $88D273CC & $FFFFFFFF
  Data.l $DE966292 & $FFFFFFFF, $81B949D0 & $FFFFFFFF, $4C50901B & $FFFFFFFF, $71C65614 & $FFFFFFFF
  Data.l $E6C6C7BD & $FFFFFFFF, $327A140A & $FFFFFFFF, $45E1D006 & $FFFFFFFF, $C3F27B9A & $FFFFFFFF
  Data.l $C9AA53FD & $FFFFFFFF, $62A80F00 & $FFFFFFFF, $BB25BFE2 & $FFFFFFFF, $35BDD2F6 & $FFFFFFFF
  Data.l $71126905 & $FFFFFFFF, $B2040222 & $FFFFFFFF, $B6CBCF7C & $FFFFFFFF, $CD769C2B & $FFFFFFFF
  Data.l $53113EC0 & $FFFFFFFF, $1640E3D3 & $FFFFFFFF, $38ABBD60 & $FFFFFFFF, $2547ADF0 & $FFFFFFFF
  Data.l $BA38209C & $FFFFFFFF, $F746CE76 & $FFFFFFFF, $77AFA1C5 & $FFFFFFFF, $20756060 & $FFFFFFFF
  Data.l $85CBFE4E & $FFFFFFFF, $8AE88DD8 & $FFFFFFFF, $7AAAF9B0 & $FFFFFFFF, $4CF9AA7E & $FFFFFFFF
  Data.l $1948C25C & $FFFFFFFF, $02FB8A8C & $FFFFFFFF, $01C36AE4 & $FFFFFFFF, $D6EBE1F9 & $FFFFFFFF
  Data.l $90D4F869 & $FFFFFFFF, $A65CDEA0 & $FFFFFFFF, $3F09252D & $FFFFFFFF, $C208E69F & $FFFFFFFF
  Data.l $B74E6132 & $FFFFFFFF, $CE77E25B & $FFFFFFFF, $578FDFE3 & $FFFFFFFF, $3AC372E6 & $FFFFFFFF
EndDataSection
bye,
Daniel
Post Reply