tiger hash

Post your FreeBASIC source, examples, tips and tricks here. Please don’t post code without including an explanation.
Post Reply
Mindless
Posts: 110
Joined: Jun 25, 2005 14:50
Location: USA

tiger hash

Post by Mindless »

http://en.wikipedia.org/wiki/Tiger_hash

tigertest.bas

Code: Select all

#include "crt.bi"

#define ITERATIONS 500

declare sub tiger(as byte ptr, as ulongint, as ulongint ptr)

dim as ubyte buffer(65536-1)
dim as long t1, t2
dim as double rate
dim as integer i

dim as ulongint res(3-1)

#macro hash(str_)
	tiger(cast(byte ptr, @str_), len(str_), @res(0))
	printf(!"Hash of \"%s\":\n\t%08X%08X %08X%08X %08X%08X\n", _
	       cast(byte ptr, @str_), _
	       cast(uinteger, res(0) shr 32), _
	       cast(uinteger, res(0)), _
	       cast(uinteger, res(1) shr 32), _
	       cast(uinteger, res(1)), _
	       cast(uinteger, res(2) shr 32), _
	       cast(uinteger, res(2)) )
#endmacro

/' Hash of short strings '/
hash("")
hash("abc")
hash("Tiger")
/' Hash of 512-bit strings '/
hash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-")
hash("ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789")
hash("Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham")
/' Hash of two-block strings strings '/
hash("Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proceedings of Fast Software Encryption 3, Cambridge.")
hash("Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proceedings of Fast Software Encryption 3, Cambridge, 1996.")
hash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-")

/' Hash of a 64K byte string '/
for i = 0 to 65536-1
	buffer(i) = i and &hFF
next

tiger(@buffer(0), 65536, @res(0))
printf(!"Hash of a 64K-byte string:\n\t%08X%08X %08X%08X %08X%08X\n", _
	cast(uinteger, res(0) shr 32), _
	cast(uinteger, res(0)), _
	cast(uinteger, res(1) shr 32), _
	cast(uinteger, res(1)), _
	cast(uinteger, res(2) shr 32), _
	cast(uinteger, res(2)) )

t1 = timer
for i = 0  to ITERATIONS-1
	tiger(@buffer(0), 65536, @res(0))
next
t2 = timer

rate = cast(double, ITERATIONS)*65556.0*8.0/cast(double, t2 - t1)
printf(!"rate = %lf bit/s\n", rate)
tiger.bas

Code: Select all

#define PASSES 3

extern as ulongint table(4*256-1)

#define t1 cast(ulongint ptr, @table(0))
#define t2 cast(ulongint ptr, @table(256))
#define t3 cast(ulongint ptr, @table(256*2))
#define t4 cast(ulongint ptr, @table(256*3))

#macro tiger__save_abc()
	aa = a
	bb = b
	cc = c
#endmacro

#macro tiger__round(a, b, c, x, mul)
	c xor= x
	a -= t1[cast(ubyte, (c))] xor _
	     t2[cast(ubyte, cast(uinteger, (c)) shr (2*8))] xor _
	     t3[cast(ubyte, (c) shr (4*8))] xor _
	     t4[cast(ubyte, cast(uinteger, (c) shr (4*8)) shr (2*8))]
	b += t4[cast(ubyte, cast(uinteger, (c)) shr (1*8))] xor _
	     t3[cast(ubyte, cast(uinteger, (c)) shr (3*8))] xor _
	     t2[cast(ubyte, cast(uinteger, (c) shr (4*8)) shr (1*8))] xor _
	     t1[cast(ubyte, cast(uinteger, (c) shr (4*8)) shr (3*8))]
	b *= mul
#endmacro

#macro tiger__pass(a, b, c, mul)
      tiger__round((a), (b), (c), x0, (mul))
      tiger__round((b), (c), (a), x1, (mul))
      tiger__round((c), (a), (b), x2, (mul))
      tiger__round((a), (b), (c), x3, (mul))
      tiger__round((b), (c), (a), x4, (mul))
      tiger__round((c), (a), (b), x5, (mul))
      tiger__round((a), (b), (c), x6, (mul))
      tiger__round((b), (c), (a), x7, (mul))
#endmacro

#macro tiger__key_schedule()
      x0 -= x7 xor &hA5A5A5A5A5A5A5A5ULL
      x1 xor= x0
      x2 += x1
      x3 -= x2 xor ((not x1) shl 19)
      x4 xor= x3
      x5 += x4
      x6 -= x5 xor ((not x4) shr 23)
      x7 xor= x6
      x0 += x7
      x1 -= x0 xor ((not x7) shl 19)
      x2 xor= x1
      x3 += x2
      x4 -= x3 xor ((not x2) shr 23)
      x5 xor= x4
      x6 += x5
      x7 -= x6 xor &h0123456789ABCDEFULL
#endmacro

#macro tiger__feedforward()
      a xor= aa
      b -= bb
      c += cc
#endmacro

#macro tiger__compress()
	tiger__save_abc()
	for pass_no = 0 to PASSES-1
		if (pass_no <> 0) then
			tiger__key_schedule()
		end if
		tiger__pass(a, b, c, iif(pass_no = 0, 5, iif(pass_no = 1, 7, 9)))
		tmpa = a : a = c : c = b : b = tmpa
	next
	tiger__feedforward()
#endmacro

#macro tiger_compress_macro(str_, state)
	scope
		dim as ulongint a, b, c, tmpa
		dim as ulongint aa, bb, cc
		dim as ulongint x0, x1, x2, x3, x4, x5, x6, x7
		dim as uinteger i
		dim as integer pass_no
		
		a = state[0]
		b = state[1]
		c = state[2]
		
		x0 = str_[0] : x1 = str_[1] : x2 = str_[2] : x3=str_[3]
		x4 = str_[4] : x5 = str_[5] : x6 = str_[6] : x7=str_[7]
		
		tiger__compress()
		
		state[0] = a
		state[1] = b
		state[2] = c
	end scope
#endmacro

/' The compress function is a function. Requires smaller cache?    '/
sub tiger_compress(str_ as ulongint ptr, state as ulongint ptr)
	tiger_compress_macro(str_, state)
end sub

sub tiger(str_ as ulongint ptr, length as ulongint, res as ulongint ptr)
	dim as ulongint i, j
	dim as ubyte temp(64-1)

	res[0] = &h0123456789ABCDEFULL
	res[1] = &hFEDCBA9876543210ULL
	res[2] = &hF096A5B4C3B2E187ULL

	i = length
	do while i >= 64
		tiger_compress(str_, res)
		str_ += 8
		i -= 64
	loop

	j = 0 : do while j < i
		temp(j) = cast(ubyte ptr, str_)[j]
		j += 1
	loop

	temp(j) = &h01 : j += 1
	do while j and 7
		temp(j) = 0
		j += 1
	loop
	if (j > 56) then
		do while j < 64
			temp(j) = 0
			j += 1
		loop
		tiger_compress(cast(ulongint ptr, @temp(0)), res)
		j = 0
	end if

	do while j < 56
		temp(j) = 0
		j += 1
	loop
	cast(ulongint ptr, @(temp(56)))[0] = cast(ulongint, length) shl 3
	tiger_compress(cast(ulongint ptr, @temp(0)), res)
end sub
sboxes.bas

Code: Select all

