polodb_core 0.2.0

PoloDB is a embedded JSON-based database
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
use std::mem;

pub static CRC64_TAB : &'static [&'static [u64; 256]; 8] = &[
    &[ 0x0000000000000000, 0x7ad870c830358979,
        0xf5b0e190606b12f2, 0x8f689158505e9b8b,
        0xc038e5739841b68f, 0xbae095bba8743ff6,
        0x358804e3f82aa47d, 0x4f50742bc81f2d04,
        0xab28ecb46814fe75, 0xd1f09c7c5821770c,
        0x5e980d24087fec87, 0x24407dec384a65fe,
        0x6b1009c7f05548fa, 0x11c8790fc060c183,
        0x9ea0e857903e5a08, 0xe478989fa00bd371,
        0x7d08ff3b88be6f81, 0x07d08ff3b88be6f8,
        0x88b81eabe8d57d73, 0xf2606e63d8e0f40a,
        0xbd301a4810ffd90e, 0xc7e86a8020ca5077,
        0x4880fbd87094cbfc, 0x32588b1040a14285,
        0xd620138fe0aa91f4, 0xacf86347d09f188d,
        0x2390f21f80c18306, 0x594882d7b0f40a7f,
        0x1618f6fc78eb277b, 0x6cc0863448deae02,
        0xe3a8176c18803589, 0x997067a428b5bcf0,
        0xfa11fe77117cdf02, 0x80c98ebf2149567b,
        0x0fa11fe77117cdf0, 0x75796f2f41224489,
        0x3a291b04893d698d, 0x40f16bccb908e0f4,
        0xcf99fa94e9567b7f, 0xb5418a5cd963f206,
        0x513912c379682177, 0x2be1620b495da80e,
        0xa489f35319033385, 0xde51839b2936bafc,
        0x9101f7b0e12997f8, 0xebd98778d11c1e81,
        0x64b116208142850a, 0x1e6966e8b1770c73,
        0x8719014c99c2b083, 0xfdc17184a9f739fa,
        0x72a9e0dcf9a9a271, 0x08719014c99c2b08,
        0x4721e43f0183060c, 0x3df994f731b68f75,
        0xb29105af61e814fe, 0xc849756751dd9d87,
        0x2c31edf8f1d64ef6, 0x56e99d30c1e3c78f,
        0xd9810c6891bd5c04, 0xa3597ca0a188d57d,
        0xec09088b6997f879, 0x96d1784359a27100,
        0x19b9e91b09fcea8b, 0x636199d339c963f2,
        0xdf7adabd7a6e2d6f, 0xa5a2aa754a5ba416,
        0x2aca3b2d1a053f9d, 0x50124be52a30b6e4,
        0x1f423fcee22f9be0, 0x659a4f06d21a1299,
        0xeaf2de5e82448912, 0x902aae96b271006b,
        0x74523609127ad31a, 0x0e8a46c1224f5a63,
        0x81e2d7997211c1e8, 0xfb3aa75142244891,
        0xb46ad37a8a3b6595, 0xceb2a3b2ba0eecec,
        0x41da32eaea507767, 0x3b024222da65fe1e,
        0xa2722586f2d042ee, 0xd8aa554ec2e5cb97,
        0x57c2c41692bb501c, 0x2d1ab4dea28ed965,
        0x624ac0f56a91f461, 0x1892b03d5aa47d18,
        0x97fa21650afae693, 0xed2251ad3acf6fea,
        0x095ac9329ac4bc9b, 0x7382b9faaaf135e2,
        0xfcea28a2faafae69, 0x8632586aca9a2710,
        0xc9622c4102850a14, 0xb3ba5c8932b0836d,
        0x3cd2cdd162ee18e6, 0x460abd1952db919f,
        0x256b24ca6b12f26d, 0x5fb354025b277b14,
        0xd0dbc55a0b79e09f, 0xaa03b5923b4c69e6,
        0xe553c1b9f35344e2, 0x9f8bb171c366cd9b,
        0x10e3202993385610, 0x6a3b50e1a30ddf69,
        0x8e43c87e03060c18, 0xf49bb8b633338561,
        0x7bf329ee636d1eea, 0x012b592653589793,
        0x4e7b2d0d9b47ba97, 0x34a35dc5ab7233ee,
        0xbbcbcc9dfb2ca865, 0xc113bc55cb19211c,
        0x5863dbf1e3ac9dec, 0x22bbab39d3991495,
        0xadd33a6183c78f1e, 0xd70b4aa9b3f20667,
        0x985b3e827bed2b63, 0xe2834e4a4bd8a21a,
        0x6debdf121b863991, 0x1733afda2bb3b0e8,
        0xf34b37458bb86399, 0x8993478dbb8deae0,
        0x06fbd6d5ebd3716b, 0x7c23a61ddbe6f812,
        0x3373d23613f9d516, 0x49aba2fe23cc5c6f,
        0xc6c333a67392c7e4, 0xbc1b436e43a74e9d,
        0x95ac9329ac4bc9b5, 0xef74e3e19c7e40cc,
        0x601c72b9cc20db47, 0x1ac40271fc15523e,
        0x5594765a340a7f3a, 0x2f4c0692043ff643,
        0xa02497ca54616dc8, 0xdafce7026454e4b1,
        0x3e847f9dc45f37c0, 0x445c0f55f46abeb9,
        0xcb349e0da4342532, 0xb1eceec59401ac4b,
        0xfebc9aee5c1e814f, 0x8464ea266c2b0836,
        0x0b0c7b7e3c7593bd, 0x71d40bb60c401ac4,
        0xe8a46c1224f5a634, 0x927c1cda14c02f4d,
        0x1d148d82449eb4c6, 0x67ccfd4a74ab3dbf,
        0x289c8961bcb410bb, 0x5244f9a98c8199c2,
        0xdd2c68f1dcdf0249, 0xa7f41839ecea8b30,
        0x438c80a64ce15841, 0x3954f06e7cd4d138,
        0xb63c61362c8a4ab3, 0xcce411fe1cbfc3ca,
        0x83b465d5d4a0eece, 0xf96c151de49567b7,
        0x76048445b4cbfc3c, 0x0cdcf48d84fe7545,
        0x6fbd6d5ebd3716b7, 0x15651d968d029fce,
        0x9a0d8ccedd5c0445, 0xe0d5fc06ed698d3c,
        0xaf85882d2576a038, 0xd55df8e515432941,
        0x5a3569bd451db2ca, 0x20ed197575283bb3,
        0xc49581ead523e8c2, 0xbe4df122e51661bb,
        0x3125607ab548fa30, 0x4bfd10b2857d7349,
        0x04ad64994d625e4d, 0x7e7514517d57d734,
        0xf11d85092d094cbf, 0x8bc5f5c11d3cc5c6,
        0x12b5926535897936, 0x686de2ad05bcf04f,
        0xe70573f555e26bc4, 0x9ddd033d65d7e2bd,
        0xd28d7716adc8cfb9, 0xa85507de9dfd46c0,
        0x273d9686cda3dd4b, 0x5de5e64efd965432,
        0xb99d7ed15d9d8743, 0xc3450e196da80e3a,
        0x4c2d9f413df695b1, 0x36f5ef890dc31cc8,
        0x79a59ba2c5dc31cc, 0x037deb6af5e9b8b5,
        0x8c157a32a5b7233e, 0xf6cd0afa9582aa47,
        0x4ad64994d625e4da, 0x300e395ce6106da3,
        0xbf66a804b64ef628, 0xc5bed8cc867b7f51,
        0x8aeeace74e645255, 0xf036dc2f7e51db2c,
        0x7f5e4d772e0f40a7, 0x05863dbf1e3ac9de,
        0xe1fea520be311aaf, 0x9b26d5e88e0493d6,
        0x144e44b0de5a085d, 0x6e963478ee6f8124,
        0x21c640532670ac20, 0x5b1e309b16452559,
        0xd476a1c3461bbed2, 0xaeaed10b762e37ab,
        0x37deb6af5e9b8b5b, 0x4d06c6676eae0222,
        0xc26e573f3ef099a9, 0xb8b627f70ec510d0,
        0xf7e653dcc6da3dd4, 0x8d3e2314f6efb4ad,
        0x0256b24ca6b12f26, 0x788ec2849684a65f,
        0x9cf65a1b368f752e, 0xe62e2ad306bafc57,
        0x6946bb8b56e467dc, 0x139ecb4366d1eea5,
        0x5ccebf68aecec3a1, 0x2616cfa09efb4ad8,
        0xa97e5ef8cea5d153, 0xd3a62e30fe90582a,
        0xb0c7b7e3c7593bd8, 0xca1fc72bf76cb2a1,
        0x45775673a732292a, 0x3faf26bb9707a053,
        0x70ff52905f188d57, 0x0a2722586f2d042e,
        0x854fb3003f739fa5, 0xff97c3c80f4616dc,
        0x1bef5b57af4dc5ad, 0x61372b9f9f784cd4,
        0xee5fbac7cf26d75f, 0x9487ca0fff135e26,
        0xdbd7be24370c7322, 0xa10fceec0739fa5b,
        0x2e675fb4576761d0, 0x54bf2f7c6752e8a9,
        0xcdcf48d84fe75459, 0xb71738107fd2dd20,
        0x387fa9482f8c46ab, 0x42a7d9801fb9cfd2,
        0x0df7adabd7a6e2d6, 0x772fdd63e7936baf,
        0xf8474c3bb7cdf024, 0x829f3cf387f8795d,
        0x66e7a46c27f3aa2c, 0x1c3fd4a417c62355,
        0x935745fc4798b8de, 0xe98f353477ad31a7,
        0xa6df411fbfb21ca3, 0xdc0731d78f8795da,
        0x536fa08fdfd90e51, 0x29b7d047efec8728 ],

    &[ 0x0000000000000000, 0x89e99ffd73bddf69,
        0x388a19a9bfec2db9, 0xb1638654cc51f2d0,
        0x711433537fd85b72, 0xf8fdacae0c65841b,
        0x499e2afac03476cb, 0xc077b507b389a9a2,
        0xe22866a6ffb0b6e4, 0x6bc1f95b8c0d698d,
        0xdaa27f0f405c9b5d, 0x534be0f233e14434,
        0x933c55f58068ed96, 0x1ad5ca08f3d532ff,
        0xabb64c5c3f84c02f, 0x225fd3a14c391f46,
        0xef09eb1ea7f6fea3, 0x66e074e3d44b21ca,
        0xd783f2b7181ad31a, 0x5e6a6d4a6ba70c73,
        0x9e1dd84dd82ea5d1, 0x17f447b0ab937ab8,
        0xa697c1e467c28868, 0x2f7e5e19147f5701,
        0x0d218db858464847, 0x84c812452bfb972e,
        0x35ab9411e7aa65fe, 0xbc420bec9417ba97,
        0x7c35beeb279e1335, 0xf5dc21165423cc5c,
        0x44bfa74298723e8c, 0xcd5638bfebcfe1e5,
        0xf54af06e177a6e2d, 0x7ca36f9364c7b144,
        0xcdc0e9c7a8964394, 0x4429763adb2b9cfd,
        0x845ec33d68a2355f, 0x0db75cc01b1fea36,
        0xbcd4da94d74e18e6, 0x353d4569a4f3c78f,
        0x176296c8e8cad8c9, 0x9e8b09359b7707a0,
        0x2fe88f615726f570, 0xa601109c249b2a19,
        0x6676a59b971283bb, 0xef9f3a66e4af5cd2,
        0x5efcbc3228feae02, 0xd71523cf5b43716b,
        0x1a431b70b08c908e, 0x93aa848dc3314fe7,
        0x22c902d90f60bd37, 0xab209d247cdd625e,
        0x6b572823cf54cbfc, 0xe2beb7debce91495,
        0x53dd318a70b8e645, 0xda34ae770305392c,
        0xf86b7dd64f3c266a, 0x7182e22b3c81f903,
        0xc0e1647ff0d00bd3, 0x4908fb82836dd4ba,
        0x897f4e8530e47d18, 0x0096d1784359a271,
        0xb1f5572c8f0850a1, 0x381cc8d1fcb58fc8,
        0xc1ccc68f76634f31, 0x4825597205de9058,
        0xf946df26c98f6288, 0x70af40dbba32bde1,
        0xb0d8f5dc09bb1443, 0x39316a217a06cb2a,
        0x8852ec75b65739fa, 0x01bb7388c5eae693,
        0x23e4a02989d3f9d5, 0xaa0d3fd4fa6e26bc,
        0x1b6eb980363fd46c, 0x9287267d45820b05,
        0x52f0937af60ba2a7, 0xdb190c8785b67dce,
        0x6a7a8ad349e78f1e, 0xe393152e3a5a5077,
        0x2ec52d91d195b192, 0xa72cb26ca2286efb,
        0x164f34386e799c2b, 0x9fa6abc51dc44342,
        0x5fd11ec2ae4deae0, 0xd638813fddf03589,
        0x675b076b11a1c759, 0xeeb29896621c1830,
        0xcced4b372e250776, 0x4504d4ca5d98d81f,
        0xf467529e91c92acf, 0x7d8ecd63e274f5a6,
        0xbdf9786451fd5c04, 0x3410e7992240836d,
        0x857361cdee1171bd, 0x0c9afe309dacaed4,
        0x348636e16119211c, 0xbd6fa91c12a4fe75,
        0x0c0c2f48def50ca5, 0x85e5b0b5ad48d3cc,
        0x459205b21ec17a6e, 0xcc7b9a4f6d7ca507,
        0x7d181c1ba12d57d7, 0xf4f183e6d29088be,
        0xd6ae50479ea997f8, 0x5f47cfbaed144891,
        0xee2449ee2145ba41, 0x67cdd61352f86528,
        0xa7ba6314e171cc8a, 0x2e53fce992cc13e3,
        0x9f307abd5e9de133, 0x16d9e5402d203e5a,
        0xdb8fddffc6efdfbf, 0x52664202b55200d6,
        0xe305c4567903f206, 0x6aec5bab0abe2d6f,
        0xaa9beeacb93784cd, 0x23727151ca8a5ba4,
        0x9211f70506dba974, 0x1bf868f87566761d,
        0x39a7bb59395f695b, 0xb04e24a44ae2b632,
        0x012da2f086b344e2, 0x88c43d0df50e9b8b,
        0x48b3880a46873229, 0xc15a17f7353aed40,
        0x703991a3f96b1f90, 0xf9d00e5e8ad6c0f9,
        0xa8c0ab4db4510d09, 0x212934b0c7ecd260,
        0x904ab2e40bbd20b0, 0x19a32d197800ffd9,
        0xd9d4981ecb89567b, 0x503d07e3b8348912,
        0xe15e81b774657bc2, 0x68b71e4a07d8a4ab,
        0x4ae8cdeb4be1bbed, 0xc3015216385c6484,
        0x7262d442f40d9654, 0xfb8b4bbf87b0493d,
        0x3bfcfeb83439e09f, 0xb215614547843ff6,
        0x0376e7118bd5cd26, 0x8a9f78ecf868124f,
        0x47c9405313a7f3aa, 0xce20dfae601a2cc3,
        0x7f4359faac4bde13, 0xf6aac607dff6017a,
        0x36dd73006c7fa8d8, 0xbf34ecfd1fc277b1,
        0x0e576aa9d3938561, 0x87bef554a02e5a08,
        0xa5e126f5ec17454e, 0x2c08b9089faa9a27,
        0x9d6b3f5c53fb68f7, 0x1482a0a12046b79e,
        0xd4f515a693cf1e3c, 0x5d1c8a5be072c155,
        0xec7f0c0f2c233385, 0x659693f25f9eecec,
        0x5d8a5b23a32b6324, 0xd463c4ded096bc4d,
        0x6500428a1cc74e9d, 0xece9dd776f7a91f4,
        0x2c9e6870dcf33856, 0xa577f78daf4ee73f,
        0x141471d9631f15ef, 0x9dfdee2410a2ca86,
        0xbfa23d855c9bd5c0, 0x364ba2782f260aa9,
        0x8728242ce377f879, 0x0ec1bbd190ca2710,
        0xceb60ed623438eb2, 0x475f912b50fe51db,
        0xf63c177f9cafa30b, 0x7fd58882ef127c62,
        0xb283b03d04dd9d87, 0x3b6a2fc0776042ee,
        0x8a09a994bb31b03e, 0x03e03669c88c6f57,
        0xc397836e7b05c6f5, 0x4a7e1c9308b8199c,
        0xfb1d9ac7c4e9eb4c, 0x72f4053ab7543425,
        0x50abd69bfb6d2b63, 0xd942496688d0f40a,
        0x6821cf32448106da, 0xe1c850cf373cd9b3,
        0x21bfe5c884b57011, 0xa8567a35f708af78,
        0x1935fc613b595da8, 0x90dc639c48e482c1,
        0x690c6dc2c2324238, 0xe0e5f23fb18f9d51,
        0x5186746b7dde6f81, 0xd86feb960e63b0e8,
        0x18185e91bdea194a, 0x91f1c16cce57c623,
        0x20924738020634f3, 0xa97bd8c571bbeb9a,
        0x8b240b643d82f4dc, 0x02cd94994e3f2bb5,
        0xb3ae12cd826ed965, 0x3a478d30f1d3060c,
        0xfa303837425aafae, 0x73d9a7ca31e770c7,
        0xc2ba219efdb68217, 0x4b53be638e0b5d7e,
        0x860586dc65c4bc9b, 0x0fec1921167963f2,
        0xbe8f9f75da289122, 0x37660088a9954e4b,
        0xf711b58f1a1ce7e9, 0x7ef82a7269a13880,
        0xcf9bac26a5f0ca50, 0x467233dbd64d1539,
        0x642de07a9a740a7f, 0xedc47f87e9c9d516,
        0x5ca7f9d3259827c6, 0xd54e662e5625f8af,
        0x1539d329e5ac510d, 0x9cd04cd496118e64,
        0x2db3ca805a407cb4, 0xa45a557d29fda3dd,
        0x9c469dacd5482c15, 0x15af0251a6f5f37c,
        0xa4cc84056aa401ac, 0x2d251bf81919dec5,
        0xed52aeffaa907767, 0x64bb3102d92da80e,
        0xd5d8b756157c5ade, 0x5c3128ab66c185b7,
        0x7e6efb0a2af89af1, 0xf78764f759454598,
        0x46e4e2a39514b748, 0xcf0d7d5ee6a96821,
        0x0f7ac8595520c183, 0x869357a4269d1eea,
        0x37f0d1f0eaccec3a, 0xbe194e0d99713353,
        0x734f76b272bed2b6, 0xfaa6e94f01030ddf,
        0x4bc56f1bcd52ff0f, 0xc22cf0e6beef2066,
        0x025b45e10d6689c4, 0x8bb2da1c7edb56ad,
        0x3ad15c48b28aa47d, 0xb338c3b5c1377b14,
        0x916710148d0e6452, 0x188e8fe9feb3bb3b,
        0xa9ed09bd32e249eb, 0x20049640415f9682,
        0xe0732347f2d63f20, 0x699abcba816be049,
        0xd8f93aee4d3a1299, 0x5110a5133e87cdf0,
    ],

    &[ 0x0000000000000000, 0xf4125129ce4038be,
        0xc37d8400c417e217, 0x376fd5290a57daa9,
        0xada22e52d0b85745, 0x59b07f7b1ef86ffb,
        0x6edfaa5214afb552, 0x9acdfb7bdaef8dec,
        0x701d7af6f9e73de1, 0x840f2bdf37a7055f,
        0xb360fef63df0dff6, 0x4772afdff3b0e748,
        0xddbf54a4295f6aa4, 0x29ad058de71f521a,
        0x1ec2d0a4ed4888b3, 0xead0818d2308b00d,
        0xe03af5edf3ce7bc2, 0x1428a4c43d8e437c,
        0x234771ed37d999d5, 0xd75520c4f999a16b,
        0x4d98dbbf23762c87, 0xb98a8a96ed361439,
        0x8ee55fbfe761ce90, 0x7af70e962921f62e,
        0x90278f1b0a294623, 0x6435de32c4697e9d,
        0x535a0b1bce3ea434, 0xa7485a32007e9c8a,
        0x3d85a149da911166, 0xc997f06014d129d8,
        0xfef825491e86f371, 0x0aea7460d0c6cbcf,
        0xeb2ccd88bf0b64ef, 0x1f3e9ca1714b5c51,
        0x285149887b1c86f8, 0xdc4318a1b55cbe46,
        0x468ee3da6fb333aa, 0xb29cb2f3a1f30b14,
        0x85f367daaba4d1bd, 0x71e136f365e4e903,
        0x9b31b77e46ec590e, 0x6f23e65788ac61b0,
        0x584c337e82fbbb19, 0xac5e62574cbb83a7,
        0x3693992c96540e4b, 0xc281c805581436f5,
        0xf5ee1d2c5243ec5c, 0x01fc4c059c03d4e2,
        0x0b1638654cc51f2d, 0xff04694c82852793,
        0xc86bbc6588d2fd3a, 0x3c79ed4c4692c584,
        0xa6b416379c7d4868, 0x52a6471e523d70d6,
        0x65c99237586aaa7f, 0x91dbc31e962a92c1,
        0x7b0b4293b52222cc, 0x8f1913ba7b621a72,
        0xb876c6937135c0db, 0x4c6497babf75f865,
        0xd6a96cc1659a7589, 0x22bb3de8abda4d37,
        0x15d4e8c1a18d979e, 0xe1c6b9e86fcdaf20,
        0xfd00bd4226815ab5, 0x0912ec6be8c1620b,
        0x3e7d3942e296b8a2, 0xca6f686b2cd6801c,
        0x50a29310f6390df0, 0xa4b0c2393879354e,
        0x93df1710322eefe7, 0x67cd4639fc6ed759,
        0x8d1dc7b4df666754, 0x790f969d11265fea,
        0x4e6043b41b718543, 0xba72129dd531bdfd,
        0x20bfe9e60fde3011, 0xd4adb8cfc19e08af,
        0xe3c26de6cbc9d206, 0x17d03ccf0589eab8,
        0x1d3a48afd54f2177, 0xe92819861b0f19c9,
        0xde47ccaf1158c360, 0x2a559d86df18fbde,
        0xb09866fd05f77632, 0x448a37d4cbb74e8c,
        0x73e5e2fdc1e09425, 0x87f7b3d40fa0ac9b,
        0x6d2732592ca81c96, 0x99356370e2e82428,
        0xae5ab659e8bffe81, 0x5a48e77026ffc63f,
        0xc0851c0bfc104bd3, 0x34974d223250736d,
        0x03f8980b3807a9c4, 0xf7eac922f647917a,
        0x162c70ca998a3e5a, 0xe23e21e357ca06e4,
        0xd551f4ca5d9ddc4d, 0x2143a5e393dde4f3,
        0xbb8e5e984932691f, 0x4f9c0fb1877251a1,
        0x78f3da988d258b08, 0x8ce18bb14365b3b6,
        0x66310a3c606d03bb, 0x92235b15ae2d3b05,
        0xa54c8e3ca47ae1ac, 0x515edf156a3ad912,
        0xcb93246eb0d554fe, 0x3f8175477e956c40,
        0x08eea06e74c2b6e9, 0xfcfcf147ba828e57,
        0xf61685276a444598, 0x0204d40ea4047d26,
        0x356b0127ae53a78f, 0xc179500e60139f31,
        0x5bb4ab75bafc12dd, 0xafa6fa5c74bc2a63,
        0x98c92f757eebf0ca, 0x6cdb7e5cb0abc874,
        0x860bffd193a37879, 0x7219aef85de340c7,
        0x45767bd157b49a6e, 0xb1642af899f4a2d0,
        0x2ba9d183431b2f3c, 0xdfbb80aa8d5b1782,
        0xe8d45583870ccd2b, 0x1cc604aa494cf595,
        0xd1585cd715952601, 0x254a0dfedbd51ebf,
        0x1225d8d7d182c416, 0xe63789fe1fc2fca8,
        0x7cfa7285c52d7144, 0x88e823ac0b6d49fa,
        0xbf87f685013a9353, 0x4b95a7accf7aabed,
        0xa1452621ec721be0, 0x555777082232235e,
        0x6238a2212865f9f7, 0x962af308e625c149,
        0x0ce708733cca4ca5, 0xf8f5595af28a741b,
        0xcf9a8c73f8ddaeb2, 0x3b88dd5a369d960c,
        0x3162a93ae65b5dc3, 0xc570f813281b657d,
        0xf21f2d3a224cbfd4, 0x060d7c13ec0c876a,
        0x9cc0876836e30a86, 0x68d2d641f8a33238,
        0x5fbd0368f2f4e891, 0xabaf52413cb4d02f,
        0x417fd3cc1fbc6022, 0xb56d82e5d1fc589c,
        0x820257ccdbab8235, 0x761006e515ebba8b,
        0xecddfd9ecf043767, 0x18cfacb701440fd9,
        0x2fa0799e0b13d570, 0xdbb228b7c553edce,
        0x3a74915faa9e42ee, 0xce66c07664de7a50,
        0xf909155f6e89a0f9, 0x0d1b4476a0c99847,
        0x97d6bf0d7a2615ab, 0x63c4ee24b4662d15,
        0x54ab3b0dbe31f7bc, 0xa0b96a247071cf02,
        0x4a69eba953797f0f, 0xbe7bba809d3947b1,
        0x89146fa9976e9d18, 0x7d063e80592ea5a6,
        0xe7cbc5fb83c1284a, 0x13d994d24d8110f4,
        0x24b641fb47d6ca5d, 0xd0a410d28996f2e3,
        0xda4e64b25950392c, 0x2e5c359b97100192,
        0x1933e0b29d47db3b, 0xed21b19b5307e385,
        0x77ec4ae089e86e69, 0x83fe1bc947a856d7,
        0xb491cee04dff8c7e, 0x40839fc983bfb4c0,
        0xaa531e44a0b704cd, 0x5e414f6d6ef73c73,
        0x692e9a4464a0e6da, 0x9d3ccb6daae0de64,
        0x07f13016700f5388, 0xf3e3613fbe4f6b36,
        0xc48cb416b418b19f, 0x309ee53f7a588921,
        0x2c58e19533147cb4, 0xd84ab0bcfd54440a,
        0xef256595f7039ea3, 0x1b3734bc3943a61d,
        0x81facfc7e3ac2bf1, 0x75e89eee2dec134f,
        0x42874bc727bbc9e6, 0xb6951aeee9fbf158,
        0x5c459b63caf34155, 0xa857ca4a04b379eb,
        0x9f381f630ee4a342, 0x6b2a4e4ac0a49bfc,
        0xf1e7b5311a4b1610, 0x05f5e418d40b2eae,
        0x329a3131de5cf407, 0xc6886018101cccb9,
        0xcc621478c0da0776, 0x387045510e9a3fc8,
        0x0f1f907804cde561, 0xfb0dc151ca8ddddf,
        0x61c03a2a10625033, 0x95d26b03de22688d,
        0xa2bdbe2ad475b224, 0x56afef031a358a9a,
        0xbc7f6e8e393d3a97, 0x486d3fa7f77d0229,
        0x7f02ea8efd2ad880, 0x8b10bba7336ae03e,
        0x11dd40dce9856dd2, 0xe5cf11f527c5556c,
        0xd2a0c4dc2d928fc5, 0x26b295f5e3d2b77b,
        0xc7742c1d8c1f185b, 0x33667d34425f20e5,
        0x0409a81d4808fa4c, 0xf01bf9348648c2f2,
        0x6ad6024f5ca74f1e, 0x9ec4536692e777a0,
        0xa9ab864f98b0ad09, 0x5db9d76656f095b7,
        0xb76956eb75f825ba, 0x437b07c2bbb81d04,
        0x7414d2ebb1efc7ad, 0x800683c27fafff13,
        0x1acb78b9a54072ff, 0xeed929906b004a41,
        0xd9b6fcb9615790e8, 0x2da4ad90af17a856,
        0x274ed9f07fd16399, 0xd35c88d9b1915b27,
        0xe4335df0bbc6818e, 0x10210cd97586b930,
        0x8aecf7a2af6934dc, 0x7efea68b61290c62,
        0x499173a26b7ed6cb, 0xbd83228ba53eee75,
        0x5753a30686365e78, 0xa341f22f487666c6,
        0x942e27064221bc6f, 0x603c762f8c6184d1,
        0xfaf18d54568e093d, 0x0ee3dc7d98ce3183,
        0x398c09549299eb2a, 0xcd9e587d5cd9d394,
    ],

    &[ 0x0000000000000000, 0x8ce168638c796306,
        0x329bf69440655567, 0xbe7a9ef7cc1c3661,
        0x6537ed2880caaace, 0xe9d6854b0cb3c9c8,
        0x57ac1bbcc0afffa9, 0xdb4d73df4cd69caf,
        0xca6fda510195559c, 0x468eb2328dec369a,
        0xf8f42cc541f000fb, 0x741544a6cd8963fd,
        0xaf583779815fff52, 0x23b95f1a0d269c54,
        0x9dc3c1edc13aaa35, 0x1122a98e4d43c933,
        0xbf8692f15bbd3853, 0x3367fa92d7c45b55,
        0x8d1d64651bd86d34, 0x01fc0c0697a10e32,
        0xdab17fd9db77929d, 0x565017ba570ef19b,
        0xe82a894d9b12c7fa, 0x64cbe12e176ba4fc,
        0x75e948a05a286dcf, 0xf90820c3d6510ec9,
        0x4772be341a4d38a8, 0xcb93d65796345bae,
        0x10dea588dae2c701, 0x9c3fcdeb569ba407,
        0x2245531c9a879266, 0xaea43b7f16fef160,
        0x545403b1efede3cd, 0xd8b56bd2639480cb,
        0x66cff525af88b6aa, 0xea2e9d4623f1d5ac,
        0x3163ee996f274903, 0xbd8286fae35e2a05,
        0x03f8180d2f421c64, 0x8f19706ea33b7f62,
        0x9e3bd9e0ee78b651, 0x12dab1836201d557,
        0xaca02f74ae1de336, 0x2041471722648030,
        0xfb0c34c86eb21c9f, 0x77ed5cabe2cb7f99,
        0xc997c25c2ed749f8, 0x4576aa3fa2ae2afe,
        0xebd29140b450db9e, 0x6733f9233829b898,
        0xd94967d4f4358ef9, 0x55a80fb7784cedff,
        0x8ee57c68349a7150, 0x0204140bb8e31256,
        0xbc7e8afc74ff2437, 0x309fe29ff8864731,
        0x21bd4b11b5c58e02, 0xad5c237239bced04,
        0x1326bd85f5a0db65, 0x9fc7d5e679d9b863,
        0x448aa639350f24cc, 0xc86bce5ab97647ca,
        0x761150ad756a71ab, 0xfaf038cef91312ad,
        0xa8a80763dfdbc79a, 0x24496f0053a2a49c,
        0x9a33f1f79fbe92fd, 0x16d2999413c7f1fb,
        0xcd9fea4b5f116d54, 0x417e8228d3680e52,
        0xff041cdf1f743833, 0x73e574bc930d5b35,
        0x62c7dd32de4e9206, 0xee26b5515237f100,
        0x505c2ba69e2bc761, 0xdcbd43c51252a467,
        0x07f0301a5e8438c8, 0x8b115879d2fd5bce,
        0x356bc68e1ee16daf, 0xb98aaeed92980ea9,
        0x172e95928466ffc9, 0x9bcffdf1081f9ccf,
        0x25b56306c403aaae, 0xa9540b65487ac9a8,
        0x721978ba04ac5507, 0xfef810d988d53601,
        0x40828e2e44c90060, 0xcc63e64dc8b06366,
        0xdd414fc385f3aa55, 0x51a027a0098ac953,
        0xefdab957c596ff32, 0x633bd13449ef9c34,
        0xb876a2eb0539009b, 0x3497ca888940639d,
        0x8aed547f455c55fc, 0x060c3c1cc92536fa,
        0xfcfc04d230362457, 0x701d6cb1bc4f4751,
        0xce67f24670537130, 0x42869a25fc2a1236,
        0x99cbe9fab0fc8e99, 0x152a81993c85ed9f,
        0xab501f6ef099dbfe, 0x27b1770d7ce0b8f8,
        0x3693de8331a371cb, 0xba72b6e0bdda12cd,
        0x0408281771c624ac, 0x88e94074fdbf47aa,
        0x53a433abb169db05, 0xdf455bc83d10b803,
        0x613fc53ff10c8e62, 0xeddead5c7d75ed64,
        0x437a96236b8b1c04, 0xcf9bfe40e7f27f02,
        0x71e160b72bee4963, 0xfd0008d4a7972a65,
        0x264d7b0beb41b6ca, 0xaaac13686738d5cc,
        0x14d68d9fab24e3ad, 0x9837e5fc275d80ab,
        0x89154c726a1e4998, 0x05f42411e6672a9e,
        0xbb8ebae62a7b1cff, 0x376fd285a6027ff9,
        0xec22a15aead4e356, 0x60c3c93966ad8050,
        0xdeb957ceaab1b631, 0x52583fad26c8d537,
        0x7a092894e7201c5f, 0xf6e840f76b597f59,
        0x4892de00a7454938, 0xc473b6632b3c2a3e,
        0x1f3ec5bc67eab691, 0x93dfaddfeb93d597,
        0x2da53328278fe3f6, 0xa1445b4babf680f0,
        0xb066f2c5e6b549c3, 0x3c879aa66acc2ac5,
        0x82fd0451a6d01ca4, 0x0e1c6c322aa97fa2,
        0xd5511fed667fe30d, 0x59b0778eea06800b,
        0xe7cae979261ab66a, 0x6b2b811aaa63d56c,
        0xc58fba65bc9d240c, 0x496ed20630e4470a,
        0xf7144cf1fcf8716b, 0x7bf524927081126d,
        0xa0b8574d3c578ec2, 0x2c593f2eb02eedc4,
        0x9223a1d97c32dba5, 0x1ec2c9baf04bb8a3,
        0x0fe06034bd087190, 0x8301085731711296,
        0x3d7b96a0fd6d24f7, 0xb19afec3711447f1,
        0x6ad78d1c3dc2db5e, 0xe636e57fb1bbb858,
        0x584c7b887da78e39, 0xd4ad13ebf1deed3f,
        0x2e5d2b2508cdff92, 0xa2bc434684b49c94,
        0x1cc6ddb148a8aaf5, 0x9027b5d2c4d1c9f3,
        0x4b6ac60d8807555c, 0xc78bae6e047e365a,
        0x79f13099c862003b, 0xf51058fa441b633d,
        0xe432f1740958aa0e, 0x68d399178521c908,
        0xd6a907e0493dff69, 0x5a486f83c5449c6f,
        0x81051c5c899200c0, 0x0de4743f05eb63c6,
        0xb39eeac8c9f755a7, 0x3f7f82ab458e36a1,
        0x91dbb9d45370c7c1, 0x1d3ad1b7df09a4c7,
        0xa3404f40131592a6, 0x2fa127239f6cf1a0,
        0xf4ec54fcd3ba6d0f, 0x780d3c9f5fc30e09,
        0xc677a26893df3868, 0x4a96ca0b1fa65b6e,
        0x5bb4638552e5925d, 0xd7550be6de9cf15b,
        0x692f95111280c73a, 0xe5cefd729ef9a43c,
        0x3e838eadd22f3893, 0xb262e6ce5e565b95,
        0x0c187839924a6df4, 0x80f9105a1e330ef2,
        0xd2a12ff738fbdbc5, 0x5e404794b482b8c3,
        0xe03ad963789e8ea2, 0x6cdbb100f4e7eda4,
        0xb796c2dfb831710b, 0x3b77aabc3448120d,
        0x850d344bf854246c, 0x09ec5c28742d476a,
        0x18cef5a6396e8e59, 0x942f9dc5b517ed5f,
        0x2a550332790bdb3e, 0xa6b46b51f572b838,
        0x7df9188eb9a42497, 0xf11870ed35dd4791,
        0x4f62ee1af9c171f0, 0xc383867975b812f6,
        0x6d27bd066346e396, 0xe1c6d565ef3f8090,
        0x5fbc4b922323b6f1, 0xd35d23f1af5ad5f7,
        0x0810502ee38c4958, 0x84f1384d6ff52a5e,
        0x3a8ba6baa3e91c3f, 0xb66aced92f907f39,
        0xa748675762d3b60a, 0x2ba90f34eeaad50c,
        0x95d391c322b6e36d, 0x1932f9a0aecf806b,
        0xc27f8a7fe2191cc4, 0x4e9ee21c6e607fc2,
        0xf0e47ceba27c49a3, 0x7c0514882e052aa5,
        0x86f52c46d7163808, 0x0a1444255b6f5b0e,
        0xb46edad297736d6f, 0x388fb2b11b0a0e69,
        0xe3c2c16e57dc92c6, 0x6f23a90ddba5f1c0,
        0xd15937fa17b9c7a1, 0x5db85f999bc0a4a7,
        0x4c9af617d6836d94, 0xc07b9e745afa0e92,
        0x7e01008396e638f3, 0xf2e068e01a9f5bf5,
        0x29ad1b3f5649c75a, 0xa54c735cda30a45c,
        0x1b36edab162c923d, 0x97d785c89a55f13b,
        0x3973beb78cab005b, 0xb592d6d400d2635d,
        0x0be84823ccce553c, 0x8709204040b7363a,
        0x5c44539f0c61aa95, 0xd0a53bfc8018c993,
        0x6edfa50b4c04fff2, 0xe23ecd68c07d9cf4,
        0xf31c64e68d3e55c7, 0x7ffd0c85014736c1,
        0xc1879272cd5b00a0, 0x4d66fa11412263a6,
        0x962b89ce0df4ff09, 0x1acae1ad818d9c0f,
        0xa4b07f5a4d91aa6e, 0x28511739c1e8c968,
    ],

    &[ 0x0000000000000000, 0x3504e58b9ba6dd1e,
        0x6a09cb17374dba3c, 0x5f0d2e9caceb6722,
        0xd413962e6e9b7478, 0xe11773a5f53da966,
        0xbe1a5d3959d6ce44, 0x8b1eb8b2c270135a,
        0x837e0a0f85a17b9b, 0xb67aef841e07a685,
        0xe977c118b2ecc1a7, 0xdc732493294a1cb9,
        0x576d9c21eb3a0fe3, 0x626979aa709cd2fd,
        0x3d645736dc77b5df, 0x0860b2bd47d168c1,
        0x2da5324c53d5645d, 0x18a1d7c7c873b943,
        0x47acf95b6498de61, 0x72a81cd0ff3e037f,
        0xf9b6a4623d4e1025, 0xccb241e9a6e8cd3b,
        0x93bf6f750a03aa19, 0xa6bb8afe91a57707,
        0xaedb3843d6741fc6, 0x9bdfddc84dd2c2d8,
        0xc4d2f354e139a5fa, 0xf1d616df7a9f78e4,
        0x7ac8ae6db8ef6bbe, 0x4fcc4be62349b6a0,
        0x10c1657a8fa2d182, 0x25c580f114040c9c,
        0x5b4a6498a7aac8ba, 0x6e4e81133c0c15a4,
        0x3143af8f90e77286, 0x04474a040b41af98,
        0x8f59f2b6c931bcc2, 0xba5d173d529761dc,
        0xe55039a1fe7c06fe, 0xd054dc2a65dadbe0,
        0xd8346e97220bb321, 0xed308b1cb9ad6e3f,
        0xb23da5801546091d, 0x8739400b8ee0d403,
        0x0c27f8b94c90c759, 0x39231d32d7361a47,
        0x662e33ae7bdd7d65, 0x532ad625e07ba07b,
        0x76ef56d4f47face7, 0x43ebb35f6fd971f9,
        0x1ce69dc3c33216db, 0x29e278485894cbc5,
        0xa2fcc0fa9ae4d89f, 0x97f8257101420581,
        0xc8f50bedada962a3, 0xfdf1ee66360fbfbd,
        0xf5915cdb71ded77c, 0xc095b950ea780a62,
        0x9f9897cc46936d40, 0xaa9c7247dd35b05e,
        0x2182caf51f45a304, 0x14862f7e84e37e1a,
        0x4b8b01e228081938, 0x7e8fe469b3aec426,
        0xb694c9314f559174, 0x83902cbad4f34c6a,
        0xdc9d022678182b48, 0xe999e7ade3bef656,
        0x62875f1f21cee50c, 0x5783ba94ba683812,
        0x088e940816835f30, 0x3d8a71838d25822e,
        0x35eac33ecaf4eaef, 0x00ee26b5515237f1,
        0x5fe30829fdb950d3, 0x6ae7eda2661f8dcd,
        0xe1f95510a46f9e97, 0xd4fdb09b3fc94389,
        0x8bf09e07932224ab, 0xbef47b8c0884f9b5,
        0x9b31fb7d1c80f529, 0xae351ef687262837,
        0xf138306a2bcd4f15, 0xc43cd5e1b06b920b,
        0x4f226d53721b8151, 0x7a2688d8e9bd5c4f,
        0x252ba64445563b6d, 0x102f43cfdef0e673,
        0x184ff17299218eb2, 0x2d4b14f9028753ac,
        0x72463a65ae6c348e, 0x4742dfee35cae990,
        0xcc5c675cf7bafaca, 0xf95882d76c1c27d4,
        0xa655ac4bc0f740f6, 0x935149c05b519de8,
        0xeddeada9e8ff59ce, 0xd8da4822735984d0,
        0x87d766bedfb2e3f2, 0xb2d3833544143eec,
        0x39cd3b8786642db6, 0x0cc9de0c1dc2f0a8,
        0x53c4f090b129978a, 0x66c0151b2a8f4a94,
        0x6ea0a7a66d5e2255, 0x5ba4422df6f8ff4b,
        0x04a96cb15a139869, 0x31ad893ac1b54577,
        0xbab3318803c5562d, 0x8fb7d40398638b33,
        0xd0bafa9f3488ec11, 0xe5be1f14af2e310f,
        0xc07b9fe5bb2a3d93, 0xf57f7a6e208ce08d,
        0xaa7254f28c6787af, 0x9f76b17917c15ab1,
        0x146809cbd5b149eb, 0x216cec404e1794f5,
        0x7e61c2dce2fcf3d7, 0x4b652757795a2ec9,
        0x430595ea3e8b4608, 0x76017061a52d9b16,
        0x290c5efd09c6fc34, 0x1c08bb769260212a,
        0x971603c450103270, 0xa212e64fcbb6ef6e,
        0xfd1fc8d3675d884c, 0xc81b2d58fcfb5552,
        0x4670b431c63cb183, 0x737451ba5d9a6c9d,
        0x2c797f26f1710bbf, 0x197d9aad6ad7d6a1,
        0x9263221fa8a7c5fb, 0xa767c794330118e5,
        0xf86ae9089fea7fc7, 0xcd6e0c83044ca2d9,
        0xc50ebe3e439dca18, 0xf00a5bb5d83b1706,
        0xaf07752974d07024, 0x9a0390a2ef76ad3a,
        0x111d28102d06be60, 0x2419cd9bb6a0637e,
        0x7b14e3071a4b045c, 0x4e10068c81edd942,
        0x6bd5867d95e9d5de, 0x5ed163f60e4f08c0,
        0x01dc4d6aa2a46fe2, 0x34d8a8e13902b2fc,
        0xbfc61053fb72a1a6, 0x8ac2f5d860d47cb8,
        0xd5cfdb44cc3f1b9a, 0xe0cb3ecf5799c684,
        0xe8ab8c721048ae45, 0xddaf69f98bee735b,
        0x82a2476527051479, 0xb7a6a2eebca3c967,
        0x3cb81a5c7ed3da3d, 0x09bcffd7e5750723,
        0x56b1d14b499e6001, 0x63b534c0d238bd1f,
        0x1d3ad0a961967939, 0x283e3522fa30a427,
        0x77331bbe56dbc305, 0x4237fe35cd7d1e1b,
        0xc92946870f0d0d41, 0xfc2da30c94abd05f,
        0xa3208d903840b77d, 0x9624681ba3e66a63,
        0x9e44daa6e43702a2, 0xab403f2d7f91dfbc,
        0xf44d11b1d37ab89e, 0xc149f43a48dc6580,
        0x4a574c888aac76da, 0x7f53a903110aabc4,
        0x205e879fbde1cce6, 0x155a6214264711f8,
        0x309fe2e532431d64, 0x059b076ea9e5c07a,
        0x5a9629f2050ea758, 0x6f92cc799ea87a46,
        0xe48c74cb5cd8691c, 0xd1889140c77eb402,
        0x8e85bfdc6b95d320, 0xbb815a57f0330e3e,
        0xb3e1e8eab7e266ff, 0x86e50d612c44bbe1,
        0xd9e823fd80afdcc3, 0xececc6761b0901dd,
        0x67f27ec4d9791287, 0x52f69b4f42dfcf99,
        0x0dfbb5d3ee34a8bb, 0x38ff5058759275a5,
        0xf0e47d00896920f7, 0xc5e0988b12cffde9,
        0x9aedb617be249acb, 0xafe9539c258247d5,
        0x24f7eb2ee7f2548f, 0x11f30ea57c548991,
        0x4efe2039d0bfeeb3, 0x7bfac5b24b1933ad,
        0x739a770f0cc85b6c, 0x469e9284976e8672,
        0x1993bc183b85e150, 0x2c975993a0233c4e,
        0xa789e12162532f14, 0x928d04aaf9f5f20a,
        0xcd802a36551e9528, 0xf884cfbdceb84836,
        0xdd414f4cdabc44aa, 0xe845aac7411a99b4,
        0xb748845bedf1fe96, 0x824c61d076572388,
        0x0952d962b42730d2, 0x3c563ce92f81edcc,
        0x635b1275836a8aee, 0x565ff7fe18cc57f0,
        0x5e3f45435f1d3f31, 0x6b3ba0c8c4bbe22f,
        0x34368e546850850d, 0x01326bdff3f65813,
        0x8a2cd36d31864b49, 0xbf2836e6aa209657,
        0xe025187a06cbf175, 0xd521fdf19d6d2c6b,
        0xabae19982ec3e84d, 0x9eaafc13b5653553,
        0xc1a7d28f198e5271, 0xf4a3370482288f6f,
        0x7fbd8fb640589c35, 0x4ab96a3ddbfe412b,
        0x15b444a177152609, 0x20b0a12aecb3fb17,
        0x28d01397ab6293d6, 0x1dd4f61c30c44ec8,
        0x42d9d8809c2f29ea, 0x77dd3d0b0789f4f4,
        0xfcc385b9c5f9e7ae, 0xc9c760325e5f3ab0,
        0x96ca4eaef2b45d92, 0xa3ceab256912808c,
        0x860b2bd47d168c10, 0xb30fce5fe6b0510e,
        0xec02e0c34a5b362c, 0xd9060548d1fdeb32,
        0x5218bdfa138df868, 0x671c5871882b2576,
        0x381176ed24c04254, 0x0d159366bf669f4a,
        0x057521dbf8b7f78b, 0x3071c45063112a95,
        0x6f7ceacccffa4db7, 0x5a780f47545c90a9,
        0xd166b7f5962c83f3, 0xe462527e0d8a5eed,
        0xbb6f7ce2a16139cf, 0x8e6b99693ac7e4d1,
    ],

    &[ 0x0000000000000000, 0xe39d1389931b9354,
        0xec6301407ea0b5c3, 0x0ffe12c9edbb2697,
        0xf39f24d3a5d6f8ed, 0x1002375a36cd6bb9,
        0x1ffc2593db764d2e, 0xfc61361a486dde7a,
        0xcc676ff4133a62b1, 0x2ffa7c7d8021f1e5,
        0x20046eb46d9ad772, 0xc3997d3dfe814426,
        0x3ff84b27b6ec9a5c, 0xdc6558ae25f70908,
        0xd39b4a67c84c2f9f, 0x300659ee5b57bccb,
        0xb397f9bb7ee35609, 0x500aea32edf8c55d,
        0x5ff4f8fb0043e3ca, 0xbc69eb729358709e,
        0x4008dd68db35aee4, 0xa395cee1482e3db0,
        0xac6bdc28a5951b27, 0x4ff6cfa1368e8873,
        0x7ff0964f6dd934b8, 0x9c6d85c6fec2a7ec,
        0x9393970f1379817b, 0x700e84868062122f,
        0x8c6fb29cc80fcc55, 0x6ff2a1155b145f01,
        0x600cb3dcb6af7996, 0x8391a05525b4eac2,
        0x4c76d525a5513f79, 0xafebc6ac364aac2d,
        0xa015d465dbf18aba, 0x4388c7ec48ea19ee,
        0xbfe9f1f60087c794, 0x5c74e27f939c54c0,
        0x538af0b67e277257, 0xb017e33fed3ce103,
        0x8011bad1b66b5dc8, 0x638ca9582570ce9c,
        0x6c72bb91c8cbe80b, 0x8fefa8185bd07b5f,
        0x738e9e0213bda525, 0x90138d8b80a63671,
        0x9fed9f426d1d10e6, 0x7c708ccbfe0683b2,
        0xffe12c9edbb26970, 0x1c7c3f1748a9fa24,
        0x13822ddea512dcb3, 0xf01f3e5736094fe7,
        0x0c7e084d7e64919d, 0xefe31bc4ed7f02c9,
        0xe01d090d00c4245e, 0x03801a8493dfb70a,
        0x3386436ac8880bc1, 0xd01b50e35b939895,
        0xdfe5422ab628be02, 0x3c7851a325332d56,
        0xc01967b96d5ef32c, 0x23847430fe456078,
        0x2c7a66f913fe46ef, 0xcfe7757080e5d5bb,
        0x98edaa4b4aa27ef2, 0x7b70b9c2d9b9eda6,
        0x748eab0b3402cb31, 0x9713b882a7195865,
        0x6b728e98ef74861f, 0x88ef9d117c6f154b,
        0x87118fd891d433dc, 0x648c9c5102cfa088,
        0x548ac5bf59981c43, 0xb717d636ca838f17,
        0xb8e9c4ff2738a980, 0x5b74d776b4233ad4,
        0xa715e16cfc4ee4ae, 0x4488f2e56f5577fa,
        0x4b76e02c82ee516d, 0xa8ebf3a511f5c239,
        0x2b7a53f0344128fb, 0xc8e74079a75abbaf,
        0xc71952b04ae19d38, 0x24844139d9fa0e6c,
        0xd8e577239197d016, 0x3b7864aa028c4342,
        0x34867663ef3765d5, 0xd71b65ea7c2cf681,
        0xe71d3c04277b4a4a, 0x04802f8db460d91e,
        0x0b7e3d4459dbff89, 0xe8e32ecdcac06cdd,
        0x148218d782adb2a7, 0xf71f0b5e11b621f3,
        0xf8e11997fc0d0764, 0x1b7c0a1e6f169430,
        0xd49b7f6eeff3418b, 0x37066ce77ce8d2df,
        0x38f87e2e9153f448, 0xdb656da70248671c,
        0x27045bbd4a25b966, 0xc4994834d93e2a32,
        0xcb675afd34850ca5, 0x28fa4974a79e9ff1,
        0x18fc109afcc9233a, 0xfb6103136fd2b06e,
        0xf49f11da826996f9, 0x17020253117205ad,
        0xeb633449591fdbd7, 0x08fe27c0ca044883,
        0x0700350927bf6e14, 0xe49d2680b4a4fd40,
        0x670c86d591101782, 0x8491955c020b84d6,
        0x8b6f8795efb0a241, 0x68f2941c7cab3115,
        0x9493a20634c6ef6f, 0x770eb18fa7dd7c3b,
        0x78f0a3464a665aac, 0x9b6db0cfd97dc9f8,
        0xab6be921822a7533, 0x48f6faa81131e667,
        0x4708e861fc8ac0f0, 0xa495fbe86f9153a4,
        0x58f4cdf227fc8dde, 0xbb69de7bb4e71e8a,
        0xb497ccb2595c381d, 0x570adf3bca47ab49,
        0x1a8272c5cdd36e8f, 0xf91f614c5ec8fddb,
        0xf6e17385b373db4c, 0x157c600c20684818,
        0xe91d561668059662, 0x0a80459ffb1e0536,
        0x057e575616a523a1, 0xe6e344df85beb0f5,
        0xd6e51d31dee90c3e, 0x35780eb84df29f6a,
        0x3a861c71a049b9fd, 0xd91b0ff833522aa9,
        0x257a39e27b3ff4d3, 0xc6e72a6be8246787,
        0xc91938a2059f4110, 0x2a842b2b9684d244,
        0xa9158b7eb3303886, 0x4a8898f7202babd2,
        0x45768a3ecd908d45, 0xa6eb99b75e8b1e11,
        0x5a8aafad16e6c06b, 0xb917bc2485fd533f,
        0xb6e9aeed684675a8, 0x5574bd64fb5de6fc,
        0x6572e48aa00a5a37, 0x86eff7033311c963,
        0x8911e5cadeaaeff4, 0x6a8cf6434db17ca0,
        0x96edc05905dca2da, 0x7570d3d096c7318e,
        0x7a8ec1197b7c1719, 0x9913d290e867844d,
        0x56f4a7e0688251f6, 0xb569b469fb99c2a2,
        0xba97a6a01622e435, 0x590ab52985397761,
        0xa56b8333cd54a91b, 0x46f690ba5e4f3a4f,
        0x49088273b3f41cd8, 0xaa9591fa20ef8f8c,
        0x9a93c8147bb83347, 0x790edb9de8a3a013,
        0x76f0c95405188684, 0x956ddadd960315d0,
        0x690cecc7de6ecbaa, 0x8a91ff4e4d7558fe,
        0x856fed87a0ce7e69, 0x66f2fe0e33d5ed3d,
        0xe5635e5b166107ff, 0x06fe4dd2857a94ab,
        0x09005f1b68c1b23c, 0xea9d4c92fbda2168,
        0x16fc7a88b3b7ff12, 0xf561690120ac6c46,
        0xfa9f7bc8cd174ad1, 0x190268415e0cd985,
        0x290431af055b654e, 0xca9922269640f61a,
        0xc56730ef7bfbd08d, 0x26fa2366e8e043d9,
        0xda9b157ca08d9da3, 0x390606f533960ef7,
        0x36f8143cde2d2860, 0xd56507b54d36bb34,
        0x826fd88e8771107d, 0x61f2cb07146a8329,
        0x6e0cd9cef9d1a5be, 0x8d91ca476aca36ea,
        0x71f0fc5d22a7e890, 0x926defd4b1bc7bc4,
        0x9d93fd1d5c075d53, 0x7e0eee94cf1cce07,
        0x4e08b77a944b72cc, 0xad95a4f30750e198,
        0xa26bb63aeaebc70f, 0x41f6a5b379f0545b,
        0xbd9793a9319d8a21, 0x5e0a8020a2861975,
        0x51f492e94f3d3fe2, 0xb2698160dc26acb6,
        0x31f82135f9924674, 0xd26532bc6a89d520,
        0xdd9b20758732f3b7, 0x3e0633fc142960e3,
        0xc26705e65c44be99, 0x21fa166fcf5f2dcd,
        0x2e0404a622e40b5a, 0xcd99172fb1ff980e,
        0xfd9f4ec1eaa824c5, 0x1e025d4879b3b791,
        0x11fc4f8194089106, 0xf2615c0807130252,
        0x0e006a124f7edc28, 0xed9d799bdc654f7c,
        0xe2636b5231de69eb, 0x01fe78dba2c5fabf,
        0xce190dab22202f04, 0x2d841e22b13bbc50,
        0x227a0ceb5c809ac7, 0xc1e71f62cf9b0993,
        0x3d86297887f6d7e9, 0xde1b3af114ed44bd,
        0xd1e52838f956622a, 0x32783bb16a4df17e,
        0x027e625f311a4db5, 0xe1e371d6a201dee1,
        0xee1d631f4fbaf876, 0x0d807096dca16b22,
        0xf1e1468c94ccb558, 0x127c550507d7260c,
        0x1d8247ccea6c009b, 0xfe1f5445797793cf,
        0x7d8ef4105cc3790d, 0x9e13e799cfd8ea59,
        0x91edf5502263ccce, 0x7270e6d9b1785f9a,
        0x8e11d0c3f91581e0, 0x6d8cc34a6a0e12b4,
        0x6272d18387b53423, 0x81efc20a14aea777,
        0xb1e99be44ff91bbc, 0x5274886ddce288e8,
        0x5d8a9aa43159ae7f, 0xbe17892da2423d2b,
        0x4276bf37ea2fe351, 0xa1ebacbe79347005,
        0xae15be77948f5692, 0x4d88adfe0794c5c6,
    ],

    &[ 0x0000000000000000, 0x62a95de6e302eff2,
        0xc552bbcdc605dfe4, 0xa7fbe62b25073016,
        0xa1fc51c8d49c2ca3, 0xc3550c2e379ec351,
        0x64aeea051299f347, 0x0607b7e3f19b1cb5,
        0x68a185c2f1afca2d, 0x0a08d82412ad25df,
        0xadf33e0f37aa15c9, 0xcf5a63e9d4a8fa3b,
        0xc95dd40a2533e68e, 0xabf489ecc631097c,
        0x0c0f6fc7e336396a, 0x6ea632210034d698,
        0xd1430b85e35f945a, 0xb3ea5663005d7ba8,
        0x1411b048255a4bbe, 0x76b8edaec658a44c,
        0x70bf5a4d37c3b8f9, 0x121607abd4c1570b,
        0xb5ede180f1c6671d, 0xd744bc6612c488ef,
        0xb9e28e4712f05e77, 0xdb4bd3a1f1f2b185,
        0x7cb0358ad4f58193, 0x1e19686c37f76e61,
        0x181edf8fc66c72d4, 0x7ab78269256e9d26,
        0xdd4c64420069ad30, 0xbfe539a4e36b42c2,
        0x89df31589e28bbdf, 0xeb766cbe7d2a542d,
        0x4c8d8a95582d643b, 0x2e24d773bb2f8bc9,
        0x282360904ab4977c, 0x4a8a3d76a9b6788e,
        0xed71db5d8cb14898, 0x8fd886bb6fb3a76a,
        0xe17eb49a6f8771f2, 0x83d7e97c8c859e00,
        0x242c0f57a982ae16, 0x468552b14a8041e4,
        0x4082e552bb1b5d51, 0x222bb8b45819b2a3,
        0x85d05e9f7d1e82b5, 0xe77903799e1c6d47,
        0x589c3add7d772f85, 0x3a35673b9e75c077,
        0x9dce8110bb72f061, 0xff67dcf658701f93,
        0xf9606b15a9eb0326, 0x9bc936f34ae9ecd4,
        0x3c32d0d86feedcc2, 0x5e9b8d3e8cec3330,
        0x303dbf1f8cd8e5a8, 0x5294e2f96fda0a5a,
        0xf56f04d24add3a4c, 0x97c65934a9dfd5be,
        0x91c1eed75844c90b, 0xf368b331bb4626f9,
        0x5493551a9e4116ef, 0x363a08fc7d43f91d,
        0x38e744e264c6e4d5, 0x5a4e190487c40b27,
        0xfdb5ff2fa2c33b31, 0x9f1ca2c941c1d4c3,
        0x991b152ab05ac876, 0xfbb248cc53582784,
        0x5c49aee7765f1792, 0x3ee0f301955df860,
        0x5046c12095692ef8, 0x32ef9cc6766bc10a,
        0x95147aed536cf11c, 0xf7bd270bb06e1eee,
        0xf1ba90e841f5025b, 0x9313cd0ea2f7eda9,
        0x34e82b2587f0ddbf, 0x564176c364f2324d,
        0xe9a44f678799708f, 0x8b0d1281649b9f7d,
        0x2cf6f4aa419caf6b, 0x4e5fa94ca29e4099,
        0x48581eaf53055c2c, 0x2af14349b007b3de,
        0x8d0aa562950083c8, 0xefa3f88476026c3a,
        0x8105caa57636baa2, 0xe3ac974395345550,
        0x44577168b0336546, 0x26fe2c8e53318ab4,
        0x20f99b6da2aa9601, 0x4250c68b41a879f3,
        0xe5ab20a064af49e5, 0x87027d4687ada617,
        0xb13875bafaee5f0a, 0xd391285c19ecb0f8,
        0x746ace773ceb80ee, 0x16c39391dfe96f1c,
        0x10c424722e7273a9, 0x726d7994cd709c5b,
        0xd5969fbfe877ac4d, 0xb73fc2590b7543bf,
        0xd999f0780b419527, 0xbb30ad9ee8437ad5,
        0x1ccb4bb5cd444ac3, 0x7e6216532e46a531,
        0x7865a1b0dfddb984, 0x1accfc563cdf5676,
        0xbd371a7d19d86660, 0xdf9e479bfada8992,
        0x607b7e3f19b1cb50, 0x02d223d9fab324a2,
        0xa529c5f2dfb414b4, 0xc78098143cb6fb46,
        0xc1872ff7cd2de7f3, 0xa32e72112e2f0801,
        0x04d5943a0b283817, 0x667cc9dce82ad7e5,
        0x08dafbfde81e017d, 0x6a73a61b0b1cee8f,
        0xcd8840302e1bde99, 0xaf211dd6cd19316b,
        0xa926aa353c822dde, 0xcb8ff7d3df80c22c,
        0x6c7411f8fa87f23a, 0x0edd4c1e19851dc8,
        0x71ce89c4c98dc9aa, 0x1367d4222a8f2658,
        0xb49c32090f88164e, 0xd6356fefec8af9bc,
        0xd032d80c1d11e509, 0xb29b85eafe130afb,
        0x156063c1db143aed, 0x77c93e273816d51f,
        0x196f0c0638220387, 0x7bc651e0db20ec75,
        0xdc3db7cbfe27dc63, 0xbe94ea2d1d253391,
        0xb8935dceecbe2f24, 0xda3a00280fbcc0d6,
        0x7dc1e6032abbf0c0, 0x1f68bbe5c9b91f32,
        0xa08d82412ad25df0, 0xc224dfa7c9d0b202,
        0x65df398cecd78214, 0x0776646a0fd56de6,
        0x0171d389fe4e7153, 0x63d88e6f1d4c9ea1,
        0xc4236844384baeb7, 0xa68a35a2db494145,
        0xc82c0783db7d97dd, 0xaa855a65387f782f,
        0x0d7ebc4e1d784839, 0x6fd7e1a8fe7aa7cb,
        0x69d0564b0fe1bb7e, 0x0b790badece3548c,
        0xac82ed86c9e4649a, 0xce2bb0602ae68b68,
        0xf811b89c57a57275, 0x9ab8e57ab4a79d87,
        0x3d43035191a0ad91, 0x5fea5eb772a24263,
        0x59ede95483395ed6, 0x3b44b4b2603bb124,
        0x9cbf5299453c8132, 0xfe160f7fa63e6ec0,
        0x90b03d5ea60ab858, 0xf21960b8450857aa,
        0x55e28693600f67bc, 0x374bdb75830d884e,
        0x314c6c96729694fb, 0x53e5317091947b09,
        0xf41ed75bb4934b1f, 0x96b78abd5791a4ed,
        0x2952b319b4fae62f, 0x4bfbeeff57f809dd,
        0xec0008d472ff39cb, 0x8ea9553291fdd639,
        0x88aee2d16066ca8c, 0xea07bf378364257e,
        0x4dfc591ca6631568, 0x2f5504fa4561fa9a,
        0x41f336db45552c02, 0x235a6b3da657c3f0,
        0x84a18d168350f3e6, 0xe608d0f060521c14,
        0xe00f671391c900a1, 0x82a63af572cbef53,
        0x255ddcde57ccdf45, 0x47f48138b4ce30b7,
        0x4929cd26ad4b2d7f, 0x2b8090c04e49c28d,
        0x8c7b76eb6b4ef29b, 0xeed22b0d884c1d69,
        0xe8d59cee79d701dc, 0x8a7cc1089ad5ee2e,
        0x2d872723bfd2de38, 0x4f2e7ac55cd031ca,
        0x218848e45ce4e752, 0x43211502bfe608a0,
        0xe4daf3299ae138b6, 0x8673aecf79e3d744,
        0x8074192c8878cbf1, 0xe2dd44ca6b7a2403,
        0x4526a2e14e7d1415, 0x278fff07ad7ffbe7,
        0x986ac6a34e14b925, 0xfac39b45ad1656d7,
        0x5d387d6e881166c1, 0x3f9120886b138933,
        0x3996976b9a889586, 0x5b3fca8d798a7a74,
        0xfcc42ca65c8d4a62, 0x9e6d7140bf8fa590,
        0xf0cb4361bfbb7308, 0x92621e875cb99cfa,
        0x3599f8ac79beacec, 0x5730a54a9abc431e,
        0x513712a96b275fab, 0x339e4f4f8825b059,
        0x9465a964ad22804f, 0xf6ccf4824e206fbd,
        0xc0f6fc7e336396a0, 0xa25fa198d0617952,
        0x05a447b3f5664944, 0x670d1a551664a6b6,
        0x610aadb6e7ffba03, 0x03a3f05004fd55f1,
        0xa458167b21fa65e7, 0xc6f14b9dc2f88a15,
        0xa85779bcc2cc5c8d, 0xcafe245a21ceb37f,
        0x6d05c27104c98369, 0x0fac9f97e7cb6c9b,
        0x09ab28741650702e, 0x6b027592f5529fdc,
        0xccf993b9d055afca, 0xae50ce5f33574038,
        0x11b5f7fbd03c02fa, 0x731caa1d333eed08,
        0xd4e74c361639dd1e, 0xb64e11d0f53b32ec,
        0xb049a63304a02e59, 0xd2e0fbd5e7a2c1ab,
        0x751b1dfec2a5f1bd, 0x17b2401821a71e4f,
        0x791472392193c8d7, 0x1bbd2fdfc2912725,
        0xbc46c9f4e7961733, 0xdeef94120494f8c1,
        0xd8e823f1f50fe474, 0xba417e17160d0b86,
        0x1dba983c330a3b90, 0x7f13c5dad008d462,
    ],

    &[ 0x0000000000000000, 0x381d0015c96f4444,
        0x703a002b92de8888, 0x4827003e5bb1cccc,
        0xe074005725bd1110, 0xd8690042ecd25554,
        0x904e007cb7639998, 0xa85300697e0cdddc,
        0xebb126fd13edb14b, 0xd3ac26e8da82f50f,
        0x9b8b26d6813339c3, 0xa39626c3485c7d87,
        0x0bc526aa3650a05b, 0x33d826bfff3fe41f,
        0x7bff2681a48e28d3, 0x43e226946de16c97,
        0xfc3b6ba97f4cf1fd, 0xc4266bbcb623b5b9,
        0x8c016b82ed927975, 0xb41c6b9724fd3d31,
        0x1c4f6bfe5af1e0ed, 0x24526beb939ea4a9,
        0x6c756bd5c82f6865, 0x54686bc001402c21,
        0x178a4d546ca140b6, 0x2f974d41a5ce04f2,
        0x67b04d7ffe7fc83e, 0x5fad4d6a37108c7a,
        0xf7fe4d03491c51a6, 0xcfe34d16807315e2,
        0x87c44d28dbc2d92e, 0xbfd94d3d12ad9d6a,
        0xd32ff101a60e7091, 0xeb32f1146f6134d5,
        0xa315f12a34d0f819, 0x9b08f13ffdbfbc5d,
        0x335bf15683b36181, 0x0b46f1434adc25c5,
        0x4361f17d116de909, 0x7b7cf168d802ad4d,
        0x389ed7fcb5e3c1da, 0x0083d7e97c8c859e,
        0x48a4d7d7273d4952, 0x70b9d7c2ee520d16,
        0xd8ead7ab905ed0ca, 0xe0f7d7be5931948e,
        0xa8d0d78002805842, 0x90cdd795cbef1c06,
        0x2f149aa8d942816c, 0x17099abd102dc528,
        0x5f2e9a834b9c09e4, 0x67339a9682f34da0,
        0xcf609afffcff907c, 0xf77d9aea3590d438,
        0xbf5a9ad46e2118f4, 0x87479ac1a74e5cb0,
        0xc4a5bc55caaf3027, 0xfcb8bc4003c07463,
        0xb49fbc7e5871b8af, 0x8c82bc6b911efceb,
        0x24d1bc02ef122137, 0x1cccbc17267d6573,
        0x54ebbc297dcca9bf, 0x6cf6bc3cb4a3edfb,
        0x8d06c450148b7249, 0xb51bc445dde4360d,
        0xfd3cc47b8655fac1, 0xc521c46e4f3abe85,
        0x6d72c40731366359, 0x556fc412f859271d,
        0x1d48c42ca3e8ebd1, 0x2555c4396a87af95,
        0x66b7e2ad0766c302, 0x5eaae2b8ce098746,
        0x168de28695b84b8a, 0x2e90e2935cd70fce,
        0x86c3e2fa22dbd212, 0xbedee2efebb49656,
        0xf6f9e2d1b0055a9a, 0xcee4e2c4796a1ede,
        0x713daff96bc783b4, 0x4920afeca2a8c7f0,
        0x0107afd2f9190b3c, 0x391aafc730764f78,
        0x9149afae4e7a92a4, 0xa954afbb8715d6e0,
        0xe173af85dca41a2c, 0xd96eaf9015cb5e68,
        0x9a8c8904782a32ff, 0xa2918911b14576bb,
        0xeab6892feaf4ba77, 0xd2ab893a239bfe33,
        0x7af889535d9723ef, 0x42e5894694f867ab,
        0x0ac28978cf49ab67, 0x32df896d0626ef23,
        0x5e293551b28502d8, 0x663435447bea469c,
        0x2e13357a205b8a50, 0x160e356fe934ce14,
        0xbe5d3506973813c8, 0x864035135e57578c,
        0xce67352d05e69b40, 0xf67a3538cc89df04,
        0xb59813aca168b393, 0x8d8513b96807f7d7,
        0xc5a2138733b63b1b, 0xfdbf1392fad97f5f,
        0x55ec13fb84d5a283, 0x6df113ee4dbae6c7,
        0x25d613d0160b2a0b, 0x1dcb13c5df646e4f,
        0xa2125ef8cdc9f325, 0x9a0f5eed04a6b761,
        0xd2285ed35f177bad, 0xea355ec696783fe9,
        0x42665eafe874e235, 0x7a7b5eba211ba671,
        0x325c5e847aaa6abd, 0x0a415e91b3c52ef9,
        0x49a37805de24426e, 0x71be7810174b062a,
        0x3999782e4cfacae6, 0x0184783b85958ea2,
        0xa9d77852fb99537e, 0x91ca784732f6173a,
        0xd9ed78796947dbf6, 0xe1f0786ca0289fb2,
        0x3154aef3718177f9, 0x0949aee6b8ee33bd,
        0x416eaed8e35fff71, 0x7973aecd2a30bb35,
        0xd120aea4543c66e9, 0xe93daeb19d5322ad,
        0xa11aae8fc6e2ee61, 0x9907ae9a0f8daa25,
        0xdae5880e626cc6b2, 0xe2f8881bab0382f6,
        0xaadf8825f0b24e3a, 0x92c2883039dd0a7e,
        0x3a91885947d1d7a2, 0x028c884c8ebe93e6,
        0x4aab8872d50f5f2a, 0x72b688671c601b6e,
        0xcd6fc55a0ecd8604, 0xf572c54fc7a2c240,
        0xbd55c5719c130e8c, 0x8548c564557c4ac8,
        0x2d1bc50d2b709714, 0x1506c518e21fd350,
        0x5d21c526b9ae1f9c, 0x653cc53370c15bd8,
        0x26dee3a71d20374f, 0x1ec3e3b2d44f730b,
        0x56e4e38c8ffebfc7, 0x6ef9e3994691fb83,
        0xc6aae3f0389d265f, 0xfeb7e3e5f1f2621b,
        0xb690e3dbaa43aed7, 0x8e8de3ce632cea93,
        0xe27b5ff2d78f0768, 0xda665fe71ee0432c,
        0x92415fd945518fe0, 0xaa5c5fcc8c3ecba4,
        0x020f5fa5f2321678, 0x3a125fb03b5d523c,
        0x72355f8e60ec9ef0, 0x4a285f9ba983dab4,
        0x09ca790fc462b623, 0x31d7791a0d0df267,
        0x79f0792456bc3eab, 0x41ed79319fd37aef,
        0xe9be7958e1dfa733, 0xd1a3794d28b0e377,
        0x9984797373012fbb, 0xa1997966ba6e6bff,
        0x1e40345ba8c3f695, 0x265d344e61acb2d1,
        0x6e7a34703a1d7e1d, 0x56673465f3723a59,
        0xfe34340c8d7ee785, 0xc62934194411a3c1,
        0x8e0e34271fa06f0d, 0xb6133432d6cf2b49,
        0xf5f112a6bb2e47de, 0xcdec12b37241039a,
        0x85cb128d29f0cf56, 0xbdd61298e09f8b12,
        0x158512f19e9356ce, 0x2d9812e457fc128a,
        0x65bf12da0c4dde46, 0x5da212cfc5229a02,
        0xbc526aa3650a05b0, 0x844f6ab6ac6541f4,
        0xcc686a88f7d48d38, 0xf4756a9d3ebbc97c,
        0x5c266af440b714a0, 0x643b6ae189d850e4,
        0x2c1c6adfd2699c28, 0x14016aca1b06d86c,
        0x57e34c5e76e7b4fb, 0x6ffe4c4bbf88f0bf,
        0x27d94c75e4393c73, 0x1fc44c602d567837,
        0xb7974c09535aa5eb, 0x8f8a4c1c9a35e1af,
        0xc7ad4c22c1842d63, 0xffb04c3708eb6927,
        0x4069010a1a46f44d, 0x7874011fd329b009,
        0x3053012188987cc5, 0x084e013441f73881,
        0xa01d015d3ffbe55d, 0x98000148f694a119,
        0xd0270176ad256dd5, 0xe83a0163644a2991,
        0xabd827f709ab4506, 0x93c527e2c0c40142,
        0xdbe227dc9b75cd8e, 0xe3ff27c9521a89ca,
        0x4bac27a02c165416, 0x73b127b5e5791052,
        0x3b96278bbec8dc9e, 0x038b279e77a798da,
        0x6f7d9ba2c3047521, 0x57609bb70a6b3165,
        0x1f479b8951dafda9, 0x275a9b9c98b5b9ed,
        0x8f099bf5e6b96431, 0xb7149be02fd62075,
        0xff339bde7467ecb9, 0xc72e9bcbbd08a8fd,
        0x84ccbd5fd0e9c46a, 0xbcd1bd4a1986802e,
        0xf4f6bd7442374ce2, 0xccebbd618b5808a6,
        0x64b8bd08f554d57a, 0x5ca5bd1d3c3b913e,
        0x1482bd23678a5df2, 0x2c9fbd36aee519b6,
        0x9346f00bbc4884dc, 0xab5bf01e7527c098,
        0xe37cf0202e960c54, 0xdb61f035e7f94810,
        0x7332f05c99f595cc, 0x4b2ff049509ad188,
        0x0308f0770b2b1d44, 0x3b15f062c2445900,
        0x78f7d6f6afa53597, 0x40ead6e366ca71d3,
        0x08cdd6dd3d7bbd1f, 0x30d0d6c8f414f95b,
        0x9883d6a18a182487, 0xa09ed6b4437760c3,
        0xe8b9d68a18c6ac0f, 0xd0a4d69fd1a9e84b
    ]
];

