1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (C) 2023 Oracle.  All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
5 */
6#include "xfs.h"
7#include "xfs_fs.h"
8#include "xfs_shared.h"
9#include "xfs_format.h"
10#include "xfs_da_format.h"
11#include "xfs_da_btree.h"
12#include "xfs_trans_resv.h"
13#include "xfs_mount.h"
14#include "xfs_dir2_priv.h"
15#include "xfs_dahash_test.h"
16
17/* 4096 random bytes */
18static uint8_t __initdata __attribute__((__aligned__(8))) test_buf[] =
19{
20	0x5b, 0x85, 0x21, 0xcb, 0x09, 0x68, 0x7d, 0x30,
21	0xc7, 0x69, 0xd7, 0x30, 0x92, 0xde, 0x59, 0xe4,
22	0xc9, 0x6e, 0x8b, 0xdb, 0x98, 0x6b, 0xaa, 0x60,
23	0xa8, 0xb5, 0xbc, 0x6c, 0xa9, 0xb1, 0x5b, 0x2c,
24	0xea, 0xb4, 0x92, 0x6a, 0x3f, 0x79, 0x91, 0xe4,
25	0xe9, 0x70, 0x51, 0x8c, 0x7f, 0x95, 0x6f, 0x1a,
26	0x56, 0xa1, 0x5c, 0x27, 0x03, 0x67, 0x9f, 0x3a,
27	0xe2, 0x31, 0x11, 0x29, 0x6b, 0x98, 0xfc, 0xc4,
28	0x53, 0x24, 0xc5, 0x8b, 0xce, 0x47, 0xb2, 0xb9,
29	0x32, 0xcb, 0xc1, 0xd0, 0x03, 0x57, 0x4e, 0xd4,
30	0xe9, 0x3c, 0xa1, 0x63, 0xcf, 0x12, 0x0e, 0xca,
31	0xe1, 0x13, 0xd1, 0x93, 0xa6, 0x88, 0x5c, 0x61,
32	0x5b, 0xbb, 0xf0, 0x19, 0x46, 0xb4, 0xcf, 0x9e,
33	0xb6, 0x6b, 0x4c, 0x3a, 0xcf, 0x60, 0xf9, 0x7a,
34	0x8d, 0x07, 0x63, 0xdb, 0x40, 0xe9, 0x0b, 0x6f,
35	0xad, 0x97, 0xf1, 0xed, 0xd0, 0x1e, 0x26, 0xfd,
36	0xbf, 0xb7, 0xc8, 0x04, 0x94, 0xf8, 0x8b, 0x8c,
37	0xf1, 0xab, 0x7a, 0xd4, 0xdd, 0xf3, 0xe8, 0x88,
38	0xc3, 0xed, 0x17, 0x8a, 0x9b, 0x40, 0x0d, 0x53,
39	0x62, 0x12, 0x03, 0x5f, 0x1b, 0x35, 0x32, 0x1f,
40	0xb4, 0x7b, 0x93, 0x78, 0x0d, 0xdb, 0xce, 0xa4,
41	0xc0, 0x47, 0xd5, 0xbf, 0x68, 0xe8, 0x5d, 0x74,
42	0x8f, 0x8e, 0x75, 0x1c, 0xb2, 0x4f, 0x9a, 0x60,
43	0xd1, 0xbe, 0x10, 0xf4, 0x5c, 0xa1, 0x53, 0x09,
44	0xa5, 0xe0, 0x09, 0x54, 0x85, 0x5c, 0xdc, 0x07,
45	0xe7, 0x21, 0x69, 0x7b, 0x8a, 0xfd, 0x90, 0xf1,
46	0x22, 0xd0, 0xb4, 0x36, 0x28, 0xe6, 0xb8, 0x0f,
47	0x39, 0xde, 0xc8, 0xf3, 0x86, 0x60, 0x34, 0xd2,
48	0x5e, 0xdf, 0xfd, 0xcf, 0x0f, 0xa9, 0x65, 0xf0,
49	0xd5, 0x4d, 0x96, 0x40, 0xe3, 0xdf, 0x3f, 0x95,
50	0x5a, 0x39, 0x19, 0x93, 0xf4, 0x75, 0xce, 0x22,
51	0x00, 0x1c, 0x93, 0xe2, 0x03, 0x66, 0xf4, 0x93,
52	0x73, 0x86, 0x81, 0x8e, 0x29, 0x44, 0x48, 0x86,
53	0x61, 0x7c, 0x48, 0xa3, 0x43, 0xd2, 0x9c, 0x8d,
54	0xd4, 0x95, 0xdd, 0xe1, 0x22, 0x89, 0x3a, 0x40,
55	0x4c, 0x1b, 0x8a, 0x04, 0xa8, 0x09, 0x69, 0x8b,
56	0xea, 0xc6, 0x55, 0x8e, 0x57, 0xe6, 0x64, 0x35,
57	0xf0, 0xc7, 0x16, 0x9f, 0x5d, 0x5e, 0x86, 0x40,
58	0x46, 0xbb, 0xe5, 0x45, 0x88, 0xfe, 0xc9, 0x63,
59	0x15, 0xfb, 0xf5, 0xbd, 0x71, 0x61, 0xeb, 0x7b,
60	0x78, 0x70, 0x07, 0x31, 0x03, 0x9f, 0xb2, 0xc8,
61	0xa7, 0xab, 0x47, 0xfd, 0xdf, 0xa0, 0x78, 0x72,
62	0xa4, 0x2a, 0xe4, 0xb6, 0xba, 0xc0, 0x1e, 0x86,
63	0x71, 0xe6, 0x3d, 0x18, 0x37, 0x70, 0xe6, 0xff,
64	0xe0, 0xbc, 0x0b, 0x22, 0xa0, 0x1f, 0xd3, 0xed,
65	0xa2, 0x55, 0x39, 0xab, 0xa8, 0x13, 0x73, 0x7c,
66	0x3f, 0xb2, 0xd6, 0x19, 0xac, 0xff, 0x99, 0xed,
67	0xe8, 0xe6, 0xa6, 0x22, 0xe3, 0x9c, 0xf1, 0x30,
68	0xdc, 0x01, 0x0a, 0x56, 0xfa, 0xe4, 0xc9, 0x99,
69	0xdd, 0xa8, 0xd8, 0xda, 0x35, 0x51, 0x73, 0xb4,
70	0x40, 0x86, 0x85, 0xdb, 0x5c, 0xd5, 0x85, 0x80,
71	0x14, 0x9c, 0xfd, 0x98, 0xa9, 0x82, 0xc5, 0x37,
72	0xff, 0x32, 0x5d, 0xd0, 0x0b, 0xfa, 0xdc, 0x04,
73	0x5e, 0x09, 0xd2, 0xca, 0x17, 0x4b, 0x1a, 0x8e,
74	0x15, 0xe1, 0xcc, 0x4e, 0x52, 0x88, 0x35, 0xbd,
75	0x48, 0xfe, 0x15, 0xa0, 0x91, 0xfd, 0x7e, 0x6c,
76	0x0e, 0x5d, 0x79, 0x1b, 0x81, 0x79, 0xd2, 0x09,
77	0x34, 0x70, 0x3d, 0x81, 0xec, 0xf6, 0x24, 0xbb,
78	0xfb, 0xf1, 0x7b, 0xdf, 0x54, 0xea, 0x80, 0x9b,
79	0xc7, 0x99, 0x9e, 0xbd, 0x16, 0x78, 0x12, 0x53,
80	0x5e, 0x01, 0xa7, 0x4e, 0xbd, 0x67, 0xe1, 0x9b,
81	0x4c, 0x0e, 0x61, 0x45, 0x97, 0xd2, 0xf0, 0x0f,
82	0xfe, 0x15, 0x08, 0xb7, 0x11, 0x4c, 0xe7, 0xff,
83	0x81, 0x53, 0xff, 0x91, 0x25, 0x38, 0x7e, 0x40,
84	0x94, 0xe5, 0xe0, 0xad, 0xe6, 0xd9, 0x79, 0xb6,
85	0x92, 0xc9, 0xfc, 0xde, 0xc3, 0x1a, 0x23, 0xbb,
86	0xdd, 0xc8, 0x51, 0x0c, 0x3a, 0x72, 0xfa, 0x73,
87	0x6f, 0xb7, 0xee, 0x61, 0x39, 0x03, 0x01, 0x3f,
88	0x7f, 0x94, 0x2e, 0x2e, 0xba, 0x3a, 0xbb, 0xb4,
89	0xfa, 0x6a, 0x17, 0xfe, 0xea, 0xef, 0x5e, 0x66,
90	0x97, 0x3f, 0x32, 0x3d, 0xd7, 0x3e, 0xb1, 0xf1,
91	0x6c, 0x14, 0x4c, 0xfd, 0x37, 0xd3, 0x38, 0x80,
92	0xfb, 0xde, 0xa6, 0x24, 0x1e, 0xc8, 0xca, 0x7f,
93	0x3a, 0x93, 0xd8, 0x8b, 0x18, 0x13, 0xb2, 0xe5,
94	0xe4, 0x93, 0x05, 0x53, 0x4f, 0x84, 0x66, 0xa7,
95	0x58, 0x5c, 0x7b, 0x86, 0x52, 0x6d, 0x0d, 0xce,
96	0xa4, 0x30, 0x7d, 0xb6, 0x18, 0x9f, 0xeb, 0xff,
97	0x22, 0xbb, 0x72, 0x29, 0xb9, 0x44, 0x0b, 0x48,
98	0x1e, 0x84, 0x71, 0x81, 0xe3, 0x6d, 0x73, 0x26,
99	0x92, 0xb4, 0x4d, 0x2a, 0x29, 0xb8, 0x1f, 0x72,
100	0xed, 0xd0, 0xe1, 0x64, 0x77, 0xea, 0x8e, 0x88,
101	0x0f, 0xef, 0x3f, 0xb1, 0x3b, 0xad, 0xf9, 0xc9,
102	0x8b, 0xd0, 0xac, 0xc6, 0xcc, 0xa9, 0x40, 0xcc,
103	0x76, 0xf6, 0x3b, 0x53, 0xb5, 0x88, 0xcb, 0xc8,
104	0x37, 0xf1, 0xa2, 0xba, 0x23, 0x15, 0x99, 0x09,
105	0xcc, 0xe7, 0x7a, 0x3b, 0x37, 0xf7, 0x58, 0xc8,
106	0x46, 0x8c, 0x2b, 0x2f, 0x4e, 0x0e, 0xa6, 0x5c,
107	0xea, 0x85, 0x55, 0xba, 0x02, 0x0e, 0x0e, 0x48,
108	0xbc, 0xe1, 0xb1, 0x01, 0x35, 0x79, 0x13, 0x3d,
109	0x1b, 0xc0, 0x53, 0x68, 0x11, 0xe7, 0x95, 0x0f,
110	0x9d, 0x3f, 0x4c, 0x47, 0x7b, 0x4d, 0x1c, 0xae,
111	0x50, 0x9b, 0xcb, 0xdd, 0x05, 0x8d, 0x9a, 0x97,
112	0xfd, 0x8c, 0xef, 0x0c, 0x1d, 0x67, 0x73, 0xa8,
113	0x28, 0x36, 0xd5, 0xb6, 0x92, 0x33, 0x40, 0x75,
114	0x0b, 0x51, 0xc3, 0x64, 0xba, 0x1d, 0xc2, 0xcc,
115	0xee, 0x7d, 0x54, 0x0f, 0x27, 0x69, 0xa7, 0x27,
116	0x63, 0x30, 0x29, 0xd9, 0xc8, 0x84, 0xd8, 0xdf,
117	0x9f, 0x68, 0x8d, 0x04, 0xca, 0xa6, 0xc5, 0xc7,
118	0x7a, 0x5c, 0xc8, 0xd1, 0xcb, 0x4a, 0xec, 0xd0,
119	0xd8, 0x20, 0x69, 0xc5, 0x17, 0xcd, 0x78, 0xc8,
120	0x75, 0x23, 0x30, 0x69, 0xc9, 0xd4, 0xea, 0x5c,
121	0x4f, 0x6b, 0x86, 0x3f, 0x8b, 0xfe, 0xee, 0x44,
122	0xc9, 0x7c, 0xb7, 0xdd, 0x3e, 0xe5, 0xec, 0x54,
123	0x03, 0x3e, 0xaa, 0x82, 0xc6, 0xdf, 0xb2, 0x38,
124	0x0e, 0x5d, 0xb3, 0x88, 0xd9, 0xd3, 0x69, 0x5f,
125	0x8f, 0x70, 0x8a, 0x7e, 0x11, 0xd9, 0x1e, 0x7b,
126	0x38, 0xf1, 0x42, 0x1a, 0xc0, 0x35, 0xf5, 0xc7,
127	0x36, 0x85, 0xf5, 0xf7, 0xb8, 0x7e, 0xc7, 0xef,
128	0x18, 0xf1, 0x63, 0xd6, 0x7a, 0xc6, 0xc9, 0x0e,
129	0x4d, 0x69, 0x4f, 0x84, 0xef, 0x26, 0x41, 0x0c,
130	0xec, 0xc7, 0xe0, 0x7e, 0x3c, 0x67, 0x01, 0x4c,
131	0x62, 0x1a, 0x20, 0x6f, 0xee, 0x47, 0x4d, 0xc0,
132	0x99, 0x13, 0x8d, 0x91, 0x4a, 0x26, 0xd4, 0x37,
133	0x28, 0x90, 0x58, 0x75, 0x66, 0x2b, 0x0a, 0xdf,
134	0xda, 0xee, 0x92, 0x25, 0x90, 0x62, 0x39, 0x9e,
135	0x44, 0x98, 0xad, 0xc1, 0x88, 0xed, 0xe4, 0xb4,
136	0xaf, 0xf5, 0x8c, 0x9b, 0x48, 0x4d, 0x56, 0x60,
137	0x97, 0x0f, 0x61, 0x59, 0x9e, 0xa6, 0x27, 0xfe,
138	0xc1, 0x91, 0x15, 0x38, 0xb8, 0x0f, 0xae, 0x61,
139	0x7d, 0x26, 0x13, 0x5a, 0x73, 0xff, 0x1c, 0xa3,
140	0x61, 0x04, 0x58, 0x48, 0x55, 0x44, 0x11, 0xfe,
141	0x15, 0xca, 0xc3, 0xbd, 0xca, 0xc5, 0xb4, 0x40,
142	0x5d, 0x1b, 0x7f, 0x39, 0xb5, 0x9c, 0x35, 0xec,
143	0x61, 0x15, 0x32, 0x32, 0xb8, 0x4e, 0x40, 0x9f,
144	0x17, 0x1f, 0x0a, 0x4d, 0xa9, 0x91, 0xef, 0xb7,
145	0xb0, 0xeb, 0xc2, 0x83, 0x9a, 0x6c, 0xd2, 0x79,
146	0x43, 0x78, 0x5e, 0x2f, 0xe5, 0xdd, 0x1a, 0x3c,
147	0x45, 0xab, 0x29, 0x40, 0x3a, 0x37, 0x5b, 0x6f,
148	0xd7, 0xfc, 0x48, 0x64, 0x3c, 0x49, 0xfb, 0x21,
149	0xbe, 0xc3, 0xff, 0x07, 0xfb, 0x17, 0xe9, 0xc9,
150	0x0c, 0x4c, 0x5c, 0x15, 0x9e, 0x8e, 0x22, 0x30,
151	0x0a, 0xde, 0x48, 0x7f, 0xdb, 0x0d, 0xd1, 0x2b,
152	0x87, 0x38, 0x9e, 0xcc, 0x5a, 0x01, 0x16, 0xee,
153	0x75, 0x49, 0x0d, 0x30, 0x01, 0x34, 0x6a, 0xb6,
154	0x9a, 0x5a, 0x2a, 0xec, 0xbb, 0x48, 0xac, 0xd3,
155	0x77, 0x83, 0xd8, 0x08, 0x86, 0x4f, 0x48, 0x09,
156	0x29, 0x41, 0x79, 0xa1, 0x03, 0x12, 0xc4, 0xcd,
157	0x90, 0x55, 0x47, 0x66, 0x74, 0x9a, 0xcc, 0x4f,
158	0x35, 0x8c, 0xd6, 0x98, 0xef, 0xeb, 0x45, 0xb9,
159	0x9a, 0x26, 0x2f, 0x39, 0xa5, 0x70, 0x6d, 0xfc,
160	0xb4, 0x51, 0xee, 0xf4, 0x9c, 0xe7, 0x38, 0x59,
161	0xad, 0xf4, 0xbc, 0x46, 0xff, 0x46, 0x8e, 0x60,
162	0x9c, 0xa3, 0x60, 0x1d, 0xf8, 0x26, 0x72, 0xf5,
163	0x72, 0x9d, 0x68, 0x80, 0x04, 0xf6, 0x0b, 0xa1,
164	0x0a, 0xd5, 0xa7, 0x82, 0x3a, 0x3e, 0x47, 0xa8,
165	0x5a, 0xde, 0x59, 0x4f, 0x7b, 0x07, 0xb3, 0xe9,
166	0x24, 0x19, 0x3d, 0x34, 0x05, 0xec, 0xf1, 0xab,
167	0x6e, 0x64, 0x8f, 0xd3, 0xe6, 0x41, 0x86, 0x80,
168	0x70, 0xe3, 0x8d, 0x60, 0x9c, 0x34, 0x25, 0x01,
169	0x07, 0x4d, 0x19, 0x41, 0x4e, 0x3d, 0x5c, 0x7e,
170	0xa8, 0xf5, 0xcc, 0xd5, 0x7b, 0xe2, 0x7d, 0x3d,
171	0x49, 0x86, 0x7d, 0x07, 0xb7, 0x10, 0xe3, 0x35,
172	0xb8, 0x84, 0x6d, 0x76, 0xab, 0x17, 0xc6, 0x38,
173	0xb4, 0xd3, 0x28, 0x57, 0xad, 0xd3, 0x88, 0x5a,
174	0xda, 0xea, 0xc8, 0x94, 0xcc, 0x37, 0x19, 0xac,
175	0x9c, 0x9f, 0x4b, 0x00, 0x15, 0xc0, 0xc8, 0xca,
176	0x1f, 0x15, 0xaa, 0xe0, 0xdb, 0xf9, 0x2f, 0x57,
177	0x1b, 0x24, 0xc7, 0x6f, 0x76, 0x29, 0xfb, 0xed,
178	0x25, 0x0d, 0xc0, 0xfe, 0xbd, 0x5a, 0xbf, 0x20,
179	0x08, 0x51, 0x05, 0xec, 0x71, 0xa3, 0xbf, 0xef,
180	0x5e, 0x99, 0x75, 0xdb, 0x3c, 0x5f, 0x9a, 0x8c,
181	0xbb, 0x19, 0x5c, 0x0e, 0x93, 0x19, 0xf8, 0x6a,
182	0xbc, 0xf2, 0x12, 0x54, 0x2f, 0xcb, 0x28, 0x64,
183	0x88, 0xb3, 0x92, 0x0d, 0x96, 0xd1, 0xa6, 0xe4,
184	0x1f, 0xf1, 0x4d, 0xa4, 0xab, 0x1c, 0xee, 0x54,
185	0xf2, 0xad, 0x29, 0x6d, 0x32, 0x37, 0xb2, 0x16,
186	0x77, 0x5c, 0xdc, 0x2e, 0x54, 0xec, 0x75, 0x26,
187	0xc6, 0x36, 0xd9, 0x17, 0x2c, 0xf1, 0x7a, 0xdc,
188	0x4b, 0xf1, 0xe2, 0xd9, 0x95, 0xba, 0xac, 0x87,
189	0xc1, 0xf3, 0x8e, 0x58, 0x08, 0xd8, 0x87, 0x60,
190	0xc9, 0xee, 0x6a, 0xde, 0xa4, 0xd2, 0xfc, 0x0d,
191	0xe5, 0x36, 0xc4, 0x5c, 0x52, 0xb3, 0x07, 0x54,
192	0x65, 0x24, 0xc1, 0xb1, 0xd1, 0xb1, 0x53, 0x13,
193	0x31, 0x79, 0x7f, 0x05, 0x76, 0xeb, 0x37, 0x59,
194	0x15, 0x2b, 0xd1, 0x3f, 0xac, 0x08, 0x97, 0xeb,
195	0x91, 0x98, 0xdf, 0x6c, 0x09, 0x0d, 0x04, 0x9f,
196	0xdc, 0x3b, 0x0e, 0x60, 0x68, 0x47, 0x23, 0x15,
197	0x16, 0xc6, 0x0b, 0x35, 0xf8, 0x77, 0xa2, 0x78,
198	0x50, 0xd4, 0x64, 0x22, 0x33, 0xff, 0xfb, 0x93,
199	0x71, 0x46, 0x50, 0x39, 0x1b, 0x9c, 0xea, 0x4e,
200	0x8d, 0x0c, 0x37, 0xe5, 0x5c, 0x51, 0x3a, 0x31,
201	0xb2, 0x85, 0x84, 0x3f, 0x41, 0xee, 0xa2, 0xc1,
202	0xc6, 0x13, 0x3b, 0x54, 0x28, 0xd2, 0x18, 0x37,
203	0xcc, 0x46, 0x9f, 0x6a, 0x91, 0x3d, 0x5a, 0x15,
204	0x3c, 0x89, 0xa3, 0x61, 0x06, 0x7d, 0x2e, 0x78,
205	0xbe, 0x7d, 0x40, 0xba, 0x2f, 0x95, 0xb1, 0x2f,
206	0x87, 0x3b, 0x8a, 0xbe, 0x6a, 0xf4, 0xc2, 0x31,
207	0x74, 0xee, 0x91, 0xe0, 0x23, 0xaa, 0x5d, 0x7f,
208	0xdd, 0xf0, 0x44, 0x8c, 0x0b, 0x59, 0x2b, 0xfc,
209	0x48, 0x3a, 0xdf, 0x07, 0x05, 0x38, 0x6c, 0xc9,
210	0xeb, 0x18, 0x24, 0x68, 0x8d, 0x58, 0x98, 0xd3,
211	0x31, 0xa3, 0xe4, 0x70, 0x59, 0xb1, 0x21, 0xbe,
212	0x7e, 0x65, 0x7d, 0xb8, 0x04, 0xab, 0xf6, 0xe4,
213	0xd7, 0xda, 0xec, 0x09, 0x8f, 0xda, 0x6d, 0x24,
214	0x07, 0xcc, 0x29, 0x17, 0x05, 0x78, 0x1a, 0xc1,
215	0xb1, 0xce, 0xfc, 0xaa, 0x2d, 0xe7, 0xcc, 0x85,
216	0x84, 0x84, 0x03, 0x2a, 0x0c, 0x3f, 0xa9, 0xf8,
217	0xfd, 0x84, 0x53, 0x59, 0x5c, 0xf0, 0xd4, 0x09,
218	0xf0, 0xd2, 0x6c, 0x32, 0x03, 0xb0, 0xa0, 0x8c,
219	0x52, 0xeb, 0x23, 0x91, 0x88, 0x43, 0x13, 0x46,
220	0xf6, 0x1e, 0xb4, 0x1b, 0xf5, 0x8e, 0x3a, 0xb5,
221	0x3d, 0x00, 0xf6, 0xe5, 0x08, 0x3d, 0x5f, 0x39,
222	0xd3, 0x21, 0x69, 0xbc, 0x03, 0x22, 0x3a, 0xd2,
223	0x5c, 0x84, 0xf8, 0x15, 0xc4, 0x80, 0x0b, 0xbc,
224	0x29, 0x3c, 0xf3, 0x95, 0x98, 0xcd, 0x8f, 0x35,
225	0xbc, 0xa5, 0x3e, 0xfc, 0xd4, 0x13, 0x9e, 0xde,
226	0x4f, 0xce, 0x71, 0x9d, 0x09, 0xad, 0xf2, 0x80,
227	0x6b, 0x65, 0x7f, 0x03, 0x00, 0x14, 0x7c, 0x15,
228	0x85, 0x40, 0x6d, 0x70, 0xea, 0xdc, 0xb3, 0x63,
229	0x35, 0x4f, 0x4d, 0xe0, 0xd9, 0xd5, 0x3c, 0x58,
230	0x56, 0x23, 0x80, 0xe2, 0x36, 0xdd, 0x75, 0x1d,
231	0x94, 0x11, 0x41, 0x8e, 0xe0, 0x81, 0x8e, 0xcf,
232	0xe0, 0xe5, 0xf6, 0xde, 0xd1, 0xe7, 0x04, 0x12,
233	0x79, 0x92, 0x2b, 0x71, 0x2a, 0x79, 0x8b, 0x7c,
234	0x44, 0x79, 0x16, 0x30, 0x4e, 0xf4, 0xf6, 0x9b,
235	0xb7, 0x40, 0xa3, 0x5a, 0xa7, 0x69, 0x3e, 0xc1,
236	0x3a, 0x04, 0xd0, 0x88, 0xa0, 0x3b, 0xdd, 0xc6,
237	0x9e, 0x7e, 0x1e, 0x1e, 0x8f, 0x44, 0xf7, 0x73,
238	0x67, 0x1e, 0x1a, 0x78, 0xfa, 0x62, 0xf4, 0xa9,
239	0xa8, 0xc6, 0x5b, 0xb8, 0xfa, 0x06, 0x7d, 0x5e,
240	0x38, 0x1c, 0x9a, 0x39, 0xe9, 0x39, 0x98, 0x22,
241	0x0b, 0xa7, 0xac, 0x0b, 0xf3, 0xbc, 0xf1, 0xeb,
242	0x8c, 0x81, 0xe3, 0x48, 0x8a, 0xed, 0x42, 0xc2,
243	0x38, 0xcf, 0x3e, 0xda, 0xd2, 0x89, 0x8d, 0x9c,
244	0x53, 0xb5, 0x2f, 0x41, 0x01, 0x26, 0x84, 0x9c,
245	0xa3, 0x56, 0xf6, 0x49, 0xc7, 0xd4, 0x9f, 0x93,
246	0x1b, 0x96, 0x49, 0x5e, 0xad, 0xb3, 0x84, 0x1f,
247	0x3c, 0xa4, 0xe0, 0x9b, 0xd1, 0x90, 0xbc, 0x38,
248	0x6c, 0xdd, 0x95, 0x4d, 0x9d, 0xb1, 0x71, 0x57,
249	0x2d, 0x34, 0xe8, 0xb8, 0x42, 0xc7, 0x99, 0x03,
250	0xc7, 0x07, 0x30, 0x65, 0x91, 0x55, 0xd5, 0x90,
251	0x70, 0x97, 0x37, 0x68, 0xd4, 0x11, 0xf9, 0xe8,
252	0xce, 0xec, 0xdc, 0x34, 0xd5, 0xd3, 0xb7, 0xc4,
253	0xb8, 0x97, 0x05, 0x92, 0xad, 0xf8, 0xe2, 0x36,
254	0x64, 0x41, 0xc9, 0xc5, 0x41, 0x77, 0x52, 0xd7,
255	0x2c, 0xa5, 0x24, 0x2f, 0xd9, 0x34, 0x0b, 0x47,
256	0x35, 0xa7, 0x28, 0x8b, 0xc5, 0xcd, 0xe9, 0x46,
257	0xac, 0x39, 0x94, 0x3c, 0x10, 0xc6, 0x29, 0x73,
258	0x0e, 0x0e, 0x5d, 0xe0, 0x71, 0x03, 0x8a, 0x72,
259	0x0e, 0x26, 0xb0, 0x7d, 0x84, 0xed, 0x95, 0x23,
260	0x49, 0x5a, 0x45, 0x83, 0x45, 0x60, 0x11, 0x4a,
261	0x46, 0x31, 0xd4, 0xd8, 0x16, 0x54, 0x98, 0x58,
262	0xed, 0x6d, 0xcc, 0x5d, 0xd6, 0x50, 0x61, 0x9f,
263	0x9d, 0xc5, 0x3e, 0x9d, 0x32, 0x47, 0xde, 0x96,
264	0xe1, 0x5d, 0xd8, 0xf8, 0xb4, 0x69, 0x6f, 0xb9,
265	0x15, 0x90, 0x57, 0x7a, 0xf6, 0xad, 0xb0, 0x5b,
266	0xf5, 0xa6, 0x36, 0x94, 0xfd, 0x84, 0xce, 0x1c,
267	0x0f, 0x4b, 0xd0, 0xc2, 0x5b, 0x6b, 0x56, 0xef,
268	0x73, 0x93, 0x0b, 0xc3, 0xee, 0xd9, 0xcf, 0xd3,
269	0xa4, 0x22, 0x58, 0xcd, 0x50, 0x6e, 0x65, 0xf4,
270	0xe9, 0xb7, 0x71, 0xaf, 0x4b, 0xb3, 0xb6, 0x2f,
271	0x0f, 0x0e, 0x3b, 0xc9, 0x85, 0x14, 0xf5, 0x17,
272	0xe8, 0x7a, 0x3a, 0xbf, 0x5f, 0x5e, 0xf8, 0x18,
273	0x48, 0xa6, 0x72, 0xab, 0x06, 0x95, 0xe9, 0xc8,
274	0xa7, 0xf4, 0x32, 0x44, 0x04, 0x0c, 0x84, 0x98,
275	0x73, 0xe3, 0x89, 0x8d, 0x5f, 0x7e, 0x4a, 0x42,
276	0x8f, 0xc5, 0x28, 0xb1, 0x82, 0xef, 0x1c, 0x97,
277	0x31, 0x3b, 0x4d, 0xe0, 0x0e, 0x10, 0x10, 0x97,
278	0x93, 0x49, 0x78, 0x2f, 0x0d, 0x86, 0x8b, 0xa1,
279	0x53, 0xa9, 0x81, 0x20, 0x79, 0xe7, 0x07, 0x77,
280	0xb6, 0xac, 0x5e, 0xd2, 0x05, 0xcd, 0xe9, 0xdb,
281	0x8a, 0x94, 0x82, 0x8a, 0x23, 0xb9, 0x3d, 0x1c,
282	0xa9, 0x7d, 0x72, 0x4a, 0xed, 0x33, 0xa3, 0xdb,
283	0x21, 0xa7, 0x86, 0x33, 0x45, 0xa5, 0xaa, 0x56,
284	0x45, 0xb5, 0x83, 0x29, 0x40, 0x47, 0x79, 0x04,
285	0x6e, 0xb9, 0x95, 0xd0, 0x81, 0x77, 0x2d, 0x48,
286	0x1e, 0xfe, 0xc3, 0xc2, 0x1e, 0xe5, 0xf2, 0xbe,
287	0xfd, 0x3b, 0x94, 0x9f, 0xc4, 0xc4, 0x26, 0x9d,
288	0xe4, 0x66, 0x1e, 0x19, 0xee, 0x6c, 0x79, 0x97,
289	0x11, 0x31, 0x4b, 0x0d, 0x01, 0xcb, 0xde, 0xa8,
290	0xf6, 0x6d, 0x7c, 0x39, 0x46, 0x4e, 0x7e, 0x3f,
291	0x94, 0x17, 0xdf, 0xa1, 0x7d, 0xd9, 0x1c, 0x8e,
292	0xbc, 0x7d, 0x33, 0x7d, 0xe3, 0x12, 0x40, 0xca,
293	0xab, 0x37, 0x11, 0x46, 0xd4, 0xae, 0xef, 0x44,
294	0xa2, 0xb3, 0x6a, 0x66, 0x0e, 0x0c, 0x90, 0x7f,
295	0xdf, 0x5c, 0x66, 0x5f, 0xf2, 0x94, 0x9f, 0xa6,
296	0x73, 0x4f, 0xeb, 0x0d, 0xad, 0xbf, 0xc0, 0x63,
297	0x5c, 0xdc, 0x46, 0x51, 0xe8, 0x8e, 0x90, 0x19,
298	0xa8, 0xa4, 0x3c, 0x91, 0x79, 0xfa, 0x7e, 0x58,
299	0x85, 0x13, 0x55, 0xc5, 0x19, 0x82, 0x37, 0x1b,
300	0x0a, 0x02, 0x1f, 0x99, 0x6b, 0x18, 0xf1, 0x28,
301	0x08, 0xa2, 0x73, 0xb8, 0x0f, 0x2e, 0xcd, 0xbf,
302	0xf3, 0x86, 0x7f, 0xea, 0xef, 0xd0, 0xbb, 0xa6,
303	0x21, 0xdf, 0x49, 0x73, 0x51, 0xcc, 0x36, 0xd3,
304	0x3e, 0xa0, 0xf8, 0x44, 0xdf, 0xd3, 0xa6, 0xbe,
305	0x8a, 0xd4, 0x57, 0xdd, 0x72, 0x94, 0x61, 0x0f,
306	0x82, 0xd1, 0x07, 0xb8, 0x7c, 0x18, 0x83, 0xdf,
307	0x3a, 0xe5, 0x50, 0x6a, 0x82, 0x20, 0xac, 0xa9,
308	0xa8, 0xff, 0xd9, 0xf3, 0x77, 0x33, 0x5a, 0x9e,
309	0x7f, 0x6d, 0xfe, 0x5d, 0x33, 0x41, 0x42, 0xe7,
310	0x6c, 0x19, 0xe0, 0x44, 0x8a, 0x15, 0xf6, 0x70,
311	0x98, 0xb7, 0x68, 0x4d, 0xfa, 0x97, 0x39, 0xb0,
312	0x8e, 0xe8, 0x84, 0x8b, 0x75, 0x30, 0xb7, 0x7d,
313	0x92, 0x69, 0x20, 0x9c, 0x81, 0xfb, 0x4b, 0xf4,
314	0x01, 0x50, 0xeb, 0xce, 0x0c, 0x1c, 0x6c, 0xb5,
315	0x4a, 0xd7, 0x27, 0x0c, 0xce, 0xbb, 0xe5, 0x85,
316	0xf0, 0xb6, 0xee, 0xd5, 0x70, 0xdd, 0x3b, 0xfc,
317	0xd4, 0x99, 0xf1, 0x33, 0xdd, 0x8b, 0xc4, 0x2f,
318	0xae, 0xab, 0x74, 0x96, 0x32, 0xc7, 0x4c, 0x56,
319	0x3c, 0x89, 0x0f, 0x96, 0x0b, 0x42, 0xc0, 0xcb,
320	0xee, 0x0f, 0x0b, 0x8c, 0xfb, 0x7e, 0x47, 0x7b,
321	0x64, 0x48, 0xfd, 0xb2, 0x00, 0x80, 0x89, 0xa5,
322	0x13, 0x55, 0x62, 0xfc, 0x8f, 0xe2, 0x42, 0x03,
323	0xb7, 0x4e, 0x2a, 0x79, 0xb4, 0x82, 0xea, 0x23,
324	0x49, 0xda, 0xaf, 0x52, 0x63, 0x1e, 0x60, 0x03,
325	0x89, 0x06, 0x44, 0x46, 0x08, 0xc3, 0xc4, 0x87,
326	0x70, 0x2e, 0xda, 0x94, 0xad, 0x6b, 0xe0, 0xe4,
327	0xd1, 0x8a, 0x06, 0xc2, 0xa8, 0xc0, 0xa7, 0x43,
328	0x3c, 0x47, 0x52, 0x0e, 0xc3, 0x77, 0x81, 0x11,
329	0x67, 0x0e, 0xa0, 0x70, 0x04, 0x47, 0x29, 0x40,
330	0x86, 0x0d, 0x34, 0x56, 0xa7, 0xc9, 0x35, 0x59,
331	0x68, 0xdc, 0x93, 0x81, 0x70, 0xee, 0x86, 0xd9,
332	0x80, 0x06, 0x40, 0x4f, 0x1a, 0x0d, 0x40, 0x30,
333	0x0b, 0xcb, 0x96, 0x47, 0xc1, 0xb7, 0x52, 0xfd,
334	0x56, 0xe0, 0x72, 0x4b, 0xfb, 0xbd, 0x92, 0x45,
335	0x61, 0x71, 0xc2, 0x33, 0x11, 0xbf, 0x52, 0x83,
336	0x79, 0x26, 0xe0, 0x49, 0x6b, 0xb7, 0x05, 0x8b,
337	0xe8, 0x0e, 0x87, 0x31, 0xd7, 0x9d, 0x8a, 0xf5,
338	0xc0, 0x5f, 0x2e, 0x58, 0x4a, 0xdb, 0x11, 0xb3,
339	0x6c, 0x30, 0x2a, 0x46, 0x19, 0xe3, 0x27, 0x84,
340	0x1f, 0x63, 0x6e, 0xf6, 0x57, 0xc7, 0xc9, 0xd8,
341	0x5e, 0xba, 0xb3, 0x87, 0xd5, 0x83, 0x26, 0x34,
342	0x21, 0x9e, 0x65, 0xde, 0x42, 0xd3, 0xbe, 0x7b,
343	0xbc, 0x91, 0x71, 0x44, 0x4d, 0x99, 0x3b, 0x31,
344	0xe5, 0x3f, 0x11, 0x4e, 0x7f, 0x13, 0x51, 0x3b,
345	0xae, 0x79, 0xc9, 0xd3, 0x81, 0x8e, 0x25, 0x40,
346	0x10, 0xfc, 0x07, 0x1e, 0xf9, 0x7b, 0x9a, 0x4b,
347	0x6c, 0xe3, 0xb3, 0xad, 0x1a, 0x0a, 0xdd, 0x9e,
348	0x59, 0x0c, 0xa2, 0xcd, 0xae, 0x48, 0x4a, 0x38,
349	0x5b, 0x47, 0x41, 0x94, 0x65, 0x6b, 0xbb, 0xeb,
350	0x5b, 0xe3, 0xaf, 0x07, 0x5b, 0xd4, 0x4a, 0xa2,
351	0xc9, 0x5d, 0x2f, 0x64, 0x03, 0xd7, 0x3a, 0x2c,
352	0x6e, 0xce, 0x76, 0x95, 0xb4, 0xb3, 0xc0, 0xf1,
353	0xe2, 0x45, 0x73, 0x7a, 0x5c, 0xab, 0xc1, 0xfc,
354	0x02, 0x8d, 0x81, 0x29, 0xb3, 0xac, 0x07, 0xec,
355	0x40, 0x7d, 0x45, 0xd9, 0x7a, 0x59, 0xee, 0x34,
356	0xf0, 0xe9, 0xd5, 0x7b, 0x96, 0xb1, 0x3d, 0x95,
357	0xcc, 0x86, 0xb5, 0xb6, 0x04, 0x2d, 0xb5, 0x92,
358	0x7e, 0x76, 0xf4, 0x06, 0xa9, 0xa3, 0x12, 0x0f,
359	0xb1, 0xaf, 0x26, 0xba, 0x7c, 0xfc, 0x7e, 0x1c,
360	0xbc, 0x2c, 0x49, 0x97, 0x53, 0x60, 0x13, 0x0b,
361	0xa6, 0x61, 0x83, 0x89, 0x42, 0xd4, 0x17, 0x0c,
362	0x6c, 0x26, 0x52, 0xc3, 0xb3, 0xd4, 0x67, 0xf5,
363	0xe3, 0x04, 0xb7, 0xf4, 0xcb, 0x80, 0xb8, 0xcb,
364	0x77, 0x56, 0x3e, 0xaa, 0x57, 0x54, 0xee, 0xb4,
365	0x2c, 0x67, 0xcf, 0xf2, 0xdc, 0xbe, 0x55, 0xf9,
366	0x43, 0x1f, 0x6e, 0x22, 0x97, 0x67, 0x7f, 0xc4,
367	0xef, 0xb1, 0x26, 0x31, 0x1e, 0x27, 0xdf, 0x41,
368	0x80, 0x47, 0x6c, 0xe2, 0xfa, 0xa9, 0x8c, 0x2a,
369	0xf6, 0xf2, 0xab, 0xf0, 0x15, 0xda, 0x6c, 0xc8,
370	0xfe, 0xb5, 0x23, 0xde, 0xa9, 0x05, 0x3f, 0x06,
371	0x54, 0x4c, 0xcd, 0xe1, 0xab, 0xfc, 0x0e, 0x62,
372	0x33, 0x31, 0x73, 0x2c, 0x76, 0xcb, 0xb4, 0x47,
373	0x1e, 0x20, 0xad, 0xd8, 0xf2, 0x31, 0xdd, 0xc4,
374	0x8b, 0x0c, 0x77, 0xbe, 0xe1, 0x8b, 0x26, 0x00,
375	0x02, 0x58, 0xd6, 0x8d, 0xef, 0xad, 0x74, 0x67,
376	0xab, 0x3f, 0xef, 0xcb, 0x6f, 0xb0, 0xcc, 0x81,
377	0x44, 0x4c, 0xaf, 0xe9, 0x49, 0x4f, 0xdb, 0xa0,
378	0x25, 0xa4, 0xf0, 0x89, 0xf1, 0xbe, 0xd8, 0x10,
379	0xff, 0xb1, 0x3b, 0x4b, 0xfa, 0x98, 0xf5, 0x79,
380	0x6d, 0x1e, 0x69, 0x4d, 0x57, 0xb1, 0xc8, 0x19,
381	0x1b, 0xbd, 0x1e, 0x8c, 0x84, 0xb7, 0x7b, 0xe8,
382	0xd2, 0x2d, 0x09, 0x41, 0x41, 0x37, 0x3d, 0xb1,
383	0x6f, 0x26, 0x5d, 0x71, 0x16, 0x3d, 0xb7, 0x83,
384	0x27, 0x2c, 0xa7, 0xb6, 0x50, 0xbd, 0x91, 0x86,
385	0xab, 0x24, 0xa1, 0x38, 0xfd, 0xea, 0x71, 0x55,
386	0x7e, 0x9a, 0x07, 0x77, 0x4b, 0xfa, 0x61, 0x66,
387	0x20, 0x1e, 0x28, 0x95, 0x18, 0x1b, 0xa4, 0xa0,
388	0xfd, 0xc0, 0x89, 0x72, 0x43, 0xd9, 0x3b, 0x49,
389	0x5a, 0x3f, 0x9d, 0xbf, 0xdb, 0xb4, 0x46, 0xea,
390	0x42, 0x01, 0x77, 0x23, 0x68, 0x95, 0xb6, 0x24,
391	0xb3, 0xa8, 0x6c, 0x28, 0x3b, 0x11, 0x40, 0x7e,
392	0x18, 0x65, 0x6d, 0xd8, 0x24, 0x42, 0x7d, 0x88,
393	0xc0, 0x52, 0xd9, 0x05, 0xe4, 0x95, 0x90, 0x87,
394	0x8c, 0xf4, 0xd0, 0x6b, 0xb9, 0x83, 0x99, 0x34,
395	0x6d, 0xfe, 0x54, 0x40, 0x94, 0x52, 0x21, 0x4f,
396	0x14, 0x25, 0xc5, 0xd6, 0x5e, 0x95, 0xdc, 0x0a,
397	0x2b, 0x89, 0x20, 0x11, 0x84, 0x48, 0xd6, 0x3a,
398	0xcd, 0x5c, 0x24, 0xad, 0x62, 0xe3, 0xb1, 0x93,
399	0x25, 0x8d, 0xcd, 0x7e, 0xfc, 0x27, 0xa3, 0x37,
400	0xfd, 0x84, 0xfc, 0x1b, 0xb2, 0xf1, 0x27, 0x38,
401	0x5a, 0xb7, 0xfc, 0xf2, 0xfa, 0x95, 0x66, 0xd4,
402	0xfb, 0xba, 0xa7, 0xd7, 0xa3, 0x72, 0x69, 0x48,
403	0x48, 0x8c, 0xeb, 0x28, 0x89, 0xfe, 0x33, 0x65,
404	0x5a, 0x36, 0x01, 0x7e, 0x06, 0x79, 0x0a, 0x09,
405	0x3b, 0x74, 0x11, 0x9a, 0x6e, 0xbf, 0xd4, 0x9e,
406	0x58, 0x90, 0x49, 0x4f, 0x4d, 0x08, 0xd4, 0xe5,
407	0x4a, 0x09, 0x21, 0xef, 0x8b, 0xb8, 0x74, 0x3b,
408	0x91, 0xdd, 0x36, 0x85, 0x60, 0x2d, 0xfa, 0xd4,
409	0x45, 0x7b, 0x45, 0x53, 0xf5, 0x47, 0x87, 0x7e,
410	0xa6, 0x37, 0xc8, 0x78, 0x7a, 0x68, 0x9d, 0x8d,
411	0x65, 0x2c, 0x0e, 0x91, 0x5c, 0xa2, 0x60, 0xf0,
412	0x8e, 0x3f, 0xe9, 0x1a, 0xcd, 0xaa, 0xe7, 0xd5,
413	0x77, 0x18, 0xaf, 0xc9, 0xbc, 0x18, 0xea, 0x48,
414	0x1b, 0xfb, 0x22, 0x48, 0x70, 0x16, 0x29, 0x9e,
415	0x5b, 0xc1, 0x2c, 0x66, 0x23, 0xbc, 0xf0, 0x1f,
416	0xef, 0xaf, 0xe4, 0xd6, 0x04, 0x19, 0x82, 0x7a,
417	0x0b, 0xba, 0x4b, 0x46, 0xb1, 0x6a, 0x85, 0x5d,
418	0xb4, 0x73, 0xd6, 0x21, 0xa1, 0x71, 0x60, 0x14,
419	0xee, 0x0a, 0x77, 0xc4, 0x66, 0x2e, 0xf9, 0x69,
420	0x30, 0xaf, 0x41, 0x0b, 0xc8, 0x83, 0x3c, 0x53,
421	0x99, 0x19, 0x27, 0x46, 0xf7, 0x41, 0x6e, 0x56,
422	0xdc, 0x94, 0x28, 0x67, 0x4e, 0xb7, 0x25, 0x48,
423	0x8a, 0xc2, 0xe0, 0x60, 0x96, 0xcc, 0x18, 0xf4,
424	0x84, 0xdd, 0xa7, 0x5e, 0x3e, 0x05, 0x0b, 0x26,
425	0x26, 0xb2, 0x5c, 0x1f, 0x57, 0x1a, 0x04, 0x7e,
426	0x6a, 0xe3, 0x2f, 0xb4, 0x35, 0xb6, 0x38, 0x40,
427	0x40, 0xcd, 0x6f, 0x87, 0x2e, 0xef, 0xa3, 0xd7,
428	0xa9, 0xc2, 0xe8, 0x0d, 0x27, 0xdf, 0x44, 0x62,
429	0x99, 0xa0, 0xfc, 0xcf, 0x81, 0x78, 0xcb, 0xfe,
430	0xe5, 0xa0, 0x03, 0x4e, 0x6c, 0xd7, 0xf4, 0xaf,
431	0x7a, 0xbb, 0x61, 0x82, 0xfe, 0x71, 0x89, 0xb2,
432	0x22, 0x7c, 0x8e, 0x83, 0x04, 0xce, 0xf6, 0x5d,
433	0x84, 0x8f, 0x95, 0x6a, 0x7f, 0xad, 0xfd, 0x32,
434	0x9c, 0x5e, 0xe4, 0x9c, 0x89, 0x60, 0x54, 0xaa,
435	0x96, 0x72, 0xd2, 0xd7, 0x36, 0x85, 0xa9, 0x45,
436	0xd2, 0x2a, 0xa1, 0x81, 0x49, 0x6f, 0x7e, 0x04,
437	0xfa, 0xe2, 0xfe, 0x90, 0x26, 0x77, 0x5a, 0x33,
438	0xb8, 0x04, 0x9a, 0x7a, 0xe6, 0x4c, 0x4f, 0xad,
439	0x72, 0x96, 0x08, 0x28, 0x58, 0x13, 0xf8, 0xc4,
440	0x1c, 0xf0, 0xc3, 0x45, 0x95, 0x49, 0x20, 0x8c,
441	0x9f, 0x39, 0x70, 0xe1, 0x77, 0xfe, 0xd5, 0x4b,
442	0xaf, 0x86, 0xda, 0xef, 0x22, 0x06, 0x83, 0x36,
443	0x29, 0x12, 0x11, 0x40, 0xbc, 0x3b, 0x86, 0xaa,
444	0xaa, 0x65, 0x60, 0xc3, 0x80, 0xca, 0xed, 0xa9,
445	0xf3, 0xb0, 0x79, 0x96, 0xa2, 0x55, 0x27, 0x28,
446	0x55, 0x73, 0x26, 0xa5, 0x50, 0xea, 0x92, 0x4b,
447	0x3c, 0x5c, 0x82, 0x33, 0xf0, 0x01, 0x3f, 0x03,
448	0xc1, 0x08, 0x05, 0xbf, 0x98, 0xf4, 0x9b, 0x6d,
449	0xa5, 0xa8, 0xb4, 0x82, 0x0c, 0x06, 0xfa, 0xff,
450	0x2d, 0x08, 0xf3, 0x05, 0x4f, 0x57, 0x2a, 0x39,
451	0xd4, 0x83, 0x0d, 0x75, 0x51, 0xd8, 0x5b, 0x1b,
452	0xd3, 0x51, 0x5a, 0x32, 0x2a, 0x9b, 0x32, 0xb2,
453	0xf2, 0xa4, 0x96, 0x12, 0xf2, 0xae, 0x40, 0x34,
454	0x67, 0xa8, 0xf5, 0x44, 0xd5, 0x35, 0x53, 0xfe,
455	0xa3, 0x60, 0x96, 0x63, 0x0f, 0x1f, 0x6e, 0xb0,
456	0x5a, 0x42, 0xa6, 0xfc, 0x51, 0x0b, 0x60, 0x27,
457	0xbc, 0x06, 0x71, 0xed, 0x65, 0x5b, 0x23, 0x86,
458	0x4a, 0x07, 0x3b, 0x22, 0x07, 0x46, 0xe6, 0x90,
459	0x3e, 0xf3, 0x25, 0x50, 0x1b, 0x4c, 0x7f, 0x03,
460	0x08, 0xa8, 0x36, 0x6b, 0x87, 0xe5, 0xe3, 0xdb,
461	0x9a, 0x38, 0x83, 0xff, 0x9f, 0x1a, 0x9f, 0x57,
462	0xa4, 0x2a, 0xf6, 0x37, 0xbc, 0x1a, 0xff, 0xc9,
463	0x1e, 0x35, 0x0c, 0xc3, 0x7c, 0xa3, 0xb2, 0xe5,
464	0xd2, 0xc6, 0xb4, 0x57, 0x47, 0xe4, 0x32, 0x16,
465	0x6d, 0xa9, 0xae, 0x64, 0xe6, 0x2d, 0x8d, 0xc5,
466	0x8d, 0x50, 0x8e, 0xe8, 0x1a, 0x22, 0x34, 0x2a,
467	0xd9, 0xeb, 0x51, 0x90, 0x4a, 0xb1, 0x41, 0x7d,
468	0x64, 0xf9, 0xb9, 0x0d, 0xf6, 0x23, 0x33, 0xb0,
469	0x33, 0xf4, 0xf7, 0x3f, 0x27, 0x84, 0xc6, 0x0f,
470	0x54, 0xa5, 0xc0, 0x2e, 0xec, 0x0b, 0x3a, 0x48,
471	0x6e, 0x80, 0x35, 0x81, 0x43, 0x9b, 0x90, 0xb1,
472	0xd0, 0x2b, 0xea, 0x21, 0xdc, 0xda, 0x5b, 0x09,
473	0xf4, 0xcc, 0x10, 0xb4, 0xc7, 0xfe, 0x79, 0x51,
474	0xc3, 0xc5, 0xac, 0x88, 0x74, 0x84, 0x0b, 0x4b,
475	0xca, 0x79, 0x16, 0x29, 0xfb, 0x69, 0x54, 0xdf,
476	0x41, 0x7e, 0xe9, 0xc7, 0x8e, 0xea, 0xa5, 0xfe,
477	0xfc, 0x76, 0x0e, 0x90, 0xc4, 0x92, 0x38, 0xad,
478	0x7b, 0x48, 0xe6, 0x6e, 0xf7, 0x21, 0xfd, 0x4e,
479	0x93, 0x0a, 0x7b, 0x41, 0x83, 0x68, 0xfb, 0x57,
480	0x51, 0x76, 0x34, 0xa9, 0x6c, 0x00, 0xaa, 0x4f,
481	0x66, 0x65, 0x98, 0x4a, 0x4f, 0xa3, 0xa0, 0xef,
482	0x69, 0x3f, 0xe3, 0x1c, 0x92, 0x8c, 0xfd, 0xd8,
483	0xe8, 0xde, 0x7c, 0x7f, 0x3e, 0x84, 0x8e, 0x69,
484	0x3c, 0xf1, 0xf2, 0x05, 0x46, 0xdc, 0x2f, 0x9d,
485	0x5e, 0x6e, 0x4c, 0xfb, 0xb5, 0x99, 0x2a, 0x59,
486	0x63, 0xc1, 0x34, 0xbc, 0x57, 0xc0, 0x0d, 0xb9,
487	0x61, 0x25, 0xf3, 0x33, 0x23, 0x51, 0xb6, 0x0d,
488	0x07, 0xa6, 0xab, 0x94, 0x4a, 0xb7, 0x2a, 0xea,
489	0xee, 0xac, 0xa3, 0xc3, 0x04, 0x8b, 0x0e, 0x56,
490	0xfe, 0x44, 0xa7, 0x39, 0xe2, 0xed, 0xed, 0xb4,
491	0x22, 0x2b, 0xac, 0x12, 0x32, 0x28, 0x91, 0xd8,
492	0xa5, 0xab, 0xff, 0x5f, 0xe0, 0x4b, 0xda, 0x78,
493	0x17, 0xda, 0xf1, 0x01, 0x5b, 0xcd, 0xe2, 0x5f,
494	0x50, 0x45, 0x73, 0x2b, 0xe4, 0x76, 0x77, 0xf4,
495	0x64, 0x1d, 0x43, 0xfb, 0x84, 0x7a, 0xea, 0x91,
496	0xae, 0xf9, 0x9e, 0xb7, 0xb4, 0xb0, 0x91, 0x5f,
497	0x16, 0x35, 0x9a, 0x11, 0xb8, 0xc7, 0xc1, 0x8c,
498	0xc6, 0x10, 0x8d, 0x2f, 0x63, 0x4a, 0xa7, 0x57,
499	0x3a, 0x51, 0xd6, 0x32, 0x2d, 0x64, 0x72, 0xd4,
500	0x66, 0xdc, 0x10, 0xa6, 0x67, 0xd6, 0x04, 0x23,
501	0x9d, 0x0a, 0x11, 0x77, 0xdd, 0x37, 0x94, 0x17,
502	0x3c, 0xbf, 0x8b, 0x65, 0xb0, 0x2e, 0x5e, 0x66,
503	0x47, 0x64, 0xac, 0xdd, 0xf0, 0x84, 0xfd, 0x39,
504	0xfa, 0x15, 0x5d, 0xef, 0xae, 0xca, 0xc1, 0x36,
505	0xa7, 0x5c, 0xbf, 0xc7, 0x08, 0xc2, 0x66, 0x00,
506	0x74, 0x74, 0x4e, 0x27, 0x3f, 0x55, 0x8a, 0xb7,
507	0x38, 0x66, 0x83, 0x6d, 0xcf, 0x99, 0x9e, 0x60,
508	0x8f, 0xdd, 0x2e, 0x62, 0x22, 0x0e, 0xef, 0x0c,
509	0x98, 0xa7, 0x85, 0x74, 0x3b, 0x9d, 0xec, 0x9e,
510	0xa9, 0x19, 0x72, 0xa5, 0x7f, 0x2c, 0x39, 0xb7,
511	0x7d, 0xb7, 0xf1, 0x12, 0x65, 0x27, 0x4b, 0x5a,
512	0xde, 0x17, 0xfe, 0xad, 0x44, 0xf3, 0x20, 0x4d,
513	0xfd, 0xe4, 0x1f, 0xb5, 0x81, 0xb0, 0x36, 0x37,
514	0x08, 0x6f, 0xc3, 0x0c, 0xe9, 0x85, 0x98, 0x82,
515	0xa9, 0x62, 0x0c, 0xc4, 0x97, 0xc0, 0x50, 0xc8,
516	0xa7, 0x3c, 0x50, 0x9f, 0x43, 0xb9, 0xcd, 0x5e,
517	0x4d, 0xfa, 0x1c, 0x4b, 0x0b, 0xa9, 0x98, 0x85,
518	0x38, 0x92, 0xac, 0x8d, 0xe4, 0xad, 0x9b, 0x98,
519	0xab, 0xd9, 0x38, 0xac, 0x62, 0x52, 0xa3, 0x22,
520	0x63, 0x0f, 0xbf, 0x95, 0x48, 0xdf, 0x69, 0xe7,
521	0x8b, 0x33, 0xd5, 0xb2, 0xbd, 0x05, 0x49, 0x49,
522	0x9d, 0x57, 0x73, 0x19, 0x33, 0xae, 0xfa, 0x33,
523	0xf1, 0x19, 0xa8, 0x80, 0xce, 0x04, 0x9f, 0xbc,
524	0x1d, 0x65, 0x82, 0x1b, 0xe5, 0x3a, 0x51, 0xc8,
525	0x1c, 0x21, 0xe3, 0x5d, 0xf3, 0x7d, 0x9b, 0x2f,
526	0x2c, 0x1d, 0x4a, 0x7f, 0x9b, 0x68, 0x35, 0xa3,
527	0xb2, 0x50, 0xf7, 0x62, 0x79, 0xcd, 0xf4, 0x98,
528	0x4f, 0xe5, 0x63, 0x7c, 0x3e, 0x45, 0x31, 0x8c,
529	0x16, 0xa0, 0x12, 0xc8, 0x58, 0xce, 0x39, 0xa6,
530	0xbc, 0x54, 0xdb, 0xc5, 0xe0, 0xd5, 0xba, 0xbc,
531	0xb9, 0x04, 0xf4, 0x8d, 0xe8, 0x2f, 0x15, 0x9d,
532};
533
534/* 100 test cases */
535static struct dahash_test {
536	uint16_t	start;	/* random 12 bit offset in buf */
537	uint16_t	length;	/* random 8 bit length of test */
538	xfs_dahash_t	dahash;	/* expected dahash result */
539	xfs_dahash_t	ascii_ci_dahash; /* expected ascii-ci dahash result */
540} test[] __initdata =
541{
542	{0x0567, 0x0097, 0x96951389, 0xc153aa0d},
543	{0x0869, 0x0055, 0x6455ab4f, 0xd07f69bf},
544	{0x0c51, 0x00be, 0x8663afde, 0xf9add90c},
545	{0x044a, 0x00fc, 0x98fbe432, 0xbf2abb76},
546	{0x0f29, 0x0079, 0x42371997, 0x282588b3},
547	{0x08ba, 0x0052, 0x942be4f7, 0x2e023547},
548	{0x01f2, 0x0013, 0x5262687e, 0x5266287e},
549	{0x09e3, 0x00e2, 0x8ffb0908, 0x1da892f3},
550	{0x007c, 0x0051, 0xb3158491, 0xb67f9e63},
551	{0x0854, 0x001f, 0x83bb20d9, 0x22bb21db},
552	{0x031b, 0x0008, 0x98970bdf, 0x9cd70adf},
553	{0x0de7, 0x0027, 0xbfbf6f6c, 0xae3f296c},
554	{0x0f76, 0x0005, 0x906a7105, 0x906a7105},
555	{0x092e, 0x00d0, 0x86631850, 0xa3f6ac04},
556	{0x0233, 0x0082, 0xdbdd914e, 0x5d8c7aac},
557	{0x04c9, 0x0075, 0x5a400a9e, 0x12f60711},
558	{0x0b66, 0x0099, 0xae128b45, 0x7551310d},
559	{0x000d, 0x00ed, 0xe61c216a, 0xc22d3c4c},
560	{0x0a31, 0x003d, 0xf69663b9, 0x51960bf8},
561	{0x00a3, 0x0052, 0x643c39ae, 0xa93c73a8},
562	{0x0125, 0x00d5, 0x7c310b0d, 0xf221cbb3},
563	{0x0105, 0x004a, 0x06a77e74, 0xa4ef4561},
564	{0x0858, 0x008e, 0x265bc739, 0xd6c36d9b},
565	{0x045e, 0x0095, 0x13d6b192, 0x5f5c1d62},
566	{0x0dab, 0x003c, 0xc4498704, 0x10414654},
567	{0x00cd, 0x00b5, 0x802a4e2d, 0xfbd17c9d},
568	{0x069b, 0x008c, 0x5df60f71, 0x91ddca5f},
569	{0x0454, 0x006c, 0x5f03d8bb, 0x5c59fce0},
570	{0x040e, 0x0032, 0x0ce513b5, 0xa8cd99b1},
571	{0x0874, 0x00e2, 0x6a811fb3, 0xca028316},
572	{0x0521, 0x00b4, 0x93296833, 0x2c4d4880},
573	{0x0ddc, 0x00cf, 0xf9305338, 0x2c94210d},
574	{0x0a70, 0x0023, 0x239549ea, 0x22b561aa},
575	{0x083e, 0x0027, 0x2d88ba97, 0x5cd8bb9d},
576	{0x0241, 0x00a7, 0xfe0b32e1, 0x17b506b8},
577	{0x0dfc, 0x0096, 0x1a11e815, 0xee4141bd},
578	{0x023e, 0x001e, 0xebc9a1f3, 0x5689a1f3},
579	{0x067e, 0x0066, 0xb1067f81, 0xd9952571},
580	{0x09ea, 0x000e, 0x46fd7247, 0x42b57245},
581	{0x036b, 0x008c, 0x1a39acdf, 0x58bf1586},
582	{0x078f, 0x0030, 0x964042ab, 0xb04218b9},
583	{0x085c, 0x008f, 0x1829edab, 0x9ceca89c},
584	{0x02ec, 0x009f, 0x6aefa72d, 0x634cc2a7},
585	{0x043b, 0x00ce, 0x65642ff5, 0x6c8a584e},
586	{0x0a32, 0x00b8, 0xbd82759e, 0x0f96a34f},
587	{0x0d3c, 0x0087, 0xf4d66d54, 0xb71ba5f4},
588	{0x09ec, 0x008a, 0x06bfa1ff, 0x576ca80f},
589	{0x0902, 0x0015, 0x755025d2, 0x517225c2},
590	{0x08fe, 0x000e, 0xf690ce2d, 0xf690cf3d},
591	{0x00fb, 0x00dc, 0xe55f1528, 0x707d7d92},
592	{0x0eaa, 0x003a, 0x0fe0a8d7, 0x87638cc5},
593	{0x05fb, 0x0006, 0x86281cfb, 0x86281cf9},
594	{0x0dd1, 0x00a7, 0x60ab51b4, 0xe28ef00c},
595	{0x0005, 0x001b, 0xf51d969b, 0xe71dd6d3},
596	{0x077c, 0x00dd, 0xc2fed268, 0xdc30c555},
597	{0x0575, 0x00f5, 0x432c0b1a, 0x81dd7d16},
598	{0x05be, 0x0088, 0x78baa04b, 0xd69b433e},
599	{0x0c89, 0x0068, 0xeda9e428, 0xe9b4fa0a},
600	{0x0f5c, 0x0068, 0xec143c76, 0x9947067a},
601	{0x06a8, 0x0009, 0xd72651ce, 0xd72651ee},
602	{0x060f, 0x008e, 0x765426cd, 0x2099626f},
603	{0x07b1, 0x0047, 0x2cfcfa0c, 0x1a4baa07},
604	{0x04f1, 0x0041, 0x55b172f9, 0x15331a79},
605	{0x0e05, 0x00ac, 0x61efde93, 0x320568cc},
606	{0x0bf7, 0x0097, 0x05b83eee, 0xc72fb7a3},
607	{0x04e9, 0x00f3, 0x9928223a, 0xe8c77de2},
608	{0x023a, 0x0005, 0xdfada9bc, 0xdfadb9be},
609	{0x0acb, 0x000e, 0x2217cecd, 0x0017d6cd},
610	{0x0148, 0x0060, 0xbc3f7405, 0xf5fd6615},
611	{0x0764, 0x0059, 0xcbc201b1, 0xbb089bf4},
612	{0x021f, 0x0059, 0x5d6b2256, 0xa16a0a59},
613	{0x0f1e, 0x006c, 0xdefeeb45, 0xfc34f9d6},
614	{0x071c, 0x00b9, 0xb9b59309, 0xb645eae2},
615	{0x0564, 0x0063, 0xae064271, 0x954dc6d1},
616	{0x0b14, 0x0044, 0xdb867d9b, 0xdf432309},
617	{0x0e5a, 0x0055, 0xff06b685, 0xa65ff257},
618	{0x015e, 0x00ba, 0x1115ccbc, 0x11c365f4},
619	{0x0379, 0x00e6, 0x5f4e58dd, 0x2d176d31},
620	{0x013b, 0x0067, 0x4897427e, 0xc40532fe},
621	{0x0e64, 0x0071, 0x7af2b7a4, 0x1fb7bf43},
622	{0x0a11, 0x0050, 0x92105726, 0xb1185e51},
623	{0x0109, 0x0055, 0xd0d000f9, 0x60a60bfd},
624	{0x00aa, 0x0022, 0x815d229d, 0x215d379c},
625	{0x09ac, 0x004f, 0x02f9d985, 0x10b90b20},
626	{0x0e1b, 0x00ce, 0x5cf92ab4, 0x6a477573},
627	{0x08af, 0x00d8, 0x17ca72d1, 0x385af156},
628	{0x0e33, 0x000a, 0xda2dba6b, 0xda2dbb69},
629	{0x0ee3, 0x006a, 0xb00048e5, 0xa9a2decc},
630	{0x0648, 0x001a, 0x2364b8cb, 0x3364b1cb},
631	{0x0315, 0x0085, 0x0596fd0d, 0xa651740f},
632	{0x0fbb, 0x003e, 0x298230ca, 0x7fc617c7},
633	{0x0422, 0x006a, 0x78ada4ab, 0xc576ae2a},
634	{0x04ba, 0x0073, 0xced1fbc2, 0xaac8455b},
635	{0x007d, 0x0061, 0x4b7ff236, 0x347d5739},
636	{0x070b, 0x00d0, 0x261cf0ae, 0xc7fb1c10},
637	{0x0c1a, 0x0035, 0x8be92ee2, 0x8be9b4e1},
638	{0x0af8, 0x0063, 0x824dcf03, 0x53010388},
639	{0x08f8, 0x006d, 0xd289710c, 0x30418edd},
640	{0x021b, 0x00ee, 0x6ac1c41d, 0x2557e9a3},
641	{0x05b5, 0x00da, 0x8e52f0e2, 0x98531012},
642};
643
644int __init
645xfs_dahash_test(void)
646{
647	unsigned int	i;
648	unsigned int	errors = 0;
649
650	for (i = 0; i < ARRAY_SIZE(test); i++) {
651		struct xfs_name	xname = { };
652		xfs_dahash_t	hash;
653
654		hash = xfs_da_hashname(test_buf + test[i].start,
655				test[i].length);
656		if (hash != test[i].dahash)
657			errors++;
658
659		xname.name = test_buf + test[i].start;
660		xname.len = test[i].length;
661		hash = xfs_ascii_ci_hashname(&xname);
662		if (hash != test[i].ascii_ci_dahash)
663			errors++;
664	}
665
666	if (errors) {
667		printk(KERN_ERR "xfs dir/attr hash test failed %u times!",
668				errors);
669		return -ERANGE;
670	}
671
672	return 0;
673}
674