xref: /llvm-project/llvm/unittests/Support/SipHashTest.cpp (revision 61069bd5a3954076018ed30c77094d6259bcbc90)
1 //===- llvm/unittest/Support/SipHashTest.cpp ------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "llvm/Support/SipHash.h"
10 #include "llvm/ADT/ArrayRef.h"
11 #include "gtest/gtest.h"
12 #include <string.h>
13 
14 using namespace llvm;
15 
16 namespace {
17 
18 // Tests from the SipHash reference implementation:
19 //   https://github.com/veorq/SipHash
20 // from test.c and vectors.h, with the latter vectors at the end of the file,
21 // forward-declared here.
22 extern const uint8_t ExpectedSipHash64[64][8];
23 extern const uint8_t ExpectedSipHash128[64][16];
24 
TEST(SipHashTest,SipHash_2_4_64)25 TEST(SipHashTest, SipHash_2_4_64) {
26   uint8_t K[16];
27   for (size_t KI = 0; KI < sizeof(K); ++KI)
28     K[KI] = KI;
29 
30   uint8_t In[64], Out[8];
31   for (size_t InLen = 0; InLen < sizeof(In); ++InLen) {
32     In[InLen] = InLen;
33     getSipHash_2_4_64(ArrayRef(In, InLen), K, Out);
34     for (size_t I = 0; I < sizeof(Out); ++I)
35       EXPECT_EQ(ExpectedSipHash64[InLen][I], Out[I]);
36   }
37 }
38 
TEST(SipHashTest,SipHash_2_4_128)39 TEST(SipHashTest, SipHash_2_4_128) {
40   uint8_t K[16];
41   for (size_t KI = 0; KI < sizeof(K); ++KI)
42     K[KI] = KI;
43 
44   uint8_t In[64], Out[16];
45   for (size_t InLen = 0; InLen < sizeof(In); ++InLen) {
46     In[InLen] = InLen;
47     getSipHash_2_4_128(ArrayRef(In, InLen), K, Out);
48     for (size_t I = 0; I < sizeof(Out); ++I)
49       EXPECT_EQ(ExpectedSipHash128[InLen][I], Out[I]);
50   }
51 }
52 
53 // Tests for the ptrauth-specific SipHash wrapper.
TEST(SipHashTest,PointerAuthSipHash)54 TEST(SipHashTest, PointerAuthSipHash) {
55   // Test some basic cases.
56   EXPECT_EQ(0xE793, getPointerAuthStableSipHash(""));
57   EXPECT_EQ(0xF468, getPointerAuthStableSipHash("strlen"));
58   EXPECT_EQ(0x2D15, getPointerAuthStableSipHash("_ZN1 ind; f"));
59 
60   // Test some known strings that are already enshrined in the ABI.
61   EXPECT_EQ(0x6AE1, getPointerAuthStableSipHash("isa"));
62   EXPECT_EQ(0xB5AB, getPointerAuthStableSipHash("objc_class:superclass"));
63   EXPECT_EQ(0xC0BB, getPointerAuthStableSipHash("block_descriptor"));
64   EXPECT_EQ(0xC310, getPointerAuthStableSipHash("method_list_t"));
65 
66   // Test limit cases where we differ from naive truncations from 64-bit hashes.
67   EXPECT_EQ(1, getPointerAuthStableSipHash("_Zptrkvttf"));
68   EXPECT_EQ(0xFFFF, getPointerAuthStableSipHash("_Zaflhllod"));
69 }
70 
71 // Below are the unmodified expected outputs from the reference vectors.h.
72 
73 const uint8_t ExpectedSipHash64[64][8] = {
74     {
75         0x31,
76         0x0e,
77         0x0e,
78         0xdd,
79         0x47,
80         0xdb,
81         0x6f,
82         0x72,
83     },
84     {
85         0xfd,
86         0x67,
87         0xdc,
88         0x93,
89         0xc5,
90         0x39,
91         0xf8,
92         0x74,
93     },
94     {
95         0x5a,
96         0x4f,
97         0xa9,
98         0xd9,
99         0x09,
100         0x80,
101         0x6c,
102         0x0d,
103     },
104     {
105         0x2d,
106         0x7e,
107         0xfb,
108         0xd7,
109         0x96,
110         0x66,
111         0x67,
112         0x85,
113     },
114     {
115         0xb7,
116         0x87,
117         0x71,
118         0x27,
119         0xe0,
120         0x94,
121         0x27,
122         0xcf,
123     },
124     {
125         0x8d,
126         0xa6,
127         0x99,
128         0xcd,
129         0x64,
130         0x55,
131         0x76,
132         0x18,
133     },
134     {
135         0xce,
136         0xe3,
137         0xfe,
138         0x58,
139         0x6e,
140         0x46,
141         0xc9,
142         0xcb,
143     },
144     {
145         0x37,
146         0xd1,
147         0x01,
148         0x8b,
149         0xf5,
150         0x00,
151         0x02,
152         0xab,
153     },
154     {
155         0x62,
156         0x24,
157         0x93,
158         0x9a,
159         0x79,
160         0xf5,
161         0xf5,
162         0x93,
163     },
164     {
165         0xb0,
166         0xe4,
167         0xa9,
168         0x0b,
169         0xdf,
170         0x82,
171         0x00,
172         0x9e,
173     },
174     {
175         0xf3,
176         0xb9,
177         0xdd,
178         0x94,
179         0xc5,
180         0xbb,
181         0x5d,
182         0x7a,
183     },
184     {
185         0xa7,
186         0xad,
187         0x6b,
188         0x22,
189         0x46,
190         0x2f,
191         0xb3,
192         0xf4,
193     },
194     {
195         0xfb,
196         0xe5,
197         0x0e,
198         0x86,
199         0xbc,
200         0x8f,
201         0x1e,
202         0x75,
203     },
204     {
205         0x90,
206         0x3d,
207         0x84,
208         0xc0,
209         0x27,
210         0x56,
211         0xea,
212         0x14,
213     },
214     {
215         0xee,
216         0xf2,
217         0x7a,
218         0x8e,
219         0x90,
220         0xca,
221         0x23,
222         0xf7,
223     },
224     {
225         0xe5,
226         0x45,
227         0xbe,
228         0x49,
229         0x61,
230         0xca,
231         0x29,
232         0xa1,
233     },
234     {
235         0xdb,
236         0x9b,
237         0xc2,
238         0x57,
239         0x7f,
240         0xcc,
241         0x2a,
242         0x3f,
243     },
244     {
245         0x94,
246         0x47,
247         0xbe,
248         0x2c,
249         0xf5,
250         0xe9,
251         0x9a,
252         0x69,
253     },
254     {
255         0x9c,
256         0xd3,
257         0x8d,
258         0x96,
259         0xf0,
260         0xb3,
261         0xc1,
262         0x4b,
263     },
264     {
265         0xbd,
266         0x61,
267         0x79,
268         0xa7,
269         0x1d,
270         0xc9,
271         0x6d,
272         0xbb,
273     },
274     {
275         0x98,
276         0xee,
277         0xa2,
278         0x1a,
279         0xf2,
280         0x5c,
281         0xd6,
282         0xbe,
283     },
284     {
285         0xc7,
286         0x67,
287         0x3b,
288         0x2e,
289         0xb0,
290         0xcb,
291         0xf2,
292         0xd0,
293     },
294     {
295         0x88,
296         0x3e,
297         0xa3,
298         0xe3,
299         0x95,
300         0x67,
301         0x53,
302         0x93,
303     },
304     {
305         0xc8,
306         0xce,
307         0x5c,
308         0xcd,
309         0x8c,
310         0x03,
311         0x0c,
312         0xa8,
313     },
314     {
315         0x94,
316         0xaf,
317         0x49,
318         0xf6,
319         0xc6,
320         0x50,
321         0xad,
322         0xb8,
323     },
324     {
325         0xea,
326         0xb8,
327         0x85,
328         0x8a,
329         0xde,
330         0x92,
331         0xe1,
332         0xbc,
333     },
334     {
335         0xf3,
336         0x15,
337         0xbb,
338         0x5b,
339         0xb8,
340         0x35,
341         0xd8,
342         0x17,
343     },
344     {
345         0xad,
346         0xcf,
347         0x6b,
348         0x07,
349         0x63,
350         0x61,
351         0x2e,
352         0x2f,
353     },
354     {
355         0xa5,
356         0xc9,
357         0x1d,
358         0xa7,
359         0xac,
360         0xaa,
361         0x4d,
362         0xde,
363     },
364     {
365         0x71,
366         0x65,
367         0x95,
368         0x87,
369         0x66,
370         0x50,
371         0xa2,
372         0xa6,
373     },
374     {
375         0x28,
376         0xef,
377         0x49,
378         0x5c,
379         0x53,
380         0xa3,
381         0x87,
382         0xad,
383     },
384     {
385         0x42,
386         0xc3,
387         0x41,
388         0xd8,
389         0xfa,
390         0x92,
391         0xd8,
392         0x32,
393     },
394     {
395         0xce,
396         0x7c,
397         0xf2,
398         0x72,
399         0x2f,
400         0x51,
401         0x27,
402         0x71,
403     },
404     {
405         0xe3,
406         0x78,
407         0x59,
408         0xf9,
409         0x46,
410         0x23,
411         0xf3,
412         0xa7,
413     },
414     {
415         0x38,
416         0x12,
417         0x05,
418         0xbb,
419         0x1a,
420         0xb0,
421         0xe0,
422         0x12,
423     },
424     {
425         0xae,
426         0x97,
427         0xa1,
428         0x0f,
429         0xd4,
430         0x34,
431         0xe0,
432         0x15,
433     },
434     {
435         0xb4,
436         0xa3,
437         0x15,
438         0x08,
439         0xbe,
440         0xff,
441         0x4d,
442         0x31,
443     },
444     {
445         0x81,
446         0x39,
447         0x62,
448         0x29,
449         0xf0,
450         0x90,
451         0x79,
452         0x02,
453     },
454     {
455         0x4d,
456         0x0c,
457         0xf4,
458         0x9e,
459         0xe5,
460         0xd4,
461         0xdc,
462         0xca,
463     },
464     {
465         0x5c,
466         0x73,
467         0x33,
468         0x6a,
469         0x76,
470         0xd8,
471         0xbf,
472         0x9a,
473     },
474     {
475         0xd0,
476         0xa7,
477         0x04,
478         0x53,
479         0x6b,
480         0xa9,
481         0x3e,
482         0x0e,
483     },
484     {
485         0x92,
486         0x59,
487         0x58,
488         0xfc,
489         0xd6,
490         0x42,
491         0x0c,
492         0xad,
493     },
494     {
495         0xa9,
496         0x15,
497         0xc2,
498         0x9b,
499         0xc8,
500         0x06,
501         0x73,
502         0x18,
503     },
504     {
505         0x95,
506         0x2b,
507         0x79,
508         0xf3,
509         0xbc,
510         0x0a,
511         0xa6,
512         0xd4,
513     },
514     {
515         0xf2,
516         0x1d,
517         0xf2,
518         0xe4,
519         0x1d,
520         0x45,
521         0x35,
522         0xf9,
523     },
524     {
525         0x87,
526         0x57,
527         0x75,
528         0x19,
529         0x04,
530         0x8f,
531         0x53,
532         0xa9,
533     },
534     {
535         0x10,
536         0xa5,
537         0x6c,
538         0xf5,
539         0xdf,
540         0xcd,
541         0x9a,
542         0xdb,
543     },
544     {
545         0xeb,
546         0x75,
547         0x09,
548         0x5c,
549         0xcd,
550         0x98,
551         0x6c,
552         0xd0,
553     },
554     {
555         0x51,
556         0xa9,
557         0xcb,
558         0x9e,
559         0xcb,
560         0xa3,
561         0x12,
562         0xe6,
563     },
564     {
565         0x96,
566         0xaf,
567         0xad,
568         0xfc,
569         0x2c,
570         0xe6,
571         0x66,
572         0xc7,
573     },
574     {
575         0x72,
576         0xfe,
577         0x52,
578         0x97,
579         0x5a,
580         0x43,
581         0x64,
582         0xee,
583     },
584     {
585         0x5a,
586         0x16,
587         0x45,
588         0xb2,
589         0x76,
590         0xd5,
591         0x92,
592         0xa1,
593     },
594     {
595         0xb2,
596         0x74,
597         0xcb,
598         0x8e,
599         0xbf,
600         0x87,
601         0x87,
602         0x0a,
603     },
604     {
605         0x6f,
606         0x9b,
607         0xb4,
608         0x20,
609         0x3d,
610         0xe7,
611         0xb3,
612         0x81,
613     },
614     {
615         0xea,
616         0xec,
617         0xb2,
618         0xa3,
619         0x0b,
620         0x22,
621         0xa8,
622         0x7f,
623     },
624     {
625         0x99,
626         0x24,
627         0xa4,
628         0x3c,
629         0xc1,
630         0x31,
631         0x57,
632         0x24,
633     },
634     {
635         0xbd,
636         0x83,
637         0x8d,
638         0x3a,
639         0xaf,
640         0xbf,
641         0x8d,
642         0xb7,
643     },
644     {
645         0x0b,
646         0x1a,
647         0x2a,
648         0x32,
649         0x65,
650         0xd5,
651         0x1a,
652         0xea,
653     },
654     {
655         0x13,
656         0x50,
657         0x79,
658         0xa3,
659         0x23,
660         0x1c,
661         0xe6,
662         0x60,
663     },
664     {
665         0x93,
666         0x2b,
667         0x28,
668         0x46,
669         0xe4,
670         0xd7,
671         0x06,
672         0x66,
673     },
674     {
675         0xe1,
676         0x91,
677         0x5f,
678         0x5c,
679         0xb1,
680         0xec,
681         0xa4,
682         0x6c,
683     },
684     {
685         0xf3,
686         0x25,
687         0x96,
688         0x5c,
689         0xa1,
690         0x6d,
691         0x62,
692         0x9f,
693     },
694     {
695         0x57,
696         0x5f,
697         0xf2,
698         0x8e,
699         0x60,
700         0x38,
701         0x1b,
702         0xe5,
703     },
704     {
705         0x72,
706         0x45,
707         0x06,
708         0xeb,
709         0x4c,
710         0x32,
711         0x8a,
712         0x95,
713     },
714 };
715 
716 const uint8_t ExpectedSipHash128[64][16] = {
717     {
718         0xa3,
719         0x81,
720         0x7f,
721         0x04,
722         0xba,
723         0x25,
724         0xa8,
725         0xe6,
726         0x6d,
727         0xf6,
728         0x72,
729         0x14,
730         0xc7,
731         0x55,
732         0x02,
733         0x93,
734     },
735     {
736         0xda,
737         0x87,
738         0xc1,
739         0xd8,
740         0x6b,
741         0x99,
742         0xaf,
743         0x44,
744         0x34,
745         0x76,
746         0x59,
747         0x11,
748         0x9b,
749         0x22,
750         0xfc,
751         0x45,
752     },
753     {
754         0x81,
755         0x77,
756         0x22,
757         0x8d,
758         0xa4,
759         0xa4,
760         0x5d,
761         0xc7,
762         0xfc,
763         0xa3,
764         0x8b,
765         0xde,
766         0xf6,
767         0x0a,
768         0xff,
769         0xe4,
770     },
771     {
772         0x9c,
773         0x70,
774         0xb6,
775         0x0c,
776         0x52,
777         0x67,
778         0xa9,
779         0x4e,
780         0x5f,
781         0x33,
782         0xb6,
783         0xb0,
784         0x29,
785         0x85,
786         0xed,
787         0x51,
788     },
789     {
790         0xf8,
791         0x81,
792         0x64,
793         0xc1,
794         0x2d,
795         0x9c,
796         0x8f,
797         0xaf,
798         0x7d,
799         0x0f,
800         0x6e,
801         0x7c,
802         0x7b,
803         0xcd,
804         0x55,
805         0x79,
806     },
807     {
808         0x13,
809         0x68,
810         0x87,
811         0x59,
812         0x80,
813         0x77,
814         0x6f,
815         0x88,
816         0x54,
817         0x52,
818         0x7a,
819         0x07,
820         0x69,
821         0x0e,
822         0x96,
823         0x27,
824     },
825     {
826         0x14,
827         0xee,
828         0xca,
829         0x33,
830         0x8b,
831         0x20,
832         0x86,
833         0x13,
834         0x48,
835         0x5e,
836         0xa0,
837         0x30,
838         0x8f,
839         0xd7,
840         0xa1,
841         0x5e,
842     },
843     {
844         0xa1,
845         0xf1,
846         0xeb,
847         0xbe,
848         0xd8,
849         0xdb,
850         0xc1,
851         0x53,
852         0xc0,
853         0xb8,
854         0x4a,
855         0xa6,
856         0x1f,
857         0xf0,
858         0x82,
859         0x39,
860     },
861     {
862         0x3b,
863         0x62,
864         0xa9,
865         0xba,
866         0x62,
867         0x58,
868         0xf5,
869         0x61,
870         0x0f,
871         0x83,
872         0xe2,
873         0x64,
874         0xf3,
875         0x14,
876         0x97,
877         0xb4,
878     },
879     {
880         0x26,
881         0x44,
882         0x99,
883         0x06,
884         0x0a,
885         0xd9,
886         0xba,
887         0xab,
888         0xc4,
889         0x7f,
890         0x8b,
891         0x02,
892         0xbb,
893         0x6d,
894         0x71,
895         0xed,
896     },
897     {
898         0x00,
899         0x11,
900         0x0d,
901         0xc3,
902         0x78,
903         0x14,
904         0x69,
905         0x56,
906         0xc9,
907         0x54,
908         0x47,
909         0xd3,
910         0xf3,
911         0xd0,
912         0xfb,
913         0xba,
914     },
915     {
916         0x01,
917         0x51,
918         0xc5,
919         0x68,
920         0x38,
921         0x6b,
922         0x66,
923         0x77,
924         0xa2,
925         0xb4,
926         0xdc,
927         0x6f,
928         0x81,
929         0xe5,
930         0xdc,
931         0x18,
932     },
933     {
934         0xd6,
935         0x26,
936         0xb2,
937         0x66,
938         0x90,
939         0x5e,
940         0xf3,
941         0x58,
942         0x82,
943         0x63,
944         0x4d,
945         0xf6,
946         0x85,
947         0x32,
948         0xc1,
949         0x25,
950     },
951     {
952         0x98,
953         0x69,
954         0xe2,
955         0x47,
956         0xe9,
957         0xc0,
958         0x8b,
959         0x10,
960         0xd0,
961         0x29,
962         0x93,
963         0x4f,
964         0xc4,
965         0xb9,
966         0x52,
967         0xf7,
968     },
969     {
970         0x31,
971         0xfc,
972         0xef,
973         0xac,
974         0x66,
975         0xd7,
976         0xde,
977         0x9c,
978         0x7e,
979         0xc7,
980         0x48,
981         0x5f,
982         0xe4,
983         0x49,
984         0x49,
985         0x02,
986     },
987     {
988         0x54,
989         0x93,
990         0xe9,
991         0x99,
992         0x33,
993         0xb0,
994         0xa8,
995         0x11,
996         0x7e,
997         0x08,
998         0xec,
999         0x0f,
1000         0x97,
1001         0xcf,
1002         0xc3,
1003         0xd9,
1004     },
1005     {
1006         0x6e,
1007         0xe2,
1008         0xa4,
1009         0xca,
1010         0x67,
1011         0xb0,
1012         0x54,
1013         0xbb,
1014         0xfd,
1015         0x33,
1016         0x15,
1017         0xbf,
1018         0x85,
1019         0x23,
1020         0x05,
1021         0x77,
1022     },
1023     {
1024         0x47,
1025         0x3d,
1026         0x06,
1027         0xe8,
1028         0x73,
1029         0x8d,
1030         0xb8,
1031         0x98,
1032         0x54,
1033         0xc0,
1034         0x66,
1035         0xc4,
1036         0x7a,
1037         0xe4,
1038         0x77,
1039         0x40,
1040     },
1041     {
1042         0xa4,
1043         0x26,
1044         0xe5,
1045         0xe4,
1046         0x23,
1047         0xbf,
1048         0x48,
1049         0x85,
1050         0x29,
1051         0x4d,
1052         0xa4,
1053         0x81,
1054         0xfe,
1055         0xae,
1056         0xf7,
1057         0x23,
1058     },
1059     {
1060         0x78,
1061         0x01,
1062         0x77,
1063         0x31,
1064         0xcf,
1065         0x65,
1066         0xfa,
1067         0xb0,
1068         0x74,
1069         0xd5,
1070         0x20,
1071         0x89,
1072         0x52,
1073         0x51,
1074         0x2e,
1075         0xb1,
1076     },
1077     {
1078         0x9e,
1079         0x25,
1080         0xfc,
1081         0x83,
1082         0x3f,
1083         0x22,
1084         0x90,
1085         0x73,
1086         0x3e,
1087         0x93,
1088         0x44,
1089         0xa5,
1090         0xe8,
1091         0x38,
1092         0x39,
1093         0xeb,
1094     },
1095     {
1096         0x56,
1097         0x8e,
1098         0x49,
1099         0x5a,
1100         0xbe,
1101         0x52,
1102         0x5a,
1103         0x21,
1104         0x8a,
1105         0x22,
1106         0x14,
1107         0xcd,
1108         0x3e,
1109         0x07,
1110         0x1d,
1111         0x12,
1112     },
1113     {
1114         0x4a,
1115         0x29,
1116         0xb5,
1117         0x45,
1118         0x52,
1119         0xd1,
1120         0x6b,
1121         0x9a,
1122         0x46,
1123         0x9c,
1124         0x10,
1125         0x52,
1126         0x8e,
1127         0xff,
1128         0x0a,
1129         0xae,
1130     },
1131     {
1132         0xc9,
1133         0xd1,
1134         0x84,
1135         0xdd,
1136         0xd5,
1137         0xa9,
1138         0xf5,
1139         0xe0,
1140         0xcf,
1141         0x8c,
1142         0xe2,
1143         0x9a,
1144         0x9a,
1145         0xbf,
1146         0x69,
1147         0x1c,
1148     },
1149     {
1150         0x2d,
1151         0xb4,
1152         0x79,
1153         0xae,
1154         0x78,
1155         0xbd,
1156         0x50,
1157         0xd8,
1158         0x88,
1159         0x2a,
1160         0x8a,
1161         0x17,
1162         0x8a,
1163         0x61,
1164         0x32,
1165         0xad,
1166     },
1167     {
1168         0x8e,
1169         0xce,
1170         0x5f,
1171         0x04,
1172         0x2d,
1173         0x5e,
1174         0x44,
1175         0x7b,
1176         0x50,
1177         0x51,
1178         0xb9,
1179         0xea,
1180         0xcb,
1181         0x8d,
1182         0x8f,
1183         0x6f,
1184     },
1185     {
1186         0x9c,
1187         0x0b,
1188         0x53,
1189         0xb4,
1190         0xb3,
1191         0xc3,
1192         0x07,
1193         0xe8,
1194         0x7e,
1195         0xae,
1196         0xe0,
1197         0x86,
1198         0x78,
1199         0x14,
1200         0x1f,
1201         0x66,
1202     },
1203     {
1204         0xab,
1205         0xf2,
1206         0x48,
1207         0xaf,
1208         0x69,
1209         0xa6,
1210         0xea,
1211         0xe4,
1212         0xbf,
1213         0xd3,
1214         0xeb,
1215         0x2f,
1216         0x12,
1217         0x9e,
1218         0xeb,
1219         0x94,
1220     },
1221     {
1222         0x06,
1223         0x64,
1224         0xda,
1225         0x16,
1226         0x68,
1227         0x57,
1228         0x4b,
1229         0x88,
1230         0xb9,
1231         0x35,
1232         0xf3,
1233         0x02,
1234         0x73,
1235         0x58,
1236         0xae,
1237         0xf4,
1238     },
1239     {
1240         0xaa,
1241         0x4b,
1242         0x9d,
1243         0xc4,
1244         0xbf,
1245         0x33,
1246         0x7d,
1247         0xe9,
1248         0x0c,
1249         0xd4,
1250         0xfd,
1251         0x3c,
1252         0x46,
1253         0x7c,
1254         0x6a,
1255         0xb7,
1256     },
1257     {
1258         0xea,
1259         0x5c,
1260         0x7f,
1261         0x47,
1262         0x1f,
1263         0xaf,
1264         0x6b,
1265         0xde,
1266         0x2b,
1267         0x1a,
1268         0xd7,
1269         0xd4,
1270         0x68,
1271         0x6d,
1272         0x22,
1273         0x87,
1274     },
1275     {
1276         0x29,
1277         0x39,
1278         0xb0,
1279         0x18,
1280         0x32,
1281         0x23,
1282         0xfa,
1283         0xfc,
1284         0x17,
1285         0x23,
1286         0xde,
1287         0x4f,
1288         0x52,
1289         0xc4,
1290         0x3d,
1291         0x35,
1292     },
1293     {
1294         0x7c,
1295         0x39,
1296         0x56,
1297         0xca,
1298         0x5e,
1299         0xea,
1300         0xfc,
1301         0x3e,
1302         0x36,
1303         0x3e,
1304         0x9d,
1305         0x55,
1306         0x65,
1307         0x46,
1308         0xeb,
1309         0x68,
1310     },
1311     {
1312         0x77,
1313         0xc6,
1314         0x07,
1315         0x71,
1316         0x46,
1317         0xf0,
1318         0x1c,
1319         0x32,
1320         0xb6,
1321         0xb6,
1322         0x9d,
1323         0x5f,
1324         0x4e,
1325         0xa9,
1326         0xff,
1327         0xcf,
1328     },
1329     {
1330         0x37,
1331         0xa6,
1332         0x98,
1333         0x6c,
1334         0xb8,
1335         0x84,
1336         0x7e,
1337         0xdf,
1338         0x09,
1339         0x25,
1340         0xf0,
1341         0xf1,
1342         0x30,
1343         0x9b,
1344         0x54,
1345         0xde,
1346     },
1347     {
1348         0xa7,
1349         0x05,
1350         0xf0,
1351         0xe6,
1352         0x9d,
1353         0xa9,
1354         0xa8,
1355         0xf9,
1356         0x07,
1357         0x24,
1358         0x1a,
1359         0x2e,
1360         0x92,
1361         0x3c,
1362         0x8c,
1363         0xc8,
1364     },
1365     {
1366         0x3d,
1367         0xc4,
1368         0x7d,
1369         0x1f,
1370         0x29,
1371         0xc4,
1372         0x48,
1373         0x46,
1374         0x1e,
1375         0x9e,
1376         0x76,
1377         0xed,
1378         0x90,
1379         0x4f,
1380         0x67,
1381         0x11,
1382     },
1383     {
1384         0x0d,
1385         0x62,
1386         0xbf,
1387         0x01,
1388         0xe6,
1389         0xfc,
1390         0x0e,
1391         0x1a,
1392         0x0d,
1393         0x3c,
1394         0x47,
1395         0x51,
1396         0xc5,
1397         0xd3,
1398         0x69,
1399         0x2b,
1400     },
1401     {
1402         0x8c,
1403         0x03,
1404         0x46,
1405         0x8b,
1406         0xca,
1407         0x7c,
1408         0x66,
1409         0x9e,
1410         0xe4,
1411         0xfd,
1412         0x5e,
1413         0x08,
1414         0x4b,
1415         0xbe,
1416         0xe7,
1417         0xb5,
1418     },
1419     {
1420         0x52,
1421         0x8a,
1422         0x5b,
1423         0xb9,
1424         0x3b,
1425         0xaf,
1426         0x2c,
1427         0x9c,
1428         0x44,
1429         0x73,
1430         0xcc,
1431         0xe5,
1432         0xd0,
1433         0xd2,
1434         0x2b,
1435         0xd9,
1436     },
1437     {
1438         0xdf,
1439         0x6a,
1440         0x30,
1441         0x1e,
1442         0x95,
1443         0xc9,
1444         0x5d,
1445         0xad,
1446         0x97,
1447         0xae,
1448         0x0c,
1449         0xc8,
1450         0xc6,
1451         0x91,
1452         0x3b,
1453         0xd8,
1454     },
1455     {
1456         0x80,
1457         0x11,
1458         0x89,
1459         0x90,
1460         0x2c,
1461         0x85,
1462         0x7f,
1463         0x39,
1464         0xe7,
1465         0x35,
1466         0x91,
1467         0x28,
1468         0x5e,
1469         0x70,
1470         0xb6,
1471         0xdb,
1472     },
1473     {
1474         0xe6,
1475         0x17,
1476         0x34,
1477         0x6a,
1478         0xc9,
1479         0xc2,
1480         0x31,
1481         0xbb,
1482         0x36,
1483         0x50,
1484         0xae,
1485         0x34,
1486         0xcc,
1487         0xca,
1488         0x0c,
1489         0x5b,
1490     },
1491     {
1492         0x27,
1493         0xd9,
1494         0x34,
1495         0x37,
1496         0xef,
1497         0xb7,
1498         0x21,
1499         0xaa,
1500         0x40,
1501         0x18,
1502         0x21,
1503         0xdc,
1504         0xec,
1505         0x5a,
1506         0xdf,
1507         0x89,
1508     },
1509     {
1510         0x89,
1511         0x23,
1512         0x7d,
1513         0x9d,
1514         0xed,
1515         0x9c,
1516         0x5e,
1517         0x78,
1518         0xd8,
1519         0xb1,
1520         0xc9,
1521         0xb1,
1522         0x66,
1523         0xcc,
1524         0x73,
1525         0x42,
1526     },
1527     {
1528         0x4a,
1529         0x6d,
1530         0x80,
1531         0x91,
1532         0xbf,
1533         0x5e,
1534         0x7d,
1535         0x65,
1536         0x11,
1537         0x89,
1538         0xfa,
1539         0x94,
1540         0xa2,
1541         0x50,
1542         0xb1,
1543         0x4c,
1544     },
1545     {
1546         0x0e,
1547         0x33,
1548         0xf9,
1549         0x60,
1550         0x55,
1551         0xe7,
1552         0xae,
1553         0x89,
1554         0x3f,
1555         0xfc,
1556         0x0e,
1557         0x3d,
1558         0xcf,
1559         0x49,
1560         0x29,
1561         0x02,
1562     },
1563     {
1564         0xe6,
1565         0x1c,
1566         0x43,
1567         0x2b,
1568         0x72,
1569         0x0b,
1570         0x19,
1571         0xd1,
1572         0x8e,
1573         0xc8,
1574         0xd8,
1575         0x4b,
1576         0xdc,
1577         0x63,
1578         0x15,
1579         0x1b,
1580     },
1581     {
1582         0xf7,
1583         0xe5,
1584         0xae,
1585         0xf5,
1586         0x49,
1587         0xf7,
1588         0x82,
1589         0xcf,
1590         0x37,
1591         0x90,
1592         0x55,
1593         0xa6,
1594         0x08,
1595         0x26,
1596         0x9b,
1597         0x16,
1598     },
1599     {
1600         0x43,
1601         0x8d,
1602         0x03,
1603         0x0f,
1604         0xd0,
1605         0xb7,
1606         0xa5,
1607         0x4f,
1608         0xa8,
1609         0x37,
1610         0xf2,
1611         0xad,
1612         0x20,
1613         0x1a,
1614         0x64,
1615         0x03,
1616     },
1617     {
1618         0xa5,
1619         0x90,
1620         0xd3,
1621         0xee,
1622         0x4f,
1623         0xbf,
1624         0x04,
1625         0xe3,
1626         0x24,
1627         0x7e,
1628         0x0d,
1629         0x27,
1630         0xf2,
1631         0x86,
1632         0x42,
1633         0x3f,
1634     },
1635     {
1636         0x5f,
1637         0xe2,
1638         0xc1,
1639         0xa1,
1640         0x72,
1641         0xfe,
1642         0x93,
1643         0xc4,
1644         0xb1,
1645         0x5c,
1646         0xd3,
1647         0x7c,
1648         0xae,
1649         0xf9,
1650         0xf5,
1651         0x38,
1652     },
1653     {
1654         0x2c,
1655         0x97,
1656         0x32,
1657         0x5c,
1658         0xbd,
1659         0x06,
1660         0xb3,
1661         0x6e,
1662         0xb2,
1663         0x13,
1664         0x3d,
1665         0xd0,
1666         0x8b,
1667         0x3a,
1668         0x01,
1669         0x7c,
1670     },
1671     {
1672         0x92,
1673         0xc8,
1674         0x14,
1675         0x22,
1676         0x7a,
1677         0x6b,
1678         0xca,
1679         0x94,
1680         0x9f,
1681         0xf0,
1682         0x65,
1683         0x9f,
1684         0x00,
1685         0x2a,
1686         0xd3,
1687         0x9e,
1688     },
1689     {
1690         0xdc,
1691         0xe8,
1692         0x50,
1693         0x11,
1694         0x0b,
1695         0xd8,
1696         0x32,
1697         0x8c,
1698         0xfb,
1699         0xd5,
1700         0x08,
1701         0x41,
1702         0xd6,
1703         0x91,
1704         0x1d,
1705         0x87,
1706     },
1707     {
1708         0x67,
1709         0xf1,
1710         0x49,
1711         0x84,
1712         0xc7,
1713         0xda,
1714         0x79,
1715         0x12,
1716         0x48,
1717         0xe3,
1718         0x2b,
1719         0xb5,
1720         0x92,
1721         0x25,
1722         0x83,
1723         0xda,
1724     },
1725     {
1726         0x19,
1727         0x38,
1728         0xf2,
1729         0xcf,
1730         0x72,
1731         0xd5,
1732         0x4e,
1733         0xe9,
1734         0x7e,
1735         0x94,
1736         0x16,
1737         0x6f,
1738         0xa9,
1739         0x1d,
1740         0x2a,
1741         0x36,
1742     },
1743     {
1744         0x74,
1745         0x48,
1746         0x1e,
1747         0x96,
1748         0x46,
1749         0xed,
1750         0x49,
1751         0xfe,
1752         0x0f,
1753         0x62,
1754         0x24,
1755         0x30,
1756         0x16,
1757         0x04,
1758         0x69,
1759         0x8e,
1760     },
1761     {
1762         0x57,
1763         0xfc,
1764         0xa5,
1765         0xde,
1766         0x98,
1767         0xa9,
1768         0xd6,
1769         0xd8,
1770         0x00,
1771         0x64,
1772         0x38,
1773         0xd0,
1774         0x58,
1775         0x3d,
1776         0x8a,
1777         0x1d,
1778     },
1779     {
1780         0x9f,
1781         0xec,
1782         0xde,
1783         0x1c,
1784         0xef,
1785         0xdc,
1786         0x1c,
1787         0xbe,
1788         0xd4,
1789         0x76,
1790         0x36,
1791         0x74,
1792         0xd9,
1793         0x57,
1794         0x53,
1795         0x59,
1796     },
1797     {
1798         0xe3,
1799         0x04,
1800         0x0c,
1801         0x00,
1802         0xeb,
1803         0x28,
1804         0xf1,
1805         0x53,
1806         0x66,
1807         0xca,
1808         0x73,
1809         0xcb,
1810         0xd8,
1811         0x72,
1812         0xe7,
1813         0x40,
1814     },
1815     {
1816         0x76,
1817         0x97,
1818         0x00,
1819         0x9a,
1820         0x6a,
1821         0x83,
1822         0x1d,
1823         0xfe,
1824         0xcc,
1825         0xa9,
1826         0x1c,
1827         0x59,
1828         0x93,
1829         0x67,
1830         0x0f,
1831         0x7a,
1832     },
1833     {
1834         0x58,
1835         0x53,
1836         0x54,
1837         0x23,
1838         0x21,
1839         0xf5,
1840         0x67,
1841         0xa0,
1842         0x05,
1843         0xd5,
1844         0x47,
1845         0xa4,
1846         0xf0,
1847         0x47,
1848         0x59,
1849         0xbd,
1850     },
1851     {
1852         0x51,
1853         0x50,
1854         0xd1,
1855         0x77,
1856         0x2f,
1857         0x50,
1858         0x83,
1859         0x4a,
1860         0x50,
1861         0x3e,
1862         0x06,
1863         0x9a,
1864         0x97,
1865         0x3f,
1866         0xbd,
1867         0x7c,
1868     },
1869 };
1870 
1871 } // end anonymous namespace
1872