extern as ulongint table(4*256-1)
dim as ulongint table(4*256-1) = { _
    &h02AAB17CF7E90C5EULL   /'    0 '/,    &hAC424B03E243A8ECULL   /'    1 '/, _
    &h72CD5BE30DD5FCD3ULL   /'    2 '/,    &h6D019B93F6F97F3AULL   /'    3 '/, _
    &hCD9978FFD21F9193ULL   /'    4 '/,    &h7573A1C9708029E2ULL   /'    5 '/, _
    &hB164326B922A83C3ULL   /'    6 '/,    &h46883EEE04915870ULL   /'    7 '/, _
    &hEAACE3057103ECE6ULL   /'    8 '/,    &hC54169B808A3535CULL   /'    9 '/, _
    &h4CE754918DDEC47CULL   /'   10 '/,    &h0AA2F4DFDC0DF40CULL   /'   11 '/, _
    &h10B76F18A74DBEFAULL   /'   12 '/,    &hC6CCB6235AD1AB6AULL   /'   13 '/, _
    &h13726121572FE2FFULL   /'   14 '/,    &h1A488C6F199D921EULL   /'   15 '/, _
    &h4BC9F9F4DA0007CAULL   /'   16 '/,    &h26F5E6F6E85241C7ULL   /'   17 '/, _
    &h859079DBEA5947B6ULL   /'   18 '/,    &h4F1885C5C99E8C92ULL   /'   19 '/, _
    &hD78E761EA96F864BULL   /'   20 '/,    &h8E36428C52B5C17DULL   /'   21 '/, _
    &h69CF6827373063C1ULL   /'   22 '/,    &hB607C93D9BB4C56EULL   /'   23 '/, _
    &h7D820E760E76B5EAULL   /'   24 '/,    &h645C9CC6F07FDC42ULL   /'   25 '/, _
    &hBF38A078243342E0ULL   /'   26 '/,    &h5F6B343C9D2E7D04ULL   /'   27 '/, _
    &hF2C28AEB600B0EC6ULL   /'   28 '/,    &h6C0ED85F7254BCACULL   /'   29 '/, _
    &h71592281A4DB4FE5ULL   /'   30 '/,    &h1967FA69CE0FED9FULL   /'   31 '/, _
    &hFD5293F8B96545DBULL   /'   32 '/,    &hC879E9D7F2A7600BULL   /'   33 '/, _
    &h860248920193194EULL   /'   34 '/,    &hA4F9533B2D9CC0B3ULL   /'   35 '/, _
    &h9053836C15957613ULL   /'   36 '/,    &hDB6DCF8AFC357BF1ULL   /'   37 '/, _
    &h18BEEA7A7A370F57ULL   /'   38 '/,    &h037117CA50B99066ULL   /'   39 '/, _
    &h6AB30A9774424A35ULL   /'   40 '/,    &hF4E92F02E325249BULL   /'   41 '/, _
    &h7739DB07061CCAE1ULL   /'   42 '/,    &hD8F3B49CECA42A05ULL   /'   43 '/, _
    &hBD56BE3F51382F73ULL   /'   44 '/,    &h45FAED5843B0BB28ULL   /'   45 '/, _
    &h1C813D5C11BF1F83ULL   /'   46 '/,    &h8AF0E4B6D75FA169ULL   /'   47 '/, _
    &h33EE18A487AD9999ULL   /'   48 '/,    &h3C26E8EAB1C94410ULL   /'   49 '/, _
    &hB510102BC0A822F9ULL   /'   50 '/,    &h141EEF310CE6123BULL   /'   51 '/, _
    &hFC65B90059DDB154ULL   /'   52 '/,    &hE0158640C5E0E607ULL   /'   53 '/, _
    &h884E079826C3A3CFULL   /'   54 '/,    &h930D0D9523C535FDULL   /'   55 '/, _
    &h35638D754E9A2B00ULL   /'   56 '/,    &h4085FCCF40469DD5ULL   /'   57 '/, _
    &hC4B17AD28BE23A4CULL   /'   58 '/,    &hCAB2F0FC6A3E6A2EULL   /'   59 '/, _
    &h2860971A6B943FCDULL   /'   60 '/,    &h3DDE6EE212E30446ULL   /'   61 '/, _
    &h6222F32AE01765AEULL   /'   62 '/,    &h5D550BB5478308FEULL   /'   63 '/, _
    &hA9EFA98DA0EDA22AULL   /'   64 '/,    &hC351A71686C40DA7ULL   /'   65 '/, _
    &h1105586D9C867C84ULL   /'   66 '/,    &hDCFFEE85FDA22853ULL   /'   67 '/, _
    &hCCFBD0262C5EEF76ULL   /'   68 '/,    &hBAF294CB8990D201ULL   /'   69 '/, _
    &hE69464F52AFAD975ULL   /'   70 '/,    &h94B013AFDF133E14ULL   /'   71 '/, _
    &h06A7D1A32823C958ULL   /'   72 '/,    &h6F95FE5130F61119ULL   /'   73 '/, _
    &hD92AB34E462C06C0ULL   /'   74 '/,    &hED7BDE33887C71D2ULL   /'   75 '/, _
    &h79746D6E6518393EULL   /'   76 '/,    &h5BA419385D713329ULL   /'   77 '/, _
    &h7C1BA6B948A97564ULL   /'   78 '/,    &h31987C197BFDAC67ULL   /'   79 '/, _
    &hDE6C23C44B053D02ULL   /'   80 '/,    &h581C49FED002D64DULL   /'   81 '/, _
    &hDD474D6338261571ULL   /'   82 '/,    &hAA4546C3E473D062ULL   /'   83 '/, _
    &h928FCE349455F860ULL   /'   84 '/,    &h48161BBACAAB94D9ULL   /'   85 '/, _
    &h63912430770E6F68ULL   /'   86 '/,    &h6EC8A5E602C6641CULL   /'   87 '/, _
    &h87282515337DDD2BULL   /'   88 '/,    &h2CDA6B42034B701BULL   /'   89 '/, _
    &hB03D37C181CB096DULL   /'   90 '/,    &hE108438266C71C6FULL   /'   91 '/, _
    &h2B3180C7EB51B255ULL   /'   92 '/,    &hDF92B82F96C08BBCULL   /'   93 '/, _
    &h5C68C8C0A632F3BAULL   /'   94 '/,    &h5504CC861C3D0556ULL   /'   95 '/, _
    &hABBFA4E55FB26B8FULL   /'   96 '/,    &h41848B0AB3BACEB4ULL   /'   97 '/, _
    &hB334A273AA445D32ULL   /'   98 '/,    &hBCA696F0A85AD881ULL   /'   99 '/, _
    &h24F6EC65B528D56CULL   /'  100 '/,    &h0CE1512E90F4524AULL   /'  101 '/, _
    &h4E9DD79D5506D35AULL   /'  102 '/,    &h258905FAC6CE9779ULL   /'  103 '/, _
    &h2019295B3E109B33ULL   /'  104 '/,    &hF8A9478B73A054CCULL   /'  105 '/, _
    &h2924F2F934417EB0ULL   /'  106 '/,    &h3993357D536D1BC4ULL   /'  107 '/, _
    &h38A81AC21DB6FF8BULL   /'  108 '/,    &h47C4FBF17D6016BFULL   /'  109 '/, _
    &h1E0FAADD7667E3F5ULL   /'  110 '/,    &h7ABCFF62938BEB96ULL   /'  111 '/, _
    &hA78DAD948FC179C9ULL   /'  112 '/,    &h8F1F98B72911E50DULL   /'  113 '/, _
    &h61E48EAE27121A91ULL   /'  114 '/,    &h4D62F7AD31859808ULL   /'  115 '/, _
    &hECEBA345EF5CEAEBULL   /'  116 '/,    &hF5CEB25EBC9684CEULL   /'  117 '/, _
    &hF633E20CB7F76221ULL   /'  118 '/,    &hA32CDF06AB8293E4ULL   /'  119 '/, _
    &h985A202CA5EE2CA4ULL   /'  120 '/,    &hCF0B8447CC8A8FB1ULL   /'  121 '/, _
    &h9F765244979859A3ULL   /'  122 '/,    &hA8D516B1A1240017ULL   /'  123 '/, _
    &h0BD7BA3EBB5DC726ULL   /'  124 '/,    &hE54BCA55B86ADB39ULL   /'  125 '/, _
    &h1D7A3AFD6C478063ULL   /'  126 '/,    &h519EC608E7669EDDULL   /'  127 '/, _
    &h0E5715A2D149AA23ULL   /'  128 '/,    &h177D4571848FF194ULL   /'  129 '/, _
    &hEEB55F3241014C22ULL   /'  130 '/,    &h0F5E5CA13A6E2EC2ULL   /'  131 '/, _
    &h8029927B75F5C361ULL   /'  132 '/,    &hAD139FABC3D6E436ULL   /'  133 '/, _
    &h0D5DF1A94CCF402FULL   /'  134 '/,    &h3E8BD948BEA5DFC8ULL   /'  135 '/, _
    &hA5A0D357BD3FF77EULL   /'  136 '/,    &hA2D12E251F74F645ULL   /'  137 '/, _
    &h66FD9E525E81A082ULL   /'  138 '/,    &h2E0C90CE7F687A49ULL   /'  139 '/, _
    &hC2E8BCBEBA973BC5ULL   /'  140 '/,    &h000001BCE509745FULL   /'  141 '/, _
    &h423777BBE6DAB3D6ULL   /'  142 '/,    &hD1661C7EAEF06EB5ULL   /'  143 '/, _
    &hA1781F354DAACFD8ULL   /'  144 '/,    &h2D11284A2B16AFFCULL   /'  145 '/, _
    &hF1FC4F67FA891D1FULL   /'  146 '/,    &h73ECC25DCB920ADAULL   /'  147 '/, _
    &hAE610C22C2A12651ULL   /'  148 '/,    &h96E0A810D356B78AULL   /'  149 '/, _
    &h5A9A381F2FE7870FULL   /'  150 '/,    &hD5AD62EDE94E5530ULL   /'  151 '/, _
    &hD225E5E8368D1427ULL   /'  152 '/,    &h65977B70C7AF4631ULL   /'  153 '/, _
    &h99F889B2DE39D74FULL   /'  154 '/,    &h233F30BF54E1D143ULL   /'  155 '/, _
    &h9A9675D3D9A63C97ULL   /'  156 '/,    &h5470554FF334F9A8ULL   /'  157 '/, _
    &h166ACB744A4F5688ULL   /'  158 '/,    &h70C74CAAB2E4AEADULL   /'  159 '/, _
    &hF0D091646F294D12ULL   /'  160 '/,    &h57B82A89684031D1ULL   /'  161 '/, _
    &hEFD95A5A61BE0B6BULL   /'  162 '/,    &h2FBD12E969F2F29AULL   /'  163 '/, _
    &h9BD37013FEFF9FE8ULL   /'  164 '/,    &h3F9B0404D6085A06ULL   /'  165 '/, _
    &h4940C1F3166CFE15ULL   /'  166 '/,    &h09542C4DCDF3DEFBULL   /'  167 '/, _
    &hB4C5218385CD5CE3ULL   /'  168 '/,    &hC935B7DC4462A641ULL   /'  169 '/, _
    &h3417F8A68ED3B63FULL   /'  170 '/,    &hB80959295B215B40ULL   /'  171 '/, _
    &hF99CDAEF3B8C8572ULL   /'  172 '/,    &h018C0614F8FCB95DULL   /'  173 '/, _
    &h1B14ACCD1A3ACDF3ULL   /'  174 '/,    &h84D471F200BB732DULL   /'  175 '/, _
    &hC1A3110E95E8DA16ULL   /'  176 '/,    &h430A7220BF1A82B8ULL   /'  177 '/, _
    &hB77E090D39DF210EULL   /'  178 '/,    &h5EF4BD9F3CD05E9DULL   /'  179 '/, _
    &h9D4FF6DA7E57A444ULL   /'  180 '/,    &hDA1D60E183D4A5F8ULL   /'  181 '/, _
    &hB287C38417998E47ULL   /'  182 '/,    &hFE3EDC121BB31886ULL   /'  183 '/, _
    &hC7FE3CCC980CCBEFULL   /'  184 '/,    &hE46FB590189BFD03ULL   /'  185 '/, _
    &h3732FD469A4C57DCULL   /'  186 '/,    &h7EF700A07CF1AD65ULL   /'  187 '/, _
    &h59C64468A31D8859ULL   /'  188 '/,    &h762FB0B4D45B61F6ULL   /'  189 '/, _
    &h155BAED099047718ULL   /'  190 '/,    &h68755E4C3D50BAA6ULL   /'  191 '/, _
    &hE9214E7F22D8B4DFULL   /'  192 '/,    &h2ADDBF532EAC95F4ULL   /'  193 '/, _
    &h32AE3909B4BD0109ULL   /'  194 '/,    &h834DF537B08E3450ULL   /'  195 '/, _
    &hFA209DA84220728DULL   /'  196 '/,    &h9E691D9B9EFE23F7ULL   /'  197 '/, _
    &h0446D288C4AE8D7FULL   /'  198 '/,    &h7B4CC524E169785BULL   /'  199 '/, _
    &h21D87F0135CA1385ULL   /'  200 '/,    &hCEBB400F137B8AA5ULL   /'  201 '/, _
    &h272E2B66580796BEULL   /'  202 '/,    &h3612264125C2B0DEULL   /'  203 '/, _
    &h057702BDAD1EFBB2ULL   /'  204 '/,    &hD4BABB8EACF84BE9ULL   /'  205 '/, _
    &h91583139641BC67BULL   /'  206 '/,    &h8BDC2DE08036E024ULL   /'  207 '/, _
    &h603C8156F49F68EDULL   /'  208 '/,    &hF7D236F7DBEF5111ULL   /'  209 '/, _
    &h9727C4598AD21E80ULL   /'  210 '/,    &hA08A0896670A5FD7ULL   /'  211 '/, _
    &hCB4A8F4309EBA9CBULL   /'  212 '/,    &h81AF564B0F7036A1ULL   /'  213 '/, _
    &hC0B99AA778199ABDULL   /'  214 '/,    &h959F1EC83FC8E952ULL   /'  215 '/, _
    &h8C505077794A81B9ULL   /'  216 '/,    &h3ACAAF8F056338F0ULL   /'  217 '/, _
    &h07B43F50627A6778ULL   /'  218 '/,    &h4A44AB49F5ECCC77ULL   /'  219 '/, _
    &h3BC3D6E4B679EE98ULL   /'  220 '/,    &h9CC0D4D1CF14108CULL   /'  221 '/, _
    &h4406C00B206BC8A0ULL   /'  222 '/,    &h82A18854C8D72D89ULL   /'  223 '/, _
    &h67E366B35C3C432CULL   /'  224 '/,    &hB923DD61102B37F2ULL   /'  225 '/, _
    &h56AB2779D884271DULL   /'  226 '/,    &hBE83E1B0FF1525AFULL   /'  227 '/, _
    &hFB7C65D4217E49A9ULL   /'  228 '/,    &h6BDBE0E76D48E7D4ULL   /'  229 '/, _
    &h08DF828745D9179EULL   /'  230 '/,    &h22EA6A9ADD53BD34ULL   /'  231 '/, _
    &hE36E141C5622200AULL   /'  232 '/,    &h7F805D1B8CB750EEULL   /'  233 '/, _
    &hAFE5C7A59F58E837ULL   /'  234 '/,    &hE27F996A4FB1C23CULL   /'  235 '/, _
    &hD3867DFB0775F0D0ULL   /'  236 '/,    &hD0E673DE6E88891AULL   /'  237 '/, _
    &h123AEB9EAFB86C25ULL   /'  238 '/,    &h30F1D5D5C145B895ULL   /'  239 '/, _
    &hBB434A2DEE7269E7ULL   /'  240 '/,    &h78CB67ECF931FA38ULL   /'  241 '/, _
    &hF33B0372323BBF9CULL   /'  242 '/,    &h52D66336FB279C74ULL   /'  243 '/, _
    &h505F33AC0AFB4EAAULL   /'  244 '/,    &hE8A5CD99A2CCE187ULL   /'  245 '/, _
    &h534974801E2D30BBULL   /'  246 '/,    &h8D2D5711D5876D90ULL   /'  247 '/, _
    &h1F1A412891BC038EULL   /'  248 '/,    &hD6E2E71D82E56648ULL   /'  249 '/, _
    &h74036C3A497732B7ULL   /'  250 '/,    &h89B67ED96361F5ABULL   /'  251 '/, _
    &hFFED95D8F1EA02A2ULL   /'  252 '/,    &hE72B3BD61464D43DULL   /'  253 '/, _
    &hA6300F170BDC4820ULL   /'  254 '/,    &hEBC18760ED78A77AULL   /'  255 '/, _
    &hE6A6BE5A05A12138ULL   /'  256 '/,    &hB5A122A5B4F87C98ULL   /'  257 '/, _
    &h563C6089140B6990ULL   /'  258 '/,    &h4C46CB2E391F5DD5ULL   /'  259 '/, _
    &hD932ADDBC9B79434ULL   /'  260 '/,    &h08EA70E42015AFF5ULL   /'  261 '/, _
    &hD765A6673E478CF1ULL   /'  262 '/,    &hC4FB757EAB278D99ULL   /'  263 '/, _
    &hDF11C6862D6E0692ULL   /'  264 '/,    &hDDEB84F10D7F3B16ULL   /'  265 '/, _
    &h6F2EF604A665EA04ULL   /'  266 '/,    &h4A8E0F0FF0E0DFB3ULL   /'  267 '/, _
    &hA5EDEEF83DBCBA51ULL   /'  268 '/,    &hFC4F0A2A0EA4371EULL   /'  269 '/, _
    &hE83E1DA85CB38429ULL   /'  270 '/,    &hDC8FF882BA1B1CE2ULL   /'  271 '/, _
    &hCD45505E8353E80DULL   /'  272 '/,    &h18D19A00D4DB0717ULL   /'  273 '/, _
    &h34A0CFEDA5F38101ULL   /'  274 '/,    &h0BE77E518887CAF2ULL   /'  275 '/, _
    &h1E341438B3C45136ULL   /'  276 '/,    &hE05797F49089CCF9ULL   /'  277 '/, _
    &hFFD23F9DF2591D14ULL   /'  278 '/,    &h543DDA228595C5CDULL   /'  279 '/, _
    &h661F81FD99052A33ULL   /'  280 '/,    &h8736E641DB0F7B76ULL   /'  281 '/, _
    &h15227725418E5307ULL   /'  282 '/,    &hE25F7F46162EB2FAULL   /'  283 '/, _
    &h48A8B2126C13D9FEULL   /'  284 '/,    &hAFDC541792E76EEAULL   /'  285 '/, _
    &h03D912BFC6D1898FULL   /'  286 '/,    &h31B1AAFA1B83F51BULL   /'  287 '/, _
    &hF1AC2796E42AB7D9ULL   /'  288 '/,    &h40A3A7D7FCD2EBACULL   /'  289 '/, _
    &h1056136D0AFBBCC5ULL   /'  290 '/,    &h7889E1DD9A6D0C85ULL   /'  291 '/, _
    &hD33525782A7974AAULL   /'  292 '/,    &hA7E25D09078AC09BULL   /'  293 '/, _
    &hBD4138B3EAC6EDD0ULL   /'  294 '/,    &h920ABFBE71EB9E70ULL   /'  295 '/, _
    &hA2A5D0F54FC2625CULL   /'  296 '/,    &hC054E36B0B1290A3ULL   /'  297 '/, _
    &hF6DD59FF62FE932BULL   /'  298 '/,    &h3537354511A8AC7DULL   /'  299 '/, _
    &hCA845E9172FADCD4ULL   /'  300 '/,    &h84F82B60329D20DCULL   /'  301 '/, _
    &h79C62CE1CD672F18ULL   /'  302 '/,    &h8B09A2ADD124642CULL   /'  303 '/, _
    &hD0C1E96A19D9E726ULL   /'  304 '/,    &h5A786A9B4BA9500CULL   /'  305 '/, _
    &h0E020336634C43F3ULL   /'  306 '/,    &hC17B474AEB66D822ULL   /'  307 '/, _
    &h6A731AE3EC9BAAC2ULL   /'  308 '/,    &h8226667AE0840258ULL   /'  309 '/, _
    &h67D4567691CAECA5ULL   /'  310 '/,    &h1D94155C4875ADB5ULL   /'  311 '/, _
    &h6D00FD985B813FDFULL   /'  312 '/,    &h51286EFCB774CD06ULL   /'  313 '/, _
    &h5E8834471FA744AFULL   /'  314 '/,    &hF72CA0AEE761AE2EULL   /'  315 '/, _
    &hBE40E4CDAEE8E09AULL   /'  316 '/,    &hE9970BBB5118F665ULL   /'  317 '/, _
    &h726E4BEB33DF1964ULL   /'  318 '/,    &h703B000729199762ULL   /'  319 '/, _
    &h4631D816F5EF30A7ULL   /'  320 '/,    &hB880B5B51504A6BEULL   /'  321 '/, _
    &h641793C37ED84B6CULL   /'  322 '/,    &h7B21ED77F6E97D96ULL   /'  323 '/, _
    &h776306312EF96B73ULL   /'  324 '/,    &hAE528948E86FF3F4ULL   /'  325 '/, _
    &h53DBD7F286A3F8F8ULL   /'  326 '/,    &h16CADCE74CFC1063ULL   /'  327 '/, _
    &h005C19BDFA52C6DDULL   /'  328 '/,    &h68868F5D64D46AD3ULL   /'  329 '/, _
    &h3A9D512CCF1E186AULL   /'  330 '/,    &h367E62C2385660AEULL   /'  331 '/, _
    &hE359E7EA77DCB1D7ULL   /'  332 '/,    &h526C0773749ABE6EULL   /'  333 '/, _
    &h735AE5F9D09F734BULL   /'  334 '/,    &h493FC7CC8A558BA8ULL   /'  335 '/, _
    &hB0B9C1533041AB45ULL   /'  336 '/,    &h321958BA470A59BDULL   /'  337 '/, _
    &h852DB00B5F46C393ULL   /'  338 '/,    &h91209B2BD336B0E5ULL   /'  339 '/, _
    &h6E604F7D659EF19FULL   /'  340 '/,    &hB99A8AE2782CCB24ULL   /'  341 '/, _
    &hCCF52AB6C814C4C7ULL   /'  342 '/,    &h4727D9AFBE11727BULL   /'  343 '/, _
    &h7E950D0C0121B34DULL   /'  344 '/,    &h756F435670AD471FULL   /'  345 '/, _
    &hF5ADD442615A6849ULL   /'  346 '/,    &h4E87E09980B9957AULL   /'  347 '/, _
    &h2ACFA1DF50AEE355ULL   /'  348 '/,    &hD898263AFD2FD556ULL   /'  349 '/, _
    &hC8F4924DD80C8FD6ULL   /'  350 '/,    &hCF99CA3D754A173AULL   /'  351 '/, _
    &hFE477BACAF91BF3CULL   /'  352 '/,    &hED5371F6D690C12DULL   /'  353 '/, _
    &h831A5C285E687094ULL   /'  354 '/,    &hC5D3C90A3708A0A4ULL   /'  355 '/, _
    &h0F7F903717D06580ULL   /'  356 '/,    &h19F9BB13B8FDF27FULL   /'  357 '/, _
    &hB1BD6F1B4D502843ULL   /'  358 '/,    &h1C761BA38FFF4012ULL   /'  359 '/, _
    &h0D1530C4E2E21F3BULL   /'  360 '/,    &h8943CE69A7372C8AULL   /'  361 '/, _
    &hE5184E11FEB5CE66ULL   /'  362 '/,    &h618BDB80BD736621ULL   /'  363 '/, _
    &h7D29BAD68B574D0BULL   /'  364 '/,    &h81BB613E25E6FE5BULL   /'  365 '/, _
    &h071C9C10BC07913FULL   /'  366 '/,    &hC7BEEB7909AC2D97ULL   /'  367 '/, _
    &hC3E58D353BC5D757ULL   /'  368 '/,    &hEB017892F38F61E8ULL   /'  369 '/, _
    &hD4EFFB9C9B1CC21AULL   /'  370 '/,    &h99727D26F494F7ABULL   /'  371 '/, _
    &hA3E063A2956B3E03ULL   /'  372 '/,    &h9D4A8B9A4AA09C30ULL   /'  373 '/, _
    &h3F6AB7D500090FB4ULL   /'  374 '/,    &h9CC0F2A057268AC0ULL   /'  375 '/, _
    &h3DEE9D2DEDBF42D1ULL   /'  376 '/,    &h330F49C87960A972ULL   /'  377 '/, _
    &hC6B2720287421B41ULL   /'  378 '/,    &h0AC59EC07C00369CULL   /'  379 '/, _
    &hEF4EAC49CB353425ULL   /'  380 '/,    &hF450244EEF0129D8ULL   /'  381 '/, _
    &h8ACC46E5CAF4DEB6ULL   /'  382 '/,    &h2FFEAB63989263F7ULL   /'  383 '/, _
    &h8F7CB9FE5D7A4578ULL   /'  384 '/,    &h5BD8F7644E634635ULL   /'  385 '/, _
    &h427A7315BF2DC900ULL   /'  386 '/,    &h17D0C4AA2125261CULL   /'  387 '/, _
    &h3992486C93518E50ULL   /'  388 '/,    &hB4CBFEE0A2D7D4C3ULL   /'  389 '/, _
    &h7C75D6202C5DDD8DULL   /'  390 '/,    &hDBC295D8E35B6C61ULL   /'  391 '/, _
    &h60B369D302032B19ULL   /'  392 '/,    &hCE42685FDCE44132ULL   /'  393 '/, _
    &h06F3DDB9DDF65610ULL   /'  394 '/,    &h8EA4D21DB5E148F0ULL   /'  395 '/, _
    &h20B0FCE62FCD496FULL   /'  396 '/,    &h2C1B912358B0EE31ULL   /'  397 '/, _
    &hB28317B818F5A308ULL   /'  398 '/,    &hA89C1E189CA6D2CFULL   /'  399 '/, _
    &h0C6B18576AAADBC8ULL   /'  400 '/,    &hB65DEAA91299FAE3ULL   /'  401 '/, _
    &hFB2B794B7F1027E7ULL   /'  402 '/,    &h04E4317F443B5BEBULL   /'  403 '/, _
    &h4B852D325939D0A6ULL   /'  404 '/,    &hD5AE6BEEFB207FFCULL   /'  405 '/, _
    &h309682B281C7D374ULL   /'  406 '/,    &hBAE309A194C3B475ULL   /'  407 '/, _
    &h8CC3F97B13B49F05ULL   /'  408 '/,    &h98A9422FF8293967ULL   /'  409 '/, _
    &h244B16B01076FF7CULL   /'  410 '/,    &hF8BF571C663D67EEULL   /'  411 '/, _
    &h1F0D6758EEE30DA1ULL   /'  412 '/,    &hC9B611D97ADEB9B7ULL   /'  413 '/, _
    &hB7AFD5887B6C57A2ULL   /'  414 '/,    &h6290AE846B984FE1ULL   /'  415 '/, _
    &h94DF4CDEACC1A5FDULL   /'  416 '/,    &h058A5BD1C5483AFFULL   /'  417 '/, _
    &h63166CC142BA3C37ULL   /'  418 '/,    &h8DB8526EB2F76F40ULL   /'  419 '/, _
    &hE10880036F0D6D4EULL   /'  420 '/,    &h9E0523C9971D311DULL   /'  421 '/, _
    &h45EC2824CC7CD691ULL   /'  422 '/,    &h575B8359E62382C9ULL   /'  423 '/, _
    &hFA9E400DC4889995ULL   /'  424 '/,    &hD1823ECB45721568ULL   /'  425 '/, _
    &hDAFD983B8206082FULL   /'  426 '/,    &hAA7D29082386A8CBULL   /'  427 '/, _
    &h269FCD4403B87588ULL   /'  428 '/,    &h1B91F5F728BDD1E0ULL   /'  429 '/, _
    &hE4669F39040201F6ULL   /'  430 '/,    &h7A1D7C218CF04ADEULL   /'  431 '/, _
    &h65623C29D79CE5CEULL   /'  432 '/,    &h2368449096C00BB1ULL   /'  433 '/, _
    &hAB9BF1879DA503BAULL   /'  434 '/,    &hBC23ECB1A458058EULL   /'  435 '/, _
    &h9A58DF01BB401ECCULL   /'  436 '/,    &hA070E868A85F143DULL   /'  437 '/, _
    &h4FF188307DF2239EULL   /'  438 '/,    &h14D565B41A641183ULL   /'  439 '/, _
    &hEE13337452701602ULL   /'  440 '/,    &h950E3DCF3F285E09ULL   /'  441 '/, _
    &h59930254B9C80953ULL   /'  442 '/,    &h3BF299408930DA6DULL   /'  443 '/, _
    &hA955943F53691387ULL   /'  444 '/,    &hA15EDECAA9CB8784ULL   /'  445 '/, _
    &h29142127352BE9A0ULL   /'  446 '/,    &h76F0371FFF4E7AFBULL   /'  447 '/, _
    &h0239F450274F2228ULL   /'  448 '/,    &hBB073AF01D5E868BULL   /'  449 '/, _
    &hBFC80571C10E96C1ULL   /'  450 '/,    &hD267088568222E23ULL   /'  451 '/, _
    &h9671A3D48E80B5B0ULL   /'  452 '/,    &h55B5D38AE193BB81ULL   /'  453 '/, _
    &h693AE2D0A18B04B8ULL   /'  454 '/,    &h5C48B4ECADD5335FULL   /'  455 '/, _
    &hFD743B194916A1CAULL   /'  456 '/,    &h2577018134BE98C4ULL   /'  457 '/, _
    &hE77987E83C54A4ADULL   /'  458 '/,    &h28E11014DA33E1B9ULL   /'  459 '/, _
    &h270CC59E226AA213ULL   /'  460 '/,    &h71495F756D1A5F60ULL   /'  461 '/, _
    &h9BE853FB60AFEF77ULL   /'  462 '/,    &hADC786A7F7443DBFULL   /'  463 '/, _
    &h0904456173B29A82ULL   /'  464 '/,    &h58BC7A66C232BD5EULL   /'  465 '/, _
    &hF306558C673AC8B2ULL   /'  466 '/,    &h41F639C6B6C9772AULL   /'  467 '/, _
    &h216DEFE99FDA35DAULL   /'  468 '/,    &h11640CC71C7BE615ULL   /'  469 '/, _
    &h93C43694565C5527ULL   /'  470 '/,    &hEA038E6246777839ULL   /'  471 '/, _
    &hF9ABF3CE5A3E2469ULL   /'  472 '/,    &h741E768D0FD312D2ULL   /'  473 '/, _
    &h0144B883CED652C6ULL   /'  474 '/,    &hC20B5A5BA33F8552ULL   /'  475 '/, _
    &h1AE69633C3435A9DULL   /'  476 '/,    &h97A28CA4088CFDECULL   /'  477 '/, _
    &h8824A43C1E96F420ULL   /'  478 '/,    &h37612FA66EEEA746ULL   /'  479 '/, _
    &h6B4CB165F9CF0E5AULL   /'  480 '/,    &h43AA1C06A0ABFB4AULL   /'  481 '/, _
    &h7F4DC26FF162796BULL   /'  482 '/,    &h6CBACC8E54ED9B0FULL   /'  483 '/, _
    &hA6B7FFEFD2BB253EULL   /'  484 '/,    &h2E25BC95B0A29D4FULL   /'  485 '/, _
    &h86D6A58BDEF1388CULL   /'  486 '/,    &hDED74AC576B6F054ULL   /'  487 '/, _
    &h8030BDBC2B45805DULL   /'  488 '/,    &h3C81AF70E94D9289ULL   /'  489 '/, _
    &h3EFF6DDA9E3100DBULL   /'  490 '/,    &hB38DC39FDFCC8847ULL   /'  491 '/, _
    &h123885528D17B87EULL   /'  492 '/,    &hF2DA0ED240B1B642ULL   /'  493 '/, _
    &h44CEFADCD54BF9A9ULL   /'  494 '/,    &h1312200E433C7EE6ULL   /'  495 '/, _
    &h9FFCC84F3A78C748ULL   /'  496 '/,    &hF0CD1F72248576BBULL   /'  497 '/, _
    &hEC6974053638CFE4ULL   /'  498 '/,    &h2BA7B67C0CEC4E4CULL   /'  499 '/, _
    &hAC2F4DF3E5CE32EDULL   /'  500 '/,    &hCB33D14326EA4C11ULL   /'  501 '/, _
    &hA4E9044CC77E58BCULL   /'  502 '/,    &h5F513293D934FCEFULL   /'  503 '/, _
    &h5DC9645506E55444ULL   /'  504 '/,    &h50DE418F317DE40AULL   /'  505 '/, _
    &h388CB31A69DDE259ULL   /'  506 '/,    &h2DB4A83455820A86ULL   /'  507 '/, _
    &h9010A91E84711AE9ULL   /'  508 '/,    &h4DF7F0B7B1498371ULL   /'  509 '/, _
    &hD62A2EABC0977179ULL   /'  510 '/,    &h22FAC097AA8D5C0EULL   /'  511 '/, _
    &hF49FCC2FF1DAF39BULL   /'  512 '/,    &h487FD5C66FF29281ULL   /'  513 '/, _
    &hE8A30667FCDCA83FULL   /'  514 '/,    &h2C9B4BE3D2FCCE63ULL   /'  515 '/, _
    &hDA3FF74B93FBBBC2ULL   /'  516 '/,    &h2FA165D2FE70BA66ULL   /'  517 '/, _
    &hA103E279970E93D4ULL   /'  518 '/,    &hBECDEC77B0E45E71ULL   /'  519 '/, _
    &hCFB41E723985E497ULL   /'  520 '/,    &hB70AAA025EF75017ULL   /'  521 '/, _
    &hD42309F03840B8E0ULL   /'  522 '/,    &h8EFC1AD035898579ULL   /'  523 '/, _
    &h96C6920BE2B2ABC5ULL   /'  524 '/,    &h66AF4163375A9172ULL   /'  525 '/, _
    &h2174ABDCCA7127FBULL   /'  526 '/,    &hB33CCEA64A72FF41ULL   /'  527 '/, _
    &hF04A4933083066A5ULL   /'  528 '/,    &h8D970ACDD7289AF5ULL   /'  529 '/, _
    &h8F96E8E031C8C25EULL   /'  530 '/,    &hF3FEC02276875D47ULL   /'  531 '/, _
    &hEC7BF310056190DDULL   /'  532 '/,    &hF5ADB0AEBB0F1491ULL   /'  533 '/, _
    &h9B50F8850FD58892ULL   /'  534 '/,    &h4975488358B74DE8ULL   /'  535 '/, _
    &hA3354FF691531C61ULL   /'  536 '/,    &h0702BBE481D2C6EEULL   /'  537 '/, _
    &h89FB24057DEDED98ULL   /'  538 '/,    &hAC3075138596E902ULL   /'  539 '/, _
    &h1D2D3580172772EDULL   /'  540 '/,    &hEB738FC28E6BC30DULL   /'  541 '/, _
    &h5854EF8F63044326ULL   /'  542 '/,    &h9E5C52325ADD3BBEULL   /'  543 '/, _
    &h90AA53CF325C4623ULL   /'  544 '/,    &hC1D24D51349DD067ULL   /'  545 '/, _
    &h2051CFEEA69EA624ULL   /'  546 '/,    &h13220F0A862E7E4FULL   /'  547 '/, _
    &hCE39399404E04864ULL   /'  548 '/,    &hD9C42CA47086FCB7ULL   /'  549 '/, _
    &h685AD2238A03E7CCULL   /'  550 '/,    &h066484B2AB2FF1DBULL   /'  551 '/, _
    &hFE9D5D70EFBF79ECULL   /'  552 '/,    &h5B13B9DD9C481854ULL   /'  553 '/, _
    &h15F0D475ED1509ADULL   /'  554 '/,    &h0BEBCD060EC79851ULL   /'  555 '/, _
    &hD58C6791183AB7F8ULL   /'  556 '/,    &hD1187C5052F3EEE4ULL   /'  557 '/, _
    &hC95D1192E54E82FFULL   /'  558 '/,    &h86EEA14CB9AC6CA2ULL   /'  559 '/, _
    &h3485BEB153677D5DULL   /'  560 '/,    &hDD191D781F8C492AULL   /'  561 '/, _
    &hF60866BAA784EBF9ULL   /'  562 '/,    &h518F643BA2D08C74ULL   /'  563 '/, _
    &h8852E956E1087C22ULL   /'  564 '/,    &hA768CB8DC410AE8DULL   /'  565 '/, _
    &h38047726BFEC8E1AULL   /'  566 '/,    &hA67738B4CD3B45AAULL   /'  567 '/, _
    &hAD16691CEC0DDE19ULL   /'  568 '/,    &hC6D4319380462E07ULL   /'  569 '/, _
    &hC5A5876D0BA61938ULL   /'  570 '/,    &h16B9FA1FA58FD840ULL   /'  571 '/, _
    &h188AB1173CA74F18ULL   /'  572 '/,    &hABDA2F98C99C021FULL   /'  573 '/, _
    &h3E0580AB134AE816ULL   /'  574 '/,    &h5F3B05B773645ABBULL   /'  575 '/, _
    &h2501A2BE5575F2F6ULL   /'  576 '/,    &h1B2F74004E7E8BA9ULL   /'  577 '/, _
    &h1CD7580371E8D953ULL   /'  578 '/,    &h7F6ED89562764E30ULL   /'  579 '/, _
    &hB15926FF596F003DULL   /'  580 '/,    &h9F65293DA8C5D6B9ULL   /'  581 '/, _
    &h6ECEF04DD690F84CULL   /'  582 '/,    &h4782275FFF33AF88ULL   /'  583 '/, _
    &hE41433083F820801ULL   /'  584 '/,    &hFD0DFE409A1AF9B5ULL   /'  585 '/, _
    &h4325A3342CDB396BULL   /'  586 '/,    &h8AE77E62B301B252ULL   /'  587 '/, _
    &hC36F9E9F6655615AULL   /'  588 '/,    &h85455A2D92D32C09ULL   /'  589 '/, _
    &hF2C7DEA949477485ULL   /'  590 '/,    &h63CFB4C133A39EBAULL   /'  591 '/, _
    &h83B040CC6EBC5462ULL   /'  592 '/,    &h3B9454C8FDB326B0ULL   /'  593 '/, _
    &h56F56A9E87FFD78CULL   /'  594 '/,    &h2DC2940D99F42BC6ULL   /'  595 '/, _
    &h98F7DF096B096E2DULL   /'  596 '/,    &h19A6E01E3AD852BFULL   /'  597 '/, _
    &h42A99CCBDBD4B40BULL   /'  598 '/,    &hA59998AF45E9C559ULL   /'  599 '/, _
    &h366295E807D93186ULL   /'  600 '/,    &h6B48181BFAA1F773ULL   /'  601 '/, _
    &h1FEC57E2157A0A1DULL   /'  602 '/,    &h4667446AF6201AD5ULL   /'  603 '/, _
    &hE615EBCACFB0F075ULL   /'  604 '/,    &hB8F31F4F68290778ULL   /'  605 '/, _
    &h22713ED6CE22D11EULL   /'  606 '/,    &h3057C1A72EC3C93BULL   /'  607 '/, _
    &hCB46ACC37C3F1F2FULL   /'  608 '/,    &hDBB893FD02AAF50EULL   /'  609 '/, _
    &h331FD92E600B9FCFULL   /'  610 '/,    &hA498F96148EA3AD6ULL   /'  611 '/, _
    &hA8D8426E8B6A83EAULL   /'  612 '/,    &hA089B274B7735CDCULL   /'  613 '/, _
    &h87F6B3731E524A11ULL   /'  614 '/,    &h118808E5CBC96749ULL   /'  615 '/, _
    &h9906E4C7B19BD394ULL   /'  616 '/,    &hAFED7F7E9B24A20CULL   /'  617 '/, _
    &h6509EADEEB3644A7ULL   /'  618 '/,    &h6C1EF1D3E8EF0EDEULL   /'  619 '/, _
    &hB9C97D43E9798FB4ULL   /'  620 '/,    &hA2F2D784740C28A3ULL   /'  621 '/, _
    &h7B8496476197566FULL   /'  622 '/,    &h7A5BE3E6B65F069DULL   /'  623 '/, _
    &hF96330ED78BE6F10ULL   /'  624 '/,    &hEEE60DE77A076A15ULL   /'  625 '/, _
    &h2B4BEE4AA08B9BD0ULL   /'  626 '/,    &h6A56A63EC7B8894EULL   /'  627 '/, _
    &h02121359BA34FEF4ULL   /'  628 '/,    &h4CBF99F8283703FCULL   /'  629 '/, _
    &h398071350CAF30C8ULL   /'  630 '/,    &hD0A77A89F017687AULL   /'  631 '/, _
    &hF1C1A9EB9E423569ULL   /'  632 '/,    &h8C7976282DEE8199ULL   /'  633 '/, _
    &h5D1737A5DD1F7ABDULL   /'  634 '/,    &h4F53433C09A9FA80ULL   /'  635 '/, _
    &hFA8B0C53DF7CA1D9ULL   /'  636 '/,    &h3FD9DCBC886CCB77ULL   /'  637 '/, _
    &hC040917CA91B4720ULL   /'  638 '/,    &h7DD00142F9D1DCDFULL   /'  639 '/, _
    &h8476FC1D4F387B58ULL   /'  640 '/,    &h23F8E7C5F3316503ULL   /'  641 '/, _
    &h032A2244E7E37339ULL   /'  642 '/,    &h5C87A5D750F5A74BULL   /'  643 '/, _
    &h082B4CC43698992EULL   /'  644 '/,    &hDF917BECB858F63CULL   /'  645 '/, _
    &h3270B8FC5BF86DDAULL   /'  646 '/,    &h10AE72BB29B5DD76ULL   /'  647 '/, _
    &h576AC94E7700362BULL   /'  648 '/,    &h1AD112DAC61EFB8FULL   /'  649 '/, _
    &h691BC30EC5FAA427ULL   /'  650 '/,    &hFF246311CC327143ULL   /'  651 '/, _
    &h3142368E30E53206ULL   /'  652 '/,    &h71380E31E02CA396ULL   /'  653 '/, _
    &h958D5C960AAD76F1ULL   /'  654 '/,    &hF8D6F430C16DA536ULL   /'  655 '/, _
    &hC8FFD13F1BE7E1D2ULL   /'  656 '/,    &h7578AE66004DDBE1ULL   /'  657 '/, _
    &h05833F01067BE646ULL   /'  658 '/,    &hBB34B5AD3BFE586DULL   /'  659 '/, _
    &h095F34C9A12B97F0ULL   /'  660 '/,    &h247AB64525D60CA8ULL   /'  661 '/, _
    &hDCDBC6F3017477D1ULL   /'  662 '/,    &h4A2E14D4DECAD24DULL   /'  663 '/, _
    &hBDB5E6D9BE0A1EEBULL   /'  664 '/,    &h2A7E70F7794301ABULL   /'  665 '/, _
    &hDEF42D8A270540FDULL   /'  666 '/,    &h01078EC0A34C22C1ULL   /'  667 '/, _
    &hE5DE511AF4C16387ULL   /'  668 '/,    &h7EBB3A52BD9A330AULL   /'  669 '/, _
    &h77697857AA7D6435ULL   /'  670 '/,    &h004E831603AE4C32ULL   /'  671 '/, _
    &hE7A21020AD78E312ULL   /'  672 '/,    &h9D41A70C6AB420F2ULL   /'  673 '/, _
    &h28E06C18EA1141E6ULL   /'  674 '/,    &hD2B28CBD984F6B28ULL   /'  675 '/, _
    &h26B75F6C446E9D83ULL   /'  676 '/,    &hBA47568C4D418D7FULL   /'  677 '/, _
    &hD80BADBFE6183D8EULL   /'  678 '/,    &h0E206D7F5F166044ULL   /'  679 '/, _
    &hE258A43911CBCA3EULL   /'  680 '/,    &h723A1746B21DC0BCULL   /'  681 '/, _
    &hC7CAA854F5D7CDD3ULL   /'  682 '/,    &h7CAC32883D261D9CULL   /'  683 '/, _
    &h7690C26423BA942CULL   /'  684 '/,    &h17E55524478042B8ULL   /'  685 '/, _
    &hE0BE477656A2389FULL   /'  686 '/,    &h4D289B5E67AB2DA0ULL   /'  687 '/, _
    &h44862B9C8FBBFD31ULL   /'  688 '/,    &hB47CC8049D141365ULL   /'  689 '/, _
    &h822C1B362B91C793ULL   /'  690 '/,    &h4EB14655FB13DFD8ULL   /'  691 '/, _
    &h1ECBBA0714E2A97BULL   /'  692 '/,    &h6143459D5CDE5F14ULL   /'  693 '/, _
    &h53A8FBF1D5F0AC89ULL   /'  694 '/,    &h97EA04D81C5E5B00ULL   /'  695 '/, _
    &h622181A8D4FDB3F3ULL   /'  696 '/,    &hE9BCD341572A1208ULL   /'  697 '/, _
    &h1411258643CCE58AULL   /'  698 '/,    &h9144C5FEA4C6E0A4ULL   /'  699 '/, _
    &h0D33D06565CF620FULL   /'  700 '/,    &h54A48D489F219CA1ULL   /'  701 '/, _
    &hC43E5EAC6D63C821ULL   /'  702 '/,    &hA9728B3A72770DAFULL   /'  703 '/, _
    &hD7934E7B20DF87EFULL   /'  704 '/,    &hE35503B61A3E86E5ULL   /'  705 '/, _
    &hCAE321FBC819D504ULL   /'  706 '/,    &h129A50B3AC60BFA6ULL   /'  707 '/, _
    &hCD5E68EA7E9FB6C3ULL   /'  708 '/,    &hB01C90199483B1C7ULL   /'  709 '/, _
    &h3DE93CD5C295376CULL   /'  710 '/,    &hAED52EDF2AB9AD13ULL   /'  711 '/, _
    &h2E60F512C0A07884ULL   /'  712 '/,    &hBC3D86A3E36210C9ULL   /'  713 '/, _
    &h35269D9B163951CEULL   /'  714 '/,    &h0C7D6E2AD0CDB5FAULL   /'  715 '/, _
    &h59E86297D87F5733ULL   /'  716 '/,    &h298EF221898DB0E7ULL   /'  717 '/, _
    &h55000029D1A5AA7EULL   /'  718 '/,    &h8BC08AE1B5061B45ULL   /'  719 '/, _
    &hC2C31C2B6C92703AULL   /'  720 '/,    &h94CC596BAF25EF42ULL   /'  721 '/, _
    &h0A1D73DB22540456ULL   /'  722 '/,    &h04B6A0F9D9C4179AULL   /'  723 '/, _
    &hEFFDAFA2AE3D3C60ULL   /'  724 '/,    &hF7C8075BB49496C4ULL   /'  725 '/, _
    &h9CC5C7141D1CD4E3ULL   /'  726 '/,    &h78BD1638218E5534ULL   /'  727 '/, _
    &hB2F11568F850246AULL   /'  728 '/,    &hEDFABCFA9502BC29ULL   /'  729 '/, _
    &h796CE5F2DA23051BULL   /'  730 '/,    &hAAE128B0DC93537CULL   /'  731 '/, _
    &h3A493DA0EE4B29AEULL   /'  732 '/,    &hB5DF6B2C416895D7ULL   /'  733 '/, _
    &hFCABBD25122D7F37ULL   /'  734 '/,    &h70810B58105DC4B1ULL   /'  735 '/, _
    &hE10FDD37F7882A90ULL   /'  736 '/,    &h524DCAB5518A3F5CULL   /'  737 '/, _
    &h3C9E85878451255BULL   /'  738 '/,    &h4029828119BD34E2ULL   /'  739 '/, _
    &h74A05B6F5D3CECCBULL   /'  740 '/,    &hB610021542E13ECAULL   /'  741 '/, _
    &h0FF979D12F59E2ACULL   /'  742 '/,    &h6037DA27E4F9CC50ULL   /'  743 '/, _
    &h5E92975A0DF1847DULL   /'  744 '/,    &hD66DE190D3E623FEULL   /'  745 '/, _
    &h5032D6B87B568048ULL   /'  746 '/,    &h9A36B7CE8235216EULL   /'  747 '/, _
    &h80272A7A24F64B4AULL   /'  748 '/,    &h93EFED8B8C6916F7ULL   /'  749 '/, _
    &h37DDBFF44CCE1555ULL   /'  750 '/,    &h4B95DB5D4B99BD25ULL   /'  751 '/, _
    &h92D3FDA169812FC0ULL   /'  752 '/,    &hFB1A4A9A90660BB6ULL   /'  753 '/, _
    &h730C196946A4B9B2ULL   /'  754 '/,    &h81E289AA7F49DA68ULL   /'  755 '/, _
    &h64669A0F83B1A05FULL   /'  756 '/,    &h27B3FF7D9644F48BULL   /'  757 '/, _
    &hCC6B615C8DB675B3ULL   /'  758 '/,    &h674F20B9BCEBBE95ULL   /'  759 '/, _
    &h6F31238275655982ULL   /'  760 '/,    &h5AE488713E45CF05ULL   /'  761 '/, _
    &hBF619F9954C21157ULL   /'  762 '/,    &hEABAC46040A8EAE9ULL   /'  763 '/, _
    &h454C6FE9F2C0C1CDULL   /'  764 '/,    &h419CF6496412691CULL   /'  765 '/, _
    &hD3DC3BEF265B0F70ULL   /'  766 '/,    &h6D0E60F5C3578A9EULL   /'  767 '/, _
    &h5B0E608526323C55ULL   /'  768 '/,    &h1A46C1A9FA1B59F5ULL   /'  769 '/, _
    &hA9E245A17C4C8FFAULL   /'  770 '/,    &h65CA5159DB2955D7ULL   /'  771 '/, _
    &h05DB0A76CE35AFC2ULL   /'  772 '/,    &h81EAC77EA9113D45ULL   /'  773 '/, _
    &h528EF88AB6AC0A0DULL   /'  774 '/,    &hA09EA253597BE3FFULL   /'  775 '/, _
    &h430DDFB3AC48CD56ULL   /'  776 '/,    &hC4B3A67AF45CE46FULL   /'  777 '/, _
    &h4ECECFD8FBE2D05EULL   /'  778 '/,    &h3EF56F10B39935F0ULL   /'  779 '/, _
    &h0B22D6829CD619C6ULL   /'  780 '/,    &h17FD460A74DF2069ULL   /'  781 '/, _
    &h6CF8CC8E8510ED40ULL   /'  782 '/,    &hD6C824BF3A6ECAA7ULL   /'  783 '/, _
    &h61243D581A817049ULL   /'  784 '/,    &h048BACB6BBC163A2ULL   /'  785 '/, _
    &hD9A38AC27D44CC32ULL   /'  786 '/,    &h7FDDFF5BAAF410ABULL   /'  787 '/, _
    &hAD6D495AA804824BULL   /'  788 '/,    &hE1A6A74F2D8C9F94ULL   /'  789 '/, _
    &hD4F7851235DEE8E3ULL   /'  790 '/,    &hFD4B7F886540D893ULL   /'  791 '/, _
    &h247C20042AA4BFDAULL   /'  792 '/,    &h096EA1C517D1327CULL   /'  793 '/, _
    &hD56966B4361A6685ULL   /'  794 '/,    &h277DA5C31221057DULL   /'  795 '/, _
    &h94D59893A43ACFF7ULL   /'  796 '/,    &h64F0C51CCDC02281ULL   /'  797 '/, _
    &h3D33BCC4FF6189DBULL   /'  798 '/,    &hE005CB184CE66AF1ULL   /'  799 '/, _
    &hFF5CCD1D1DB99BEAULL   /'  800 '/,    &hB0B854A7FE42980FULL   /'  801 '/, _
    &h7BD46A6A718D4B9FULL   /'  802 '/,    &hD10FA8CC22A5FD8CULL   /'  803 '/, _
    &hD31484952BE4BD31ULL   /'  804 '/,    &hC7FA975FCB243847ULL   /'  805 '/, _
    &h4886ED1E5846C407ULL   /'  806 '/,    &h28CDDB791EB70B04ULL   /'  807 '/, _
    &hC2B00BE2F573417FULL   /'  808 '/,    &h5C9590452180F877ULL   /'  809 '/, _
    &h7A6BDDFFF370EB00ULL   /'  810 '/,    &hCE509E38D6D9D6A4ULL   /'  811 '/, _
    &hEBEB0F00647FA702ULL   /'  812 '/,    &h1DCC06CF76606F06ULL   /'  813 '/, _
    &hE4D9F28BA286FF0AULL   /'  814 '/,    &hD85A305DC918C262ULL   /'  815 '/, _
    &h475B1D8732225F54ULL   /'  816 '/,    &h2D4FB51668CCB5FEULL   /'  817 '/, _
    &hA679B9D9D72BBA20ULL   /'  818 '/,    &h53841C0D912D43A5ULL   /'  819 '/, _
    &h3B7EAA48BF12A4E8ULL   /'  820 '/,    &h781E0E47F22F1DDFULL   /'  821 '/, _
    &hEFF20CE60AB50973ULL   /'  822 '/,    &h20D261D19DFFB742ULL   /'  823 '/, _
    &h16A12B03062A2E39ULL   /'  824 '/,    &h1960EB2239650495ULL   /'  825 '/, _
    &h251C16FED50EB8B8ULL   /'  826 '/,    &h9AC0C330F826016EULL   /'  827 '/, _
    &hED152665953E7671ULL   /'  828 '/,    &h02D63194A6369570ULL   /'  829 '/, _
    &h5074F08394B1C987ULL   /'  830 '/,    &h70BA598C90B25CE1ULL   /'  831 '/, _
    &h794A15810B9742F6ULL   /'  832 '/,    &h0D5925E9FCAF8C6CULL   /'  833 '/, _
    &h3067716CD868744EULL   /'  834 '/,    &h910AB077E8D7731BULL   /'  835 '/, _
    &h6A61BBDB5AC42F61ULL   /'  836 '/,    &h93513EFBF0851567ULL   /'  837 '/, _
    &hF494724B9E83E9D5ULL   /'  838 '/,    &hE887E1985C09648DULL   /'  839 '/, _
    &h34B1D3C675370CFDULL   /'  840 '/,    &hDC35E433BC0D255DULL   /'  841 '/, _
    &hD0AAB84234131BE0ULL   /'  842 '/,    &h08042A50B48B7EAFULL   /'  843 '/, _
    &h9997C4EE44A3AB35ULL   /'  844 '/,    &h829A7B49201799D0ULL   /'  845 '/, _
    &h263B8307B7C54441ULL   /'  846 '/,    &h752F95F4FD6A6CA6ULL   /'  847 '/, _
    &h927217402C08C6E5ULL   /'  848 '/,    &h2A8AB754A795D9EEULL   /'  849 '/, _
    &hA442F7552F72943DULL   /'  850 '/,    &h2C31334E19781208ULL   /'  851 '/, _
    &h4FA98D7CEAEE6291ULL   /'  852 '/,    &h55C3862F665DB309ULL   /'  853 '/, _
    &hBD0610175D53B1F3ULL   /'  854 '/,    &h46FE6CB840413F27ULL   /'  855 '/, _
    &h3FE03792DF0CFA59ULL   /'  856 '/,    &hCFE700372EB85E8FULL   /'  857 '/, _
    &hA7BE29E7ADBCE118ULL   /'  858 '/,    &hE544EE5CDE8431DDULL   /'  859 '/, _
    &h8A781B1B41F1873EULL   /'  860 '/,    &hA5C94C78A0D2F0E7ULL   /'  861 '/, _
    &h39412E2877B60728ULL   /'  862 '/,    &hA1265EF3AFC9A62CULL   /'  863 '/, _
    &hBCC2770C6A2506C5ULL   /'  864 '/,    &h3AB66DD5DCE1CE12ULL   /'  865 '/, _
    &hE65499D04A675B37ULL   /'  866 '/,    &h7D8F523481BFD216ULL   /'  867 '/, _
    &h0F6F64FCEC15F389ULL   /'  868 '/,    &h74EFBE618B5B13C8ULL   /'  869 '/, _
    &hACDC82B714273E1DULL   /'  870 '/,    &hDD40BFE003199D17ULL   /'  871 '/, _
    &h37E99257E7E061F8ULL   /'  872 '/,    &hFA52626904775AAAULL   /'  873 '/, _
    &h8BBBF63A463D56F9ULL   /'  874 '/,    &hF0013F1543A26E64ULL   /'  875 '/, _
    &hA8307E9F879EC898ULL   /'  876 '/,    &hCC4C27A4150177CCULL   /'  877 '/, _
    &h1B432F2CCA1D3348ULL   /'  878 '/,    &hDE1D1F8F9F6FA013ULL   /'  879 '/, _
    &h606602A047A7DDD6ULL   /'  880 '/,    &hD237AB64CC1CB2C7ULL   /'  881 '/, _
    &h9B938E7225FCD1D3ULL   /'  882 '/,    &hEC4E03708E0FF476ULL   /'  883 '/, _
    &hFEB2FBDA3D03C12DULL   /'  884 '/,    &hAE0BCED2EE43889AULL   /'  885 '/, _
    &h22CB8923EBFB4F43ULL   /'  886 '/,    &h69360D013CF7396DULL   /'  887 '/, _
    &h855E3602D2D4E022ULL   /'  888 '/,    &h073805BAD01F784CULL   /'  889 '/, _
    &h33E17A133852F546ULL   /'  890 '/,    &hDF4874058AC7B638ULL   /'  891 '/, _
    &hBA92B29C678AA14AULL   /'  892 '/,    &h0CE89FC76CFAADCDULL   /'  893 '/, _
    &h5F9D4E0908339E34ULL   /'  894 '/,    &hF1AFE9291F5923B9ULL   /'  895 '/, _
    &h6E3480F60F4A265FULL   /'  896 '/,    &hEEBF3A2AB29B841CULL   /'  897 '/, _
    &hE21938A88F91B4ADULL   /'  898 '/,    &h57DFEFF845C6D3C3ULL   /'  899 '/, _
    &h2F006B0BF62CAAF2ULL   /'  900 '/,    &h62F479EF6F75EE78ULL   /'  901 '/, _
    &h11A55AD41C8916A9ULL   /'  902 '/,    &hF229D29084FED453ULL   /'  903 '/, _
    &h42F1C27B16B000E6ULL   /'  904 '/,    &h2B1F76749823C074ULL   /'  905 '/, _
    &h4B76ECA3C2745360ULL   /'  906 '/,    &h8C98F463B91691BDULL   /'  907 '/, _
    &h14BCC93CF1ADE66AULL   /'  908 '/,    &h8885213E6D458397ULL   /'  909 '/, _
    &h8E177DF0274D4711ULL   /'  910 '/,    &hB49B73B5503F2951ULL   /'  911 '/, _
    &h10168168C3F96B6BULL   /'  912 '/,    &h0E3D963B63CAB0AEULL   /'  913 '/, _
    &h8DFC4B5655A1DB14ULL   /'  914 '/,    &hF789F1356E14DE5CULL   /'  915 '/, _
    &h683E68AF4E51DAC1ULL   /'  916 '/,    &hC9A84F9D8D4B0FD9ULL   /'  917 '/, _
    &h3691E03F52A0F9D1ULL   /'  918 '/,    &h5ED86E46E1878E80ULL   /'  919 '/, _
    &h3C711A0E99D07150ULL   /'  920 '/,    &h5A0865B20C4E9310ULL   /'  921 '/, _
    &h56FBFC1FE4F0682EULL   /'  922 '/,    &hEA8D5DE3105EDF9BULL   /'  923 '/, _
    &h71ABFDB12379187AULL   /'  924 '/,    &h2EB99DE1BEE77B9CULL   /'  925 '/, _
    &h21ECC0EA33CF4523ULL   /'  926 '/,    &h59A4D7521805C7A1ULL   /'  927 '/, _
    &h3896F5EB56AE7C72ULL   /'  928 '/,    &hAA638F3DB18F75DCULL   /'  929 '/, _
    &h9F39358DABE9808EULL   /'  930 '/,    &hB7DEFA91C00B72ACULL   /'  931 '/, _
    &h6B5541FD62492D92ULL   /'  932 '/,    &h6DC6DEE8F92E4D5BULL   /'  933 '/, _
    &h353F57ABC4BEEA7EULL   /'  934 '/,    &h735769D6DA5690CEULL   /'  935 '/, _
    &h0A234AA642391484ULL   /'  936 '/,    &hF6F9508028F80D9DULL   /'  937 '/, _
    &hB8E319A27AB3F215ULL   /'  938 '/,    &h31AD9C1151341A4DULL   /'  939 '/, _
    &h773C22A57BEF5805ULL   /'  940 '/,    &h45C7561A07968633ULL   /'  941 '/, _
    &hF913DA9E249DBE36ULL   /'  942 '/,    &hDA652D9B78A64C68ULL   /'  943 '/, _
    &h4C27A97F3BC334EFULL   /'  944 '/,    &h76621220E66B17F4ULL   /'  945 '/, _
    &h967743899ACD7D0BULL   /'  946 '/,    &hF3EE5BCAE0ED6782ULL   /'  947 '/, _
    &h409F753600C879FCULL   /'  948 '/,    &h06D09A39B5926DB6ULL   /'  949 '/, _
    &h6F83AEB0317AC588ULL   /'  950 '/,    &h01E6CA4A86381F21ULL   /'  951 '/, _
    &h66FF3462D19F3025ULL   /'  952 '/,    &h72207C24DDFD3BFBULL   /'  953 '/, _
    &h4AF6B6D3E2ECE2EBULL   /'  954 '/,    &h9C994DBEC7EA08DEULL   /'  955 '/, _
    &h49ACE597B09A8BC4ULL   /'  956 '/,    &hB38C4766CF0797BAULL   /'  957 '/, _
    &h131B9373C57C2A75ULL   /'  958 '/,    &hB1822CCE61931E58ULL   /'  959 '/, _
    &h9D7555B909BA1C0CULL   /'  960 '/,    &h127FAFDD937D11D2ULL   /'  961 '/, _
    &h29DA3BADC66D92E4ULL   /'  962 '/,    &hA2C1D57154C2ECBCULL   /'  963 '/, _
    &h58C5134D82F6FE24ULL   /'  964 '/,    &h1C3AE3515B62274FULL   /'  965 '/, _
    &hE907C82E01CB8126ULL   /'  966 '/,    &hF8ED091913E37FCBULL   /'  967 '/, _
    &h3249D8F9C80046C9ULL   /'  968 '/,    &h80CF9BEDE388FB63ULL   /'  969 '/, _
    &h1881539A116CF19EULL   /'  970 '/,    &h5103F3F76BD52457ULL   /'  971 '/, _
    &h15B7E6F5AE47F7A8ULL   /'  972 '/,    &hDBD7C6DED47E9CCFULL   /'  973 '/, _
    &h44E55C410228BB1AULL   /'  974 '/,    &hB647D4255EDB4E99ULL   /'  975 '/, _
    &h5D11882BB8AAFC30ULL   /'  976 '/,    &hF5098BBB29D3212AULL   /'  977 '/, _
    &h8FB5EA14E90296B3ULL   /'  978 '/,    &h677B942157DD025AULL   /'  979 '/, _
    &hFB58E7C0A390ACB5ULL   /'  980 '/,    &h89D3674C83BD4A01ULL   /'  981 '/, _
    &h9E2DA4DF4BF3B93BULL   /'  982 '/,    &hFCC41E328CAB4829ULL   /'  983 '/, _
    &h03F38C96BA582C52ULL   /'  984 '/,    &hCAD1BDBD7FD85DB2ULL   /'  985 '/, _
    &hBBB442C16082AE83ULL   /'  986 '/,    &hB95FE86BA5DA9AB0ULL   /'  987 '/, _
    &hB22E04673771A93FULL   /'  988 '/,    &h845358C9493152D8ULL   /'  989 '/, _
    &hBE2A488697B4541EULL   /'  990 '/,    &h95A2DC2DD38E6966ULL   /'  991 '/, _
    &hC02C11AC923C852BULL   /'  992 '/,    &h2388B1990DF2A87BULL   /'  993 '/, _
    &h7C8008FA1B4F37BEULL   /'  994 '/,    &h1F70D0C84D54E503ULL   /'  995 '/, _
    &h5490ADEC7ECE57D4ULL   /'  996 '/,    &h002B3C27D9063A3AULL   /'  997 '/, _
    &h7EAEA3848030A2BFULL   /'  998 '/,    &hC602326DED2003C0ULL   /'  999 '/, _
    &h83A7287D69A94086ULL   /' 1000 '/,    &hC57A5FCB30F57A8AULL   /' 1001 '/, _
    &hB56844E479EBE779ULL   /' 1002 '/,    &hA373B40F05DCBCE9ULL   /' 1003 '/, _
    &hD71A786E88570EE2ULL   /' 1004 '/,    &h879CBACDBDE8F6A0ULL   /' 1005 '/, _
    &h976AD1BCC164A32FULL   /' 1006 '/,    &hAB21E25E9666D78BULL   /' 1007 '/, _
    &h901063AAE5E5C33CULL   /' 1008 '/,    &h9818B34448698D90ULL   /' 1009 '/, _
    &hE36487AE3E1E8ABBULL   /' 1010 '/,    &hAFBDF931893BDCB4ULL   /' 1011 '/, _
    &h6345A0DC5FBBD519ULL   /' 1012 '/,    &h8628FE269B9465CAULL   /' 1013 '/, _
    &h1E5D01603F9C51ECULL   /' 1014 '/,    &h4DE44006A15049B7ULL   /' 1015 '/, _
    &hBF6C70E5F776CBB1ULL   /' 1016 '/,    &h411218F2EF552BEDULL   /' 1017 '/, _
    &hCB0C0708705A36A3ULL   /' 1018 '/,    &hE74D14754F986044ULL   /' 1019 '/, _
    &hCD56D9430EA8280EULL   /' 1020 '/,    &hC12591D7535F5065ULL   /' 1021 '/, _
    &hC83223F1720AEF96ULL   /' 1022 '/,    &hC3A0396F7363A51FULL   /' 1023 '/}