// transmute slice of 8 u8 values to one u64 (drop the length)
macro_rules! slice_to_long {
    ($curVec:expr) => {
        {
            unsafe {
                let (tmp, _) : (*const u64, usize) = mem::transmute(&$curVec);
                *tmp
            }
        }
    }
}

pub fn crc64(crc: u64, data: &[u8]) -> u64 {
    let mut crc = crc;
    let mut len = data.len();
    let mut offset = 0usize;

    while len >= 8 {
        crc ^= slice_to_long!(data[offset..(offset+8)]);
        crc = CRC64_TAB[7][(crc & 0xff) as usize] ^
            CRC64_TAB[6][((crc >> 8) & 0xff) as usize] ^
            CRC64_TAB[5][((crc >> 16) & 0xff) as usize] ^
            CRC64_TAB[4][((crc >> 24) & 0xff) as usize] ^
            CRC64_TAB[3][((crc >> 32) & 0xff) as usize] ^
            CRC64_TAB[2][((crc >> 40) & 0xff) as usize] ^
            CRC64_TAB[1][((crc >> 48) & 0xff) as usize] ^
            CRC64_TAB[0][(crc >> 56) as usize];

        offset += 8;
        len -= 8;
    }

    while len > 0 {
        crc = CRC64_TAB[0][((crc ^ data[offset] as u64) & 0xff) as usize] ^ (crc >> 8);
        offset += 1;
        len -= 1;
    }

    crc
}