thanks to yetifoot, I finally got all the quirks out

edit: added link to wikipedia article
Last edited by Mindless on Sep 15, 2007 22:41, edited 3 times in total.
Merick
Posts: 1038
Joined: May 28, 2007 1:52

Post by Merick »

I get this error: Invalid data types, found '=' in 't1 = Timer'

If I comment out the dim statment for t1 and t2, and try to use var t1 = timer, then I get this error:

Expected identifier, found 'cast' in 'var t1 = Timer'
Mindless
Posts: 110
Joined: Jun 25, 2005 14:50
Location: USA

Post by Mindless »

strange... it compiles fine in my SVN build, you can probably cut all the timer code out to make it work, it's not especially important
Lachie Dazdarian
Posts: 2338
Joined: May 31, 2005 9:59
Location: Croatia
Contact:

Post by Lachie Dazdarian »

In cryptography, a cryptographic hash function is a hash function with certain additional security properties to make it suitable for use as a primitive in various information security applications, such as authentication and message integrity. A hash function takes a long string (or 'message') of any length as input and produces a fixed length string as output, sometimes termed a message digest or a digital fingerprint.
Just thought this information (or any for that matter) in the first post was missing.
denise_amiga
Posts: 18
Joined: Jan 18, 2007 9:55

Post by denise_amiga »

@Merick

you must compile modularly
fbc tigertest.bas tiger.bas sboxes.bas
if you have pasted everything in a file you must change some things...

in tiger.bas:

Code: Select all

...
#define t1 cast(Ulongint Ptr, @table(0))
#define t2 cast(Ulongint Ptr, @table(256))
...
and in tigertest.bas:

Code: Select all

...
Dim As Long t1, t2
...
there is this your problem
Merick
Posts: 1038
Joined: May 28, 2007 1:52

Post by Merick »

Thanks for the info, I don't really have a need for this in any of my projects right now, but it's good to know that it does work
DrV
Site Admin
Posts: 2116
Joined: May 27, 2005 18:39
Location: Midwestern USA
Contact:

Post by DrV »

Very cool - should be relatively simple to do TTH now, could be quite handy...
denise_amiga
Posts: 18
Joined: Jan 18, 2007 9:55

Post by denise_amiga »

results must to be in "Little Endian"

your program give
Hash of "":
24F0130C63AC9332 16166E76B1BB925F F373DE2D49584E7A
and correct it's:
Hash of "":
3293AC630C13F024 5F92BBB1766E1616 7A4E58492DDE73F3
Post Reply