xorriso  1.5.4.pl02
About: GNU xorriso creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions. It is suitable for incremental data backup and for production of bootable ISO 9660 images. GNU xorriso is a statical compilation of the libraries libburn, libisofs, libisoburn, and libjte.
  Fossies Dox: xorriso-1.5.4.pl02.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

hfsplus_decompose_test.c
Go to the documentation of this file.
1 /*
2 cc -g -o demo/decompose libisofs/hfsplus_decompose_test.c
3 */
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdio.h>
7 
8 
9 #ifdef HAVE_CONFIG_H
10 #include "../config.h"
11 #endif
12 
13 #include "hfsplus.h"
14 
15 /* ====== Copy of original class pages : hfsplus_decompose_pages_old ======= */
16 
17 /*
18  Cased on tn1150 (HFS+ format specification)
19 */
20 
21 
22 static const uint16_t page00[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
23  [0xc0] = { 0x0041, 0x0300, 0x0000 },
24  [0xc1] = { 0x0041, 0x0301, 0x0000 },
25  [0xc2] = { 0x0041, 0x0302, 0x0000 },
26  [0xc3] = { 0x0041, 0x0303, 0x0000 },
27  [0xc4] = { 0x0041, 0x0308, 0x0000 },
28  [0xc5] = { 0x0041, 0x030A, 0x0000 },
29  [0xc7] = { 0x0043, 0x0327, 0x0000 },
30  [0xc8] = { 0x0045, 0x0300, 0x0000 },
31  [0xc9] = { 0x0045, 0x0301, 0x0000 },
32  [0xca] = { 0x0045, 0x0302, 0x0000 },
33  [0xcb] = { 0x0045, 0x0308, 0x0000 },
34  [0xcc] = { 0x0049, 0x0300, 0x0000 },
35  [0xcd] = { 0x0049, 0x0301, 0x0000 },
36  [0xce] = { 0x0049, 0x0302, 0x0000 },
37  [0xcf] = { 0x0049, 0x0308, 0x0000 },
38  [0xd1] = { 0x004E, 0x0303, 0x0000 },
39  [0xd2] = { 0x004F, 0x0300, 0x0000 },
40  [0xd3] = { 0x004F, 0x0301, 0x0000 },
41  [0xd4] = { 0x004F, 0x0302, 0x0000 },
42  [0xd5] = { 0x004F, 0x0303, 0x0000 },
43  [0xd6] = { 0x004F, 0x0308, 0x0000 },
44  [0xd9] = { 0x0055, 0x0300, 0x0000 },
45  [0xda] = { 0x0055, 0x0301, 0x0000 },
46  [0xdb] = { 0x0055, 0x0302, 0x0000 },
47  [0xdc] = { 0x0055, 0x0308, 0x0000 },
48  [0xdd] = { 0x0059, 0x0301, 0x0000 },
49  [0xe0] = { 0x0061, 0x0300, 0x0000 },
50  [0xe1] = { 0x0061, 0x0301, 0x0000 },
51  [0xe2] = { 0x0061, 0x0302, 0x0000 },
52  [0xe3] = { 0x0061, 0x0303, 0x0000 },
53  [0xe4] = { 0x0061, 0x0308, 0x0000 },
54  [0xe5] = { 0x0061, 0x030A, 0x0000 },
55  [0xe7] = { 0x0063, 0x0327, 0x0000 },
56  [0xe8] = { 0x0065, 0x0300, 0x0000 },
57  [0xe9] = { 0x0065, 0x0301, 0x0000 },
58  [0xea] = { 0x0065, 0x0302, 0x0000 },
59  [0xeb] = { 0x0065, 0x0308, 0x0000 },
60  [0xec] = { 0x0069, 0x0300, 0x0000 },
61  [0xed] = { 0x0069, 0x0301, 0x0000 },
62  [0xee] = { 0x0069, 0x0302, 0x0000 },
63  [0xef] = { 0x0069, 0x0308, 0x0000 },
64  [0xf1] = { 0x006E, 0x0303, 0x0000 },
65  [0xf2] = { 0x006F, 0x0300, 0x0000 },
66  [0xf3] = { 0x006F, 0x0301, 0x0000 },
67  [0xf4] = { 0x006F, 0x0302, 0x0000 },
68  [0xf5] = { 0x006F, 0x0303, 0x0000 },
69  [0xf6] = { 0x006F, 0x0308, 0x0000 },
70  [0xf9] = { 0x0075, 0x0300, 0x0000 },
71  [0xfa] = { 0x0075, 0x0301, 0x0000 },
72  [0xfb] = { 0x0075, 0x0302, 0x0000 },
73  [0xfc] = { 0x0075, 0x0308, 0x0000 },
74  [0xfd] = { 0x0079, 0x0301, 0x0000 },
75  [0xff] = { 0x0079, 0x0308, 0x0000 },
76 };
77 
78 static const uint16_t page01[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
79  [0x00] = { 0x0041, 0x0304, 0x0000 },
80  [0x01] = { 0x0061, 0x0304, 0x0000 },
81  [0x02] = { 0x0041, 0x0306, 0x0000 },
82  [0x03] = { 0x0061, 0x0306, 0x0000 },
83  [0x04] = { 0x0041, 0x0328, 0x0000 },
84  [0x05] = { 0x0061, 0x0328, 0x0000 },
85  [0x06] = { 0x0043, 0x0301, 0x0000 },
86  [0x07] = { 0x0063, 0x0301, 0x0000 },
87  [0x08] = { 0x0043, 0x0302, 0x0000 },
88  [0x09] = { 0x0063, 0x0302, 0x0000 },
89  [0x0a] = { 0x0043, 0x0307, 0x0000 },
90  [0x0b] = { 0x0063, 0x0307, 0x0000 },
91  [0x0c] = { 0x0043, 0x030C, 0x0000 },
92  [0x0d] = { 0x0063, 0x030C, 0x0000 },
93  [0x0e] = { 0x0044, 0x030C, 0x0000 },
94  [0x0f] = { 0x0064, 0x030C, 0x0000 },
95  [0x12] = { 0x0045, 0x0304, 0x0000 },
96  [0x13] = { 0x0065, 0x0304, 0x0000 },
97  [0x14] = { 0x0045, 0x0306, 0x0000 },
98  [0x15] = { 0x0065, 0x0306, 0x0000 },
99  [0x16] = { 0x0045, 0x0307, 0x0000 },
100  [0x17] = { 0x0065, 0x0307, 0x0000 },
101  [0x18] = { 0x0045, 0x0328, 0x0000 },
102  [0x19] = { 0x0065, 0x0328, 0x0000 },
103  [0x1a] = { 0x0045, 0x030C, 0x0000 },
104  [0x1b] = { 0x0065, 0x030C, 0x0000 },
105  [0x1c] = { 0x0047, 0x0302, 0x0000 },
106  [0x1d] = { 0x0067, 0x0302, 0x0000 },
107  [0x1e] = { 0x0047, 0x0306, 0x0000 },
108  [0x1f] = { 0x0067, 0x0306, 0x0000 },
109  [0x20] = { 0x0047, 0x0307, 0x0000 },
110  [0x21] = { 0x0067, 0x0307, 0x0000 },
111  [0x22] = { 0x0047, 0x0327, 0x0000 },
112  [0x23] = { 0x0067, 0x0327, 0x0000 },
113  [0x24] = { 0x0048, 0x0302, 0x0000 },
114  [0x25] = { 0x0068, 0x0302, 0x0000 },
115  [0x28] = { 0x0049, 0x0303, 0x0000 },
116  [0x29] = { 0x0069, 0x0303, 0x0000 },
117  [0x2a] = { 0x0049, 0x0304, 0x0000 },
118  [0x2b] = { 0x0069, 0x0304, 0x0000 },
119  [0x2c] = { 0x0049, 0x0306, 0x0000 },
120  [0x2d] = { 0x0069, 0x0306, 0x0000 },
121  [0x2e] = { 0x0049, 0x0328, 0x0000 },
122  [0x2f] = { 0x0069, 0x0328, 0x0000 },
123  [0x30] = { 0x0049, 0x0307, 0x0000 },
124  [0x34] = { 0x004A, 0x0302, 0x0000 },
125  [0x35] = { 0x006A, 0x0302, 0x0000 },
126  [0x36] = { 0x004B, 0x0327, 0x0000 },
127  [0x37] = { 0x006B, 0x0327, 0x0000 },
128  [0x39] = { 0x004C, 0x0301, 0x0000 },
129  [0x3a] = { 0x006C, 0x0301, 0x0000 },
130  [0x3b] = { 0x004C, 0x0327, 0x0000 },
131  [0x3c] = { 0x006C, 0x0327, 0x0000 },
132  [0x3d] = { 0x004C, 0x030C, 0x0000 },
133  [0x3e] = { 0x006C, 0x030C, 0x0000 },
134  [0x43] = { 0x004E, 0x0301, 0x0000 },
135  [0x44] = { 0x006E, 0x0301, 0x0000 },
136  [0x45] = { 0x004E, 0x0327, 0x0000 },
137  [0x46] = { 0x006E, 0x0327, 0x0000 },
138  [0x47] = { 0x004E, 0x030C, 0x0000 },
139  [0x48] = { 0x006E, 0x030C, 0x0000 },
140  [0x4c] = { 0x004F, 0x0304, 0x0000 },
141  [0x4d] = { 0x006F, 0x0304, 0x0000 },
142  [0x4e] = { 0x004F, 0x0306, 0x0000 },
143  [0x4f] = { 0x006F, 0x0306, 0x0000 },
144  [0x50] = { 0x004F, 0x030B, 0x0000 },
145  [0x51] = { 0x006F, 0x030B, 0x0000 },
146  [0x54] = { 0x0052, 0x0301, 0x0000 },
147  [0x55] = { 0x0072, 0x0301, 0x0000 },
148  [0x56] = { 0x0052, 0x0327, 0x0000 },
149  [0x57] = { 0x0072, 0x0327, 0x0000 },
150  [0x58] = { 0x0052, 0x030C, 0x0000 },
151  [0x59] = { 0x0072, 0x030C, 0x0000 },
152  [0x5a] = { 0x0053, 0x0301, 0x0000 },
153  [0x5b] = { 0x0073, 0x0301, 0x0000 },
154  [0x5c] = { 0x0053, 0x0302, 0x0000 },
155  [0x5d] = { 0x0073, 0x0302, 0x0000 },
156  [0x5e] = { 0x0053, 0x0327, 0x0000 },
157  [0x5f] = { 0x0073, 0x0327, 0x0000 },
158  [0x60] = { 0x0053, 0x030C, 0x0000 },
159  [0x61] = { 0x0073, 0x030C, 0x0000 },
160  [0x62] = { 0x0054, 0x0327, 0x0000 },
161  [0x63] = { 0x0074, 0x0327, 0x0000 },
162  [0x64] = { 0x0054, 0x030C, 0x0000 },
163  [0x65] = { 0x0074, 0x030C, 0x0000 },
164  [0x68] = { 0x0055, 0x0303, 0x0000 },
165  [0x69] = { 0x0075, 0x0303, 0x0000 },
166  [0x6a] = { 0x0055, 0x0304, 0x0000 },
167  [0x6b] = { 0x0075, 0x0304, 0x0000 },
168  [0x6c] = { 0x0055, 0x0306, 0x0000 },
169  [0x6d] = { 0x0075, 0x0306, 0x0000 },
170  [0x6e] = { 0x0055, 0x030A, 0x0000 },
171  [0x6f] = { 0x0075, 0x030A, 0x0000 },
172  [0x70] = { 0x0055, 0x030B, 0x0000 },
173  [0x71] = { 0x0075, 0x030B, 0x0000 },
174  [0x72] = { 0x0055, 0x0328, 0x0000 },
175  [0x73] = { 0x0075, 0x0328, 0x0000 },
176  [0x74] = { 0x0057, 0x0302, 0x0000 },
177  [0x75] = { 0x0077, 0x0302, 0x0000 },
178  [0x76] = { 0x0059, 0x0302, 0x0000 },
179  [0x77] = { 0x0079, 0x0302, 0x0000 },
180  [0x78] = { 0x0059, 0x0308, 0x0000 },
181  [0x79] = { 0x005A, 0x0301, 0x0000 },
182  [0x7a] = { 0x007A, 0x0301, 0x0000 },
183  [0x7b] = { 0x005A, 0x0307, 0x0000 },
184  [0x7c] = { 0x007A, 0x0307, 0x0000 },
185  [0x7d] = { 0x005A, 0x030C, 0x0000 },
186  [0x7e] = { 0x007A, 0x030C, 0x0000 },
187  [0xa0] = { 0x004F, 0x031B, 0x0000 },
188  [0xa1] = { 0x006F, 0x031B, 0x0000 },
189  [0xaf] = { 0x0055, 0x031B, 0x0000 },
190  [0xb0] = { 0x0075, 0x031B, 0x0000 },
191  [0xcd] = { 0x0041, 0x030C, 0x0000 },
192  [0xce] = { 0x0061, 0x030C, 0x0000 },
193  [0xcf] = { 0x0049, 0x030C, 0x0000 },
194  [0xd0] = { 0x0069, 0x030C, 0x0000 },
195  [0xd1] = { 0x004F, 0x030C, 0x0000 },
196  [0xd2] = { 0x006F, 0x030C, 0x0000 },
197  [0xd3] = { 0x0055, 0x030C, 0x0000 },
198  [0xd4] = { 0x0075, 0x030C, 0x0000 },
199  [0xd5] = { 0x0055, 0x0308, 0x0304, 0x0000 },
200  [0xd6] = { 0x0075, 0x0308, 0x0304, 0x0000 },
201  [0xd7] = { 0x0055, 0x0308, 0x0301, 0x0000 },
202  [0xd8] = { 0x0075, 0x0308, 0x0301, 0x0000 },
203  [0xd9] = { 0x0055, 0x0308, 0x030C, 0x0000 },
204  [0xda] = { 0x0075, 0x0308, 0x030C, 0x0000 },
205  [0xdb] = { 0x0055, 0x0308, 0x0300, 0x0000 },
206  [0xdc] = { 0x0075, 0x0308, 0x0300, 0x0000 },
207  [0xde] = { 0x0041, 0x0308, 0x0304, 0x0000 },
208  [0xdf] = { 0x0061, 0x0308, 0x0304, 0x0000 },
209  [0xe0] = { 0x0041, 0x0307, 0x0304, 0x0000 },
210  [0xe1] = { 0x0061, 0x0307, 0x0304, 0x0000 },
211  [0xe2] = { 0x00C6, 0x0304, 0x0000 },
212  [0xe3] = { 0x00E6, 0x0304, 0x0000 },
213  [0xe6] = { 0x0047, 0x030C, 0x0000 },
214  [0xe7] = { 0x0067, 0x030C, 0x0000 },
215  [0xe8] = { 0x004B, 0x030C, 0x0000 },
216  [0xe9] = { 0x006B, 0x030C, 0x0000 },
217  [0xea] = { 0x004F, 0x0328, 0x0000 },
218  [0xeb] = { 0x006F, 0x0328, 0x0000 },
219  [0xec] = { 0x004F, 0x0328, 0x0304, 0x0000 },
220  [0xed] = { 0x006F, 0x0328, 0x0304, 0x0000 },
221  [0xee] = { 0x01B7, 0x030C, 0x0000 },
222  [0xef] = { 0x0292, 0x030C, 0x0000 },
223  [0xf0] = { 0x006A, 0x030C, 0x0000 },
224  [0xf4] = { 0x0047, 0x0301, 0x0000 },
225  [0xf5] = { 0x0067, 0x0301, 0x0000 },
226  [0xfa] = { 0x0041, 0x030A, 0x0301, 0x0000 },
227  [0xfb] = { 0x0061, 0x030A, 0x0301, 0x0000 },
228  [0xfc] = { 0x00C6, 0x0301, 0x0000 },
229  [0xfd] = { 0x00E6, 0x0301, 0x0000 },
230  [0xfe] = { 0x00D8, 0x0301, 0x0000 },
231  [0xff] = { 0x00F8, 0x0301, 0x0000 },
232 };
233 
234 static const uint16_t page02[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
235  [0x00] = { 0x0041, 0x030F, 0x0000 },
236  [0x01] = { 0x0061, 0x030F, 0x0000 },
237  [0x02] = { 0x0041, 0x0311, 0x0000 },
238  [0x03] = { 0x0061, 0x0311, 0x0000 },
239  [0x04] = { 0x0045, 0x030F, 0x0000 },
240  [0x05] = { 0x0065, 0x030F, 0x0000 },
241  [0x06] = { 0x0045, 0x0311, 0x0000 },
242  [0x07] = { 0x0065, 0x0311, 0x0000 },
243  [0x08] = { 0x0049, 0x030F, 0x0000 },
244  [0x09] = { 0x0069, 0x030F, 0x0000 },
245  [0x0a] = { 0x0049, 0x0311, 0x0000 },
246  [0x0b] = { 0x0069, 0x0311, 0x0000 },
247  [0x0c] = { 0x004F, 0x030F, 0x0000 },
248  [0x0d] = { 0x006F, 0x030F, 0x0000 },
249  [0x0e] = { 0x004F, 0x0311, 0x0000 },
250  [0x0f] = { 0x006F, 0x0311, 0x0000 },
251  [0x10] = { 0x0052, 0x030F, 0x0000 },
252  [0x11] = { 0x0072, 0x030F, 0x0000 },
253  [0x12] = { 0x0052, 0x0311, 0x0000 },
254  [0x13] = { 0x0072, 0x0311, 0x0000 },
255  [0x14] = { 0x0055, 0x030F, 0x0000 },
256  [0x15] = { 0x0075, 0x030F, 0x0000 },
257  [0x16] = { 0x0055, 0x0311, 0x0000 },
258  [0x17] = { 0x0075, 0x0311, 0x0000 },
259 };
260 
261 static const uint16_t page03[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
262  [0x10] = { 0x0306, 0x0307, 0x0000 },
263  [0x40] = { 0x0300, 0x0000 },
264  [0x41] = { 0x0301, 0x0000 },
265  [0x43] = { 0x0313, 0x0000 },
266  [0x44] = { 0x0308, 0x030D, 0x0000 },
267  [0x74] = { 0x02B9, 0x0000 },
268  [0x7e] = { 0x003B, 0x0000 },
269  [0x85] = { 0x00A8, 0x030D, 0x0000 },
270  [0x86] = { 0x0391, 0x030D, 0x0000 },
271  [0x87] = { 0x00B7, 0x0000 },
272  [0x88] = { 0x0395, 0x030D, 0x0000 },
273  [0x89] = { 0x0397, 0x030D, 0x0000 },
274  [0x8a] = { 0x0399, 0x030D, 0x0000 },
275  [0x8c] = { 0x039F, 0x030D, 0x0000 },
276  [0x8e] = { 0x03A5, 0x030D, 0x0000 },
277  [0x8f] = { 0x03A9, 0x030D, 0x0000 },
278  [0x90] = { 0x03B9, 0x0308, 0x030D, 0x0000 },
279  [0xaa] = { 0x0399, 0x0308, 0x0000 },
280  [0xab] = { 0x03A5, 0x0308, 0x0000 },
281  [0xac] = { 0x03B1, 0x030D, 0x0000 },
282  [0xad] = { 0x03B5, 0x030D, 0x0000 },
283  [0xae] = { 0x03B7, 0x030D, 0x0000 },
284  [0xaf] = { 0x03B9, 0x030D, 0x0000 },
285  [0xb0] = { 0x03C5, 0x0308, 0x030D, 0x0000 },
286  [0xca] = { 0x03B9, 0x0308, 0x0000 },
287  [0xcb] = { 0x03C5, 0x0308, 0x0000 },
288  [0xcc] = { 0x03BF, 0x030D, 0x0000 },
289  [0xcd] = { 0x03C5, 0x030D, 0x0000 },
290  [0xce] = { 0x03C9, 0x030D, 0x0000 },
291  [0xd3] = { 0x03D2, 0x030D, 0x0000 },
292  [0xd4] = { 0x03D2, 0x0308, 0x0000 },
293 };
294 
295 static const uint16_t page04[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
296  [0x01] = { 0x0415, 0x0308, 0x0000 },
297  [0x03] = { 0x0413, 0x0301, 0x0000 },
298  [0x07] = { 0x0406, 0x0308, 0x0000 },
299  [0x0c] = { 0x041A, 0x0301, 0x0000 },
300  [0x0e] = { 0x0423, 0x0306, 0x0000 },
301  [0x19] = { 0x0418, 0x0306, 0x0000 },
302  [0x39] = { 0x0438, 0x0306, 0x0000 },
303  [0x51] = { 0x0435, 0x0308, 0x0000 },
304  [0x53] = { 0x0433, 0x0301, 0x0000 },
305  [0x57] = { 0x0456, 0x0308, 0x0000 },
306  [0x5c] = { 0x043A, 0x0301, 0x0000 },
307  [0x5e] = { 0x0443, 0x0306, 0x0000 },
308  [0x76] = { 0x0474, 0x030F, 0x0000 },
309  [0x77] = { 0x0475, 0x030F, 0x0000 },
310  [0xc1] = { 0x0416, 0x0306, 0x0000 },
311  [0xc2] = { 0x0436, 0x0306, 0x0000 },
312  [0xd0] = { 0x0410, 0x0306, 0x0000 },
313  [0xd1] = { 0x0430, 0x0306, 0x0000 },
314  [0xd2] = { 0x0410, 0x0308, 0x0000 },
315  [0xd3] = { 0x0430, 0x0308, 0x0000 },
316  [0xd4] = { 0x00C6, 0x0000 },
317  [0xd5] = { 0x00E6, 0x0000 },
318  [0xd6] = { 0x0415, 0x0306, 0x0000 },
319  [0xd7] = { 0x0435, 0x0306, 0x0000 },
320  [0xd8] = { 0x018F, 0x0000 },
321  [0xd9] = { 0x0259, 0x0000 },
322  [0xda] = { 0x018F, 0x0308, 0x0000 },
323  [0xdb] = { 0x0259, 0x0308, 0x0000 },
324  [0xdc] = { 0x0416, 0x0308, 0x0000 },
325  [0xdd] = { 0x0436, 0x0308, 0x0000 },
326  [0xde] = { 0x0417, 0x0308, 0x0000 },
327  [0xdf] = { 0x0437, 0x0308, 0x0000 },
328  [0xe0] = { 0x01B7, 0x0000 },
329  [0xe1] = { 0x0292, 0x0000 },
330  [0xe2] = { 0x0418, 0x0304, 0x0000 },
331  [0xe3] = { 0x0438, 0x0304, 0x0000 },
332  [0xe4] = { 0x0418, 0x0308, 0x0000 },
333  [0xe5] = { 0x0438, 0x0308, 0x0000 },
334  [0xe6] = { 0x041E, 0x0308, 0x0000 },
335  [0xe7] = { 0x043E, 0x0308, 0x0000 },
336  [0xe8] = { 0x019F, 0x0000 },
337  [0xe9] = { 0x0275, 0x0000 },
338  [0xea] = { 0x019F, 0x0308, 0x0000 },
339  [0xeb] = { 0x0275, 0x0308, 0x0000 },
340  [0xee] = { 0x0423, 0x0304, 0x0000 },
341  [0xef] = { 0x0443, 0x0304, 0x0000 },
342  [0xf0] = { 0x0423, 0x0308, 0x0000 },
343  [0xf1] = { 0x0443, 0x0308, 0x0000 },
344  [0xf2] = { 0x0423, 0x030B, 0x0000 },
345  [0xf3] = { 0x0443, 0x030B, 0x0000 },
346  [0xf4] = { 0x0427, 0x0308, 0x0000 },
347  [0xf5] = { 0x0447, 0x0308, 0x0000 },
348  [0xf8] = { 0x042B, 0x0308, 0x0000 },
349  [0xf9] = { 0x044B, 0x0308, 0x0000 },
350 };
351 
352 static const uint16_t page09[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
353  [0x29] = { 0x0928, 0x093C, 0x0000 },
354  [0x31] = { 0x0930, 0x093C, 0x0000 },
355  [0x34] = { 0x0933, 0x093C, 0x0000 },
356  [0x58] = { 0x0915, 0x093C, 0x0000 },
357  [0x59] = { 0x0916, 0x093C, 0x0000 },
358  [0x5a] = { 0x0917, 0x093C, 0x0000 },
359  [0x5b] = { 0x091C, 0x093C, 0x0000 },
360  [0x5c] = { 0x0921, 0x093C, 0x0000 },
361  [0x5d] = { 0x0922, 0x093C, 0x0000 },
362  [0x5e] = { 0x092B, 0x093C, 0x0000 },
363  [0x5f] = { 0x092F, 0x093C, 0x0000 },
364  [0xb0] = { 0x09AC, 0x09BC, 0x0000 },
365  [0xcb] = { 0x09C7, 0x09BE, 0x0000 },
366  [0xcc] = { 0x09C7, 0x09D7, 0x0000 },
367  [0xdc] = { 0x09A1, 0x09BC, 0x0000 },
368  [0xdd] = { 0x09A2, 0x09BC, 0x0000 },
369  [0xdf] = { 0x09AF, 0x09BC, 0x0000 },
370 };
371 
372 static const uint16_t page0a[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
373  [0x59] = { 0x0A16, 0x0A3C, 0x0000 },
374  [0x5a] = { 0x0A17, 0x0A3C, 0x0000 },
375  [0x5b] = { 0x0A1C, 0x0A3C, 0x0000 },
376  [0x5c] = { 0x0A21, 0x0A3C, 0x0000 },
377  [0x5e] = { 0x0A2B, 0x0A3C, 0x0000 },
378 };
379 
380 static const uint16_t page0b[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
381  [0x48] = { 0x0B47, 0x0B56, 0x0000 },
382  [0x4b] = { 0x0B47, 0x0B3E, 0x0000 },
383  [0x4c] = { 0x0B47, 0x0B57, 0x0000 },
384  [0x5c] = { 0x0B21, 0x0B3C, 0x0000 },
385  [0x5d] = { 0x0B22, 0x0B3C, 0x0000 },
386  [0x5f] = { 0x0B2F, 0x0B3C, 0x0000 },
387  [0x94] = { 0x0B92, 0x0BD7, 0x0000 },
388  [0xca] = { 0x0BC6, 0x0BBE, 0x0000 },
389  [0xcb] = { 0x0BC7, 0x0BBE, 0x0000 },
390  [0xcc] = { 0x0BC6, 0x0BD7, 0x0000 },
391 };
392 
393 static const uint16_t page0c[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
394  [0x48] = { 0x0C46, 0x0C56, 0x0000 },
395  [0xc0] = { 0x0CBF, 0x0CD5, 0x0000 },
396  [0xc7] = { 0x0CC6, 0x0CD5, 0x0000 },
397  [0xc8] = { 0x0CC6, 0x0CD6, 0x0000 },
398  [0xca] = { 0x0CC6, 0x0CC2, 0x0000 },
399  [0xcb] = { 0x0CC6, 0x0CC2, 0x0CD5, 0x0000 },
400 };
401 
402 static const uint16_t page0d[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
403  [0x4a] = { 0x0D46, 0x0D3E, 0x0000 },
404  [0x4b] = { 0x0D47, 0x0D3E, 0x0000 },
405  [0x4c] = { 0x0D46, 0x0D57, 0x0000 },
406 };
407 
408 static const uint16_t page0e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
409  [0x33] = { 0x0E4D, 0x0E32, 0x0000 },
410  [0xb3] = { 0x0ECD, 0x0EB2, 0x0000 },
411 };
412 
413 static const uint16_t page0f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
414  [0x43] = { 0x0F42, 0x0FB7, 0x0000 },
415  [0x4d] = { 0x0F4C, 0x0FB7, 0x0000 },
416  [0x52] = { 0x0F51, 0x0FB7, 0x0000 },
417  [0x57] = { 0x0F56, 0x0FB7, 0x0000 },
418  [0x5c] = { 0x0F5B, 0x0FB7, 0x0000 },
419  [0x69] = { 0x0F40, 0x0FB5, 0x0000 },
420  [0x73] = { 0x0F72, 0x0F71, 0x0000 },
421  [0x75] = { 0x0F74, 0x0F71, 0x0000 },
422  [0x76] = { 0x0FB2, 0x0F80, 0x0000 },
423  [0x77] = { 0x0FB2, 0x0F80, 0x0F71, 0x0000 },
424  [0x78] = { 0x0FB3, 0x0F80, 0x0000 },
425  [0x79] = { 0x0FB3, 0x0F80, 0x0F71, 0x0000 },
426  [0x81] = { 0x0F80, 0x0F71, 0x0000 },
427  [0x93] = { 0x0F92, 0x0FB7, 0x0000 },
428  [0x9d] = { 0x0F9C, 0x0FB7, 0x0000 },
429  [0xa2] = { 0x0FA1, 0x0FB7, 0x0000 },
430  [0xa7] = { 0x0FA6, 0x0FB7, 0x0000 },
431  [0xac] = { 0x0FAB, 0x0FB7, 0x0000 },
432  [0xb9] = { 0x0F90, 0x0FB5, 0x0000 },
433 };
434 
435 static const uint16_t page1e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
436  [0x00] = { 0x0041, 0x0325, 0x0000 },
437  [0x01] = { 0x0061, 0x0325, 0x0000 },
438  [0x02] = { 0x0042, 0x0307, 0x0000 },
439  [0x03] = { 0x0062, 0x0307, 0x0000 },
440  [0x04] = { 0x0042, 0x0323, 0x0000 },
441  [0x05] = { 0x0062, 0x0323, 0x0000 },
442  [0x06] = { 0x0042, 0x0331, 0x0000 },
443  [0x07] = { 0x0062, 0x0331, 0x0000 },
444  [0x08] = { 0x0043, 0x0327, 0x0301, 0x0000 },
445  [0x09] = { 0x0063, 0x0327, 0x0301, 0x0000 },
446  [0x0a] = { 0x0044, 0x0307, 0x0000 },
447  [0x0b] = { 0x0064, 0x0307, 0x0000 },
448  [0x0c] = { 0x0044, 0x0323, 0x0000 },
449  [0x0d] = { 0x0064, 0x0323, 0x0000 },
450  [0x0e] = { 0x0044, 0x0331, 0x0000 },
451  [0x0f] = { 0x0064, 0x0331, 0x0000 },
452  [0x10] = { 0x0044, 0x0327, 0x0000 },
453  [0x11] = { 0x0064, 0x0327, 0x0000 },
454  [0x12] = { 0x0044, 0x032D, 0x0000 },
455  [0x13] = { 0x0064, 0x032D, 0x0000 },
456  [0x14] = { 0x0045, 0x0304, 0x0300, 0x0000 },
457  [0x15] = { 0x0065, 0x0304, 0x0300, 0x0000 },
458  [0x16] = { 0x0045, 0x0304, 0x0301, 0x0000 },
459  [0x17] = { 0x0065, 0x0304, 0x0301, 0x0000 },
460  [0x18] = { 0x0045, 0x032D, 0x0000 },
461  [0x19] = { 0x0065, 0x032D, 0x0000 },
462  [0x1a] = { 0x0045, 0x0330, 0x0000 },
463  [0x1b] = { 0x0065, 0x0330, 0x0000 },
464  [0x1c] = { 0x0045, 0x0327, 0x0306, 0x0000 },
465  [0x1d] = { 0x0065, 0x0327, 0x0306, 0x0000 },
466  [0x1e] = { 0x0046, 0x0307, 0x0000 },
467  [0x1f] = { 0x0066, 0x0307, 0x0000 },
468  [0x20] = { 0x0047, 0x0304, 0x0000 },
469  [0x21] = { 0x0067, 0x0304, 0x0000 },
470  [0x22] = { 0x0048, 0x0307, 0x0000 },
471  [0x23] = { 0x0068, 0x0307, 0x0000 },
472  [0x24] = { 0x0048, 0x0323, 0x0000 },
473  [0x25] = { 0x0068, 0x0323, 0x0000 },
474  [0x26] = { 0x0048, 0x0308, 0x0000 },
475  [0x27] = { 0x0068, 0x0308, 0x0000 },
476  [0x28] = { 0x0048, 0x0327, 0x0000 },
477  [0x29] = { 0x0068, 0x0327, 0x0000 },
478  [0x2a] = { 0x0048, 0x032E, 0x0000 },
479  [0x2b] = { 0x0068, 0x032E, 0x0000 },
480  [0x2c] = { 0x0049, 0x0330, 0x0000 },
481  [0x2d] = { 0x0069, 0x0330, 0x0000 },
482  [0x2e] = { 0x0049, 0x0308, 0x0301, 0x0000 },
483  [0x2f] = { 0x0069, 0x0308, 0x0301, 0x0000 },
484  [0x30] = { 0x004B, 0x0301, 0x0000 },
485  [0x31] = { 0x006B, 0x0301, 0x0000 },
486  [0x32] = { 0x004B, 0x0323, 0x0000 },
487  [0x33] = { 0x006B, 0x0323, 0x0000 },
488  [0x34] = { 0x004B, 0x0331, 0x0000 },
489  [0x35] = { 0x006B, 0x0331, 0x0000 },
490  [0x36] = { 0x004C, 0x0323, 0x0000 },
491  [0x37] = { 0x006C, 0x0323, 0x0000 },
492  [0x38] = { 0x004C, 0x0323, 0x0304, 0x0000 },
493  [0x39] = { 0x006C, 0x0323, 0x0304, 0x0000 },
494  [0x3a] = { 0x004C, 0x0331, 0x0000 },
495  [0x3b] = { 0x006C, 0x0331, 0x0000 },
496  [0x3c] = { 0x004C, 0x032D, 0x0000 },
497  [0x3d] = { 0x006C, 0x032D, 0x0000 },
498  [0x3e] = { 0x004D, 0x0301, 0x0000 },
499  [0x3f] = { 0x006D, 0x0301, 0x0000 },
500  [0x40] = { 0x004D, 0x0307, 0x0000 },
501  [0x41] = { 0x006D, 0x0307, 0x0000 },
502  [0x42] = { 0x004D, 0x0323, 0x0000 },
503  [0x43] = { 0x006D, 0x0323, 0x0000 },
504  [0x44] = { 0x004E, 0x0307, 0x0000 },
505  [0x45] = { 0x006E, 0x0307, 0x0000 },
506  [0x46] = { 0x004E, 0x0323, 0x0000 },
507  [0x47] = { 0x006E, 0x0323, 0x0000 },
508  [0x48] = { 0x004E, 0x0331, 0x0000 },
509  [0x49] = { 0x006E, 0x0331, 0x0000 },
510  [0x4a] = { 0x004E, 0x032D, 0x0000 },
511  [0x4b] = { 0x006E, 0x032D, 0x0000 },
512  [0x4c] = { 0x004F, 0x0303, 0x0301, 0x0000 },
513  [0x4d] = { 0x006F, 0x0303, 0x0301, 0x0000 },
514  [0x4e] = { 0x004F, 0x0303, 0x0308, 0x0000 },
515  [0x4f] = { 0x006F, 0x0303, 0x0308, 0x0000 },
516  [0x50] = { 0x004F, 0x0304, 0x0300, 0x0000 },
517  [0x51] = { 0x006F, 0x0304, 0x0300, 0x0000 },
518  [0x52] = { 0x004F, 0x0304, 0x0301, 0x0000 },
519  [0x53] = { 0x006F, 0x0304, 0x0301, 0x0000 },
520  [0x54] = { 0x0050, 0x0301, 0x0000 },
521  [0x55] = { 0x0070, 0x0301, 0x0000 },
522  [0x56] = { 0x0050, 0x0307, 0x0000 },
523  [0x57] = { 0x0070, 0x0307, 0x0000 },
524  [0x58] = { 0x0052, 0x0307, 0x0000 },
525  [0x59] = { 0x0072, 0x0307, 0x0000 },
526  [0x5a] = { 0x0052, 0x0323, 0x0000 },
527  [0x5b] = { 0x0072, 0x0323, 0x0000 },
528  [0x5c] = { 0x0052, 0x0323, 0x0304, 0x0000 },
529  [0x5d] = { 0x0072, 0x0323, 0x0304, 0x0000 },
530  [0x5e] = { 0x0052, 0x0331, 0x0000 },
531  [0x5f] = { 0x0072, 0x0331, 0x0000 },
532  [0x60] = { 0x0053, 0x0307, 0x0000 },
533  [0x61] = { 0x0073, 0x0307, 0x0000 },
534  [0x62] = { 0x0053, 0x0323, 0x0000 },
535  [0x63] = { 0x0073, 0x0323, 0x0000 },
536  [0x64] = { 0x0053, 0x0301, 0x0307, 0x0000 },
537  [0x65] = { 0x0073, 0x0301, 0x0307, 0x0000 },
538  [0x66] = { 0x0053, 0x030C, 0x0307, 0x0000 },
539  [0x67] = { 0x0073, 0x030C, 0x0307, 0x0000 },
540  [0x68] = { 0x0053, 0x0323, 0x0307, 0x0000 },
541  [0x69] = { 0x0073, 0x0323, 0x0307, 0x0000 },
542  [0x6a] = { 0x0054, 0x0307, 0x0000 },
543  [0x6b] = { 0x0074, 0x0307, 0x0000 },
544  [0x6c] = { 0x0054, 0x0323, 0x0000 },
545  [0x6d] = { 0x0074, 0x0323, 0x0000 },
546  [0x6e] = { 0x0054, 0x0331, 0x0000 },
547  [0x6f] = { 0x0074, 0x0331, 0x0000 },
548  [0x70] = { 0x0054, 0x032D, 0x0000 },
549  [0x71] = { 0x0074, 0x032D, 0x0000 },
550  [0x72] = { 0x0055, 0x0324, 0x0000 },
551  [0x73] = { 0x0075, 0x0324, 0x0000 },
552  [0x74] = { 0x0055, 0x0330, 0x0000 },
553  [0x75] = { 0x0075, 0x0330, 0x0000 },
554  [0x76] = { 0x0055, 0x032D, 0x0000 },
555  [0x77] = { 0x0075, 0x032D, 0x0000 },
556  [0x78] = { 0x0055, 0x0303, 0x0301, 0x0000 },
557  [0x79] = { 0x0075, 0x0303, 0x0301, 0x0000 },
558  [0x7a] = { 0x0055, 0x0304, 0x0308, 0x0000 },
559  [0x7b] = { 0x0075, 0x0304, 0x0308, 0x0000 },
560  [0x7c] = { 0x0056, 0x0303, 0x0000 },
561  [0x7d] = { 0x0076, 0x0303, 0x0000 },
562  [0x7e] = { 0x0056, 0x0323, 0x0000 },
563  [0x7f] = { 0x0076, 0x0323, 0x0000 },
564  [0x80] = { 0x0057, 0x0300, 0x0000 },
565  [0x81] = { 0x0077, 0x0300, 0x0000 },
566  [0x82] = { 0x0057, 0x0301, 0x0000 },
567  [0x83] = { 0x0077, 0x0301, 0x0000 },
568  [0x84] = { 0x0057, 0x0308, 0x0000 },
569  [0x85] = { 0x0077, 0x0308, 0x0000 },
570  [0x86] = { 0x0057, 0x0307, 0x0000 },
571  [0x87] = { 0x0077, 0x0307, 0x0000 },
572  [0x88] = { 0x0057, 0x0323, 0x0000 },
573  [0x89] = { 0x0077, 0x0323, 0x0000 },
574  [0x8a] = { 0x0058, 0x0307, 0x0000 },
575  [0x8b] = { 0x0078, 0x0307, 0x0000 },
576  [0x8c] = { 0x0058, 0x0308, 0x0000 },
577  [0x8d] = { 0x0078, 0x0308, 0x0000 },
578  [0x8e] = { 0x0059, 0x0307, 0x0000 },
579  [0x8f] = { 0x0079, 0x0307, 0x0000 },
580  [0x90] = { 0x005A, 0x0302, 0x0000 },
581  [0x91] = { 0x007A, 0x0302, 0x0000 },
582  [0x92] = { 0x005A, 0x0323, 0x0000 },
583  [0x93] = { 0x007A, 0x0323, 0x0000 },
584  [0x94] = { 0x005A, 0x0331, 0x0000 },
585  [0x95] = { 0x007A, 0x0331, 0x0000 },
586  [0x96] = { 0x0068, 0x0331, 0x0000 },
587  [0x97] = { 0x0074, 0x0308, 0x0000 },
588  [0x98] = { 0x0077, 0x030A, 0x0000 },
589  [0x99] = { 0x0079, 0x030A, 0x0000 },
590  [0x9b] = { 0x017F, 0x0307, 0x0000 },
591  [0xa0] = { 0x0041, 0x0323, 0x0000 },
592  [0xa1] = { 0x0061, 0x0323, 0x0000 },
593  [0xa2] = { 0x0041, 0x0309, 0x0000 },
594  [0xa3] = { 0x0061, 0x0309, 0x0000 },
595  [0xa4] = { 0x0041, 0x0302, 0x0301, 0x0000 },
596  [0xa5] = { 0x0061, 0x0302, 0x0301, 0x0000 },
597  [0xa6] = { 0x0041, 0x0302, 0x0300, 0x0000 },
598  [0xa7] = { 0x0061, 0x0302, 0x0300, 0x0000 },
599  [0xa8] = { 0x0041, 0x0302, 0x0309, 0x0000 },
600  [0xa9] = { 0x0061, 0x0302, 0x0309, 0x0000 },
601  [0xaa] = { 0x0041, 0x0302, 0x0303, 0x0000 },
602  [0xab] = { 0x0061, 0x0302, 0x0303, 0x0000 },
603  [0xac] = { 0x0041, 0x0323, 0x0302, 0x0000 },
604  [0xad] = { 0x0061, 0x0323, 0x0302, 0x0000 },
605  [0xae] = { 0x0041, 0x0306, 0x0301, 0x0000 },
606  [0xaf] = { 0x0061, 0x0306, 0x0301, 0x0000 },
607  [0xb0] = { 0x0041, 0x0306, 0x0300, 0x0000 },
608  [0xb1] = { 0x0061, 0x0306, 0x0300, 0x0000 },
609  [0xb2] = { 0x0041, 0x0306, 0x0309, 0x0000 },
610  [0xb3] = { 0x0061, 0x0306, 0x0309, 0x0000 },
611  [0xb4] = { 0x0041, 0x0306, 0x0303, 0x0000 },
612  [0xb5] = { 0x0061, 0x0306, 0x0303, 0x0000 },
613  [0xb6] = { 0x0041, 0x0323, 0x0306, 0x0000 },
614  [0xb7] = { 0x0061, 0x0323, 0x0306, 0x0000 },
615  [0xb8] = { 0x0045, 0x0323, 0x0000 },
616  [0xb9] = { 0x0065, 0x0323, 0x0000 },
617  [0xba] = { 0x0045, 0x0309, 0x0000 },
618  [0xbb] = { 0x0065, 0x0309, 0x0000 },
619  [0xbc] = { 0x0045, 0x0303, 0x0000 },
620  [0xbd] = { 0x0065, 0x0303, 0x0000 },
621  [0xbe] = { 0x0045, 0x0302, 0x0301, 0x0000 },
622  [0xbf] = { 0x0065, 0x0302, 0x0301, 0x0000 },
623  [0xc0] = { 0x0045, 0x0302, 0x0300, 0x0000 },
624  [0xc1] = { 0x0065, 0x0302, 0x0300, 0x0000 },
625  [0xc2] = { 0x0045, 0x0302, 0x0309, 0x0000 },
626  [0xc3] = { 0x0065, 0x0302, 0x0309, 0x0000 },
627  [0xc4] = { 0x0045, 0x0302, 0x0303, 0x0000 },
628  [0xc5] = { 0x0065, 0x0302, 0x0303, 0x0000 },
629  [0xc6] = { 0x0045, 0x0323, 0x0302, 0x0000 },
630  [0xc7] = { 0x0065, 0x0323, 0x0302, 0x0000 },
631  [0xc8] = { 0x0049, 0x0309, 0x0000 },
632  [0xc9] = { 0x0069, 0x0309, 0x0000 },
633  [0xca] = { 0x0049, 0x0323, 0x0000 },
634  [0xcb] = { 0x0069, 0x0323, 0x0000 },
635  [0xcc] = { 0x004F, 0x0323, 0x0000 },
636  [0xcd] = { 0x006F, 0x0323, 0x0000 },
637  [0xce] = { 0x004F, 0x0309, 0x0000 },
638  [0xcf] = { 0x006F, 0x0309, 0x0000 },
639  [0xd0] = { 0x004F, 0x0302, 0x0301, 0x0000 },
640  [0xd1] = { 0x006F, 0x0302, 0x0301, 0x0000 },
641  [0xd2] = { 0x004F, 0x0302, 0x0300, 0x0000 },
642  [0xd3] = { 0x006F, 0x0302, 0x0300, 0x0000 },
643  [0xd4] = { 0x004F, 0x0302, 0x0309, 0x0000 },
644  [0xd5] = { 0x006F, 0x0302, 0x0309, 0x0000 },
645  [0xd6] = { 0x004F, 0x0302, 0x0303, 0x0000 },
646  [0xd7] = { 0x006F, 0x0302, 0x0303, 0x0000 },
647  [0xd8] = { 0x004F, 0x0323, 0x0302, 0x0000 },
648  [0xd9] = { 0x006F, 0x0323, 0x0302, 0x0000 },
649  [0xda] = { 0x004F, 0x031B, 0x0301, 0x0000 },
650  [0xdb] = { 0x006F, 0x031B, 0x0301, 0x0000 },
651  [0xdc] = { 0x004F, 0x031B, 0x0300, 0x0000 },
652  [0xdd] = { 0x006F, 0x031B, 0x0300, 0x0000 },
653  [0xde] = { 0x004F, 0x031B, 0x0309, 0x0000 },
654  [0xdf] = { 0x006F, 0x031B, 0x0309, 0x0000 },
655  [0xe0] = { 0x004F, 0x031B, 0x0303, 0x0000 },
656  [0xe1] = { 0x006F, 0x031B, 0x0303, 0x0000 },
657  [0xe2] = { 0x004F, 0x031B, 0x0323, 0x0000 },
658  [0xe3] = { 0x006F, 0x031B, 0x0323, 0x0000 },
659  [0xe4] = { 0x0055, 0x0323, 0x0000 },
660  [0xe5] = { 0x0075, 0x0323, 0x0000 },
661  [0xe6] = { 0x0055, 0x0309, 0x0000 },
662  [0xe7] = { 0x0075, 0x0309, 0x0000 },
663  [0xe8] = { 0x0055, 0x031B, 0x0301, 0x0000 },
664  [0xe9] = { 0x0075, 0x031B, 0x0301, 0x0000 },
665  [0xea] = { 0x0055, 0x031B, 0x0300, 0x0000 },
666  [0xeb] = { 0x0075, 0x031B, 0x0300, 0x0000 },
667  [0xec] = { 0x0055, 0x031B, 0x0309, 0x0000 },
668  [0xed] = { 0x0075, 0x031B, 0x0309, 0x0000 },
669  [0xee] = { 0x0055, 0x031B, 0x0303, 0x0000 },
670  [0xef] = { 0x0075, 0x031B, 0x0303, 0x0000 },
671  [0xf0] = { 0x0055, 0x031B, 0x0323, 0x0000 },
672  [0xf1] = { 0x0075, 0x031B, 0x0323, 0x0000 },
673  [0xf2] = { 0x0059, 0x0300, 0x0000 },
674  [0xf3] = { 0x0079, 0x0300, 0x0000 },
675  [0xf4] = { 0x0059, 0x0323, 0x0000 },
676  [0xf5] = { 0x0079, 0x0323, 0x0000 },
677  [0xf6] = { 0x0059, 0x0309, 0x0000 },
678  [0xf7] = { 0x0079, 0x0309, 0x0000 },
679  [0xf8] = { 0x0059, 0x0303, 0x0000 },
680  [0xf9] = { 0x0079, 0x0303, 0x0000 },
681 };
682 
683 static const uint16_t page1f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
684  [0x00] = { 0x03B1, 0x0313, 0x0000 },
685  [0x01] = { 0x03B1, 0x0314, 0x0000 },
686  [0x02] = { 0x03B1, 0x0313, 0x0300, 0x0000 },
687  [0x03] = { 0x03B1, 0x0314, 0x0300, 0x0000 },
688  [0x04] = { 0x03B1, 0x0313, 0x0301, 0x0000 },
689  [0x05] = { 0x03B1, 0x0314, 0x0301, 0x0000 },
690  [0x06] = { 0x03B1, 0x0313, 0x0342, 0x0000 },
691  [0x07] = { 0x03B1, 0x0314, 0x0342, 0x0000 },
692  [0x08] = { 0x0391, 0x0313, 0x0000 },
693  [0x09] = { 0x0391, 0x0314, 0x0000 },
694  [0x0a] = { 0x0391, 0x0313, 0x0300, 0x0000 },
695  [0x0b] = { 0x0391, 0x0314, 0x0300, 0x0000 },
696  [0x0c] = { 0x0391, 0x0313, 0x0301, 0x0000 },
697  [0x0d] = { 0x0391, 0x0314, 0x0301, 0x0000 },
698  [0x0e] = { 0x0391, 0x0313, 0x0342, 0x0000 },
699  [0x0f] = { 0x0391, 0x0314, 0x0342, 0x0000 },
700  [0x10] = { 0x03B5, 0x0313, 0x0000 },
701  [0x11] = { 0x03B5, 0x0314, 0x0000 },
702  [0x12] = { 0x03B5, 0x0313, 0x0300, 0x0000 },
703  [0x13] = { 0x03B5, 0x0314, 0x0300, 0x0000 },
704  [0x14] = { 0x03B5, 0x0313, 0x0301, 0x0000 },
705  [0x15] = { 0x03B5, 0x0314, 0x0301, 0x0000 },
706  [0x18] = { 0x0395, 0x0313, 0x0000 },
707  [0x19] = { 0x0395, 0x0314, 0x0000 },
708  [0x1a] = { 0x0395, 0x0313, 0x0300, 0x0000 },
709  [0x1b] = { 0x0395, 0x0314, 0x0300, 0x0000 },
710  [0x1c] = { 0x0395, 0x0313, 0x0301, 0x0000 },
711  [0x1d] = { 0x0395, 0x0314, 0x0301, 0x0000 },
712  [0x20] = { 0x03B7, 0x0313, 0x0000 },
713  [0x21] = { 0x03B7, 0x0314, 0x0000 },
714  [0x22] = { 0x03B7, 0x0313, 0x0300, 0x0000 },
715  [0x23] = { 0x03B7, 0x0314, 0x0300, 0x0000 },
716  [0x24] = { 0x03B7, 0x0313, 0x0301, 0x0000 },
717  [0x25] = { 0x03B7, 0x0314, 0x0301, 0x0000 },
718  [0x26] = { 0x03B7, 0x0313, 0x0342, 0x0000 },
719  [0x27] = { 0x03B7, 0x0314, 0x0342, 0x0000 },
720  [0x28] = { 0x0397, 0x0313, 0x0000 },
721  [0x29] = { 0x0397, 0x0314, 0x0000 },
722  [0x2a] = { 0x0397, 0x0313, 0x0300, 0x0000 },
723  [0x2b] = { 0x0397, 0x0314, 0x0300, 0x0000 },
724  [0x2c] = { 0x0397, 0x0313, 0x0301, 0x0000 },
725  [0x2d] = { 0x0397, 0x0314, 0x0301, 0x0000 },
726  [0x2e] = { 0x0397, 0x0313, 0x0342, 0x0000 },
727  [0x2f] = { 0x0397, 0x0314, 0x0342, 0x0000 },
728  [0x30] = { 0x03B9, 0x0313, 0x0000 },
729  [0x31] = { 0x03B9, 0x0314, 0x0000 },
730  [0x32] = { 0x03B9, 0x0313, 0x0300, 0x0000 },
731  [0x33] = { 0x03B9, 0x0314, 0x0300, 0x0000 },
732  [0x34] = { 0x03B9, 0x0313, 0x0301, 0x0000 },
733  [0x35] = { 0x03B9, 0x0314, 0x0301, 0x0000 },
734  [0x36] = { 0x03B9, 0x0313, 0x0342, 0x0000 },
735  [0x37] = { 0x03B9, 0x0314, 0x0342, 0x0000 },
736  [0x38] = { 0x0399, 0x0313, 0x0000 },
737  [0x39] = { 0x0399, 0x0314, 0x0000 },
738  [0x3a] = { 0x0399, 0x0313, 0x0300, 0x0000 },
739  [0x3b] = { 0x0399, 0x0314, 0x0300, 0x0000 },
740  [0x3c] = { 0x0399, 0x0313, 0x0301, 0x0000 },
741  [0x3d] = { 0x0399, 0x0314, 0x0301, 0x0000 },
742  [0x3e] = { 0x0399, 0x0313, 0x0342, 0x0000 },
743  [0x3f] = { 0x0399, 0x0314, 0x0342, 0x0000 },
744  [0x40] = { 0x03BF, 0x0313, 0x0000 },
745  [0x41] = { 0x03BF, 0x0314, 0x0000 },
746  [0x42] = { 0x03BF, 0x0313, 0x0300, 0x0000 },
747  [0x43] = { 0x03BF, 0x0314, 0x0300, 0x0000 },
748  [0x44] = { 0x03BF, 0x0313, 0x0301, 0x0000 },
749  [0x45] = { 0x03BF, 0x0314, 0x0301, 0x0000 },
750  [0x48] = { 0x039F, 0x0313, 0x0000 },
751  [0x49] = { 0x039F, 0x0314, 0x0000 },
752  [0x4a] = { 0x039F, 0x0313, 0x0300, 0x0000 },
753  [0x4b] = { 0x039F, 0x0314, 0x0300, 0x0000 },
754  [0x4c] = { 0x039F, 0x0313, 0x0301, 0x0000 },
755  [0x4d] = { 0x039F, 0x0314, 0x0301, 0x0000 },
756  [0x50] = { 0x03C5, 0x0313, 0x0000 },
757  [0x51] = { 0x03C5, 0x0314, 0x0000 },
758  [0x52] = { 0x03C5, 0x0313, 0x0300, 0x0000 },
759  [0x53] = { 0x03C5, 0x0314, 0x0300, 0x0000 },
760  [0x54] = { 0x03C5, 0x0313, 0x0301, 0x0000 },
761  [0x55] = { 0x03C5, 0x0314, 0x0301, 0x0000 },
762  [0x56] = { 0x03C5, 0x0313, 0x0342, 0x0000 },
763  [0x57] = { 0x03C5, 0x0314, 0x0342, 0x0000 },
764  [0x59] = { 0x03A5, 0x0314, 0x0000 },
765  [0x5b] = { 0x03A5, 0x0314, 0x0300, 0x0000 },
766  [0x5d] = { 0x03A5, 0x0314, 0x0301, 0x0000 },
767  [0x5f] = { 0x03A5, 0x0314, 0x0342, 0x0000 },
768  [0x60] = { 0x03C9, 0x0313, 0x0000 },
769  [0x61] = { 0x03C9, 0x0314, 0x0000 },
770  [0x62] = { 0x03C9, 0x0313, 0x0300, 0x0000 },
771  [0x63] = { 0x03C9, 0x0314, 0x0300, 0x0000 },
772  [0x64] = { 0x03C9, 0x0313, 0x0301, 0x0000 },
773  [0x65] = { 0x03C9, 0x0314, 0x0301, 0x0000 },
774  [0x66] = { 0x03C9, 0x0313, 0x0342, 0x0000 },
775  [0x67] = { 0x03C9, 0x0314, 0x0342, 0x0000 },
776  [0x68] = { 0x03A9, 0x0313, 0x0000 },
777  [0x69] = { 0x03A9, 0x0314, 0x0000 },
778  [0x6a] = { 0x03A9, 0x0313, 0x0300, 0x0000 },
779  [0x6b] = { 0x03A9, 0x0314, 0x0300, 0x0000 },
780  [0x6c] = { 0x03A9, 0x0313, 0x0301, 0x0000 },
781  [0x6d] = { 0x03A9, 0x0314, 0x0301, 0x0000 },
782  [0x6e] = { 0x03A9, 0x0313, 0x0342, 0x0000 },
783  [0x6f] = { 0x03A9, 0x0314, 0x0342, 0x0000 },
784  [0x70] = { 0x03B1, 0x0300, 0x0000 },
785  [0x71] = { 0x03B1, 0x0301, 0x0000 },
786  [0x72] = { 0x03B5, 0x0300, 0x0000 },
787  [0x73] = { 0x03B5, 0x0301, 0x0000 },
788  [0x74] = { 0x03B7, 0x0300, 0x0000 },
789  [0x75] = { 0x03B7, 0x0301, 0x0000 },
790  [0x76] = { 0x03B9, 0x0300, 0x0000 },
791  [0x77] = { 0x03B9, 0x0301, 0x0000 },
792  [0x78] = { 0x03BF, 0x0300, 0x0000 },
793  [0x79] = { 0x03BF, 0x0301, 0x0000 },
794  [0x7a] = { 0x03C5, 0x0300, 0x0000 },
795  [0x7b] = { 0x03C5, 0x0301, 0x0000 },
796  [0x7c] = { 0x03C9, 0x0300, 0x0000 },
797  [0x7d] = { 0x03C9, 0x0301, 0x0000 },
798  [0x80] = { 0x03B1, 0x0345, 0x0313, 0x0000 },
799  [0x81] = { 0x03B1, 0x0345, 0x0314, 0x0000 },
800  [0x82] = { 0x03B1, 0x0345, 0x0313, 0x0300, 0x0000 },
801  [0x83] = { 0x03B1, 0x0345, 0x0314, 0x0300, 0x0000 },
802  [0x84] = { 0x03B1, 0x0345, 0x0313, 0x0301, 0x0000 },
803  [0x85] = { 0x03B1, 0x0345, 0x0314, 0x0301, 0x0000 },
804  [0x86] = { 0x03B1, 0x0345, 0x0313, 0x0342, 0x0000 },
805  [0x87] = { 0x03B1, 0x0345, 0x0314, 0x0342, 0x0000 },
806  [0x88] = { 0x0391, 0x0345, 0x0313, 0x0000 },
807  [0x89] = { 0x0391, 0x0345, 0x0314, 0x0000 },
808  [0x8a] = { 0x0391, 0x0345, 0x0313, 0x0300, 0x0000 },
809  [0x8b] = { 0x0391, 0x0345, 0x0314, 0x0300, 0x0000 },
810  [0x8c] = { 0x0391, 0x0345, 0x0313, 0x0301, 0x0000 },
811  [0x8d] = { 0x0391, 0x0345, 0x0314, 0x0301, 0x0000 },
812  [0x8e] = { 0x0391, 0x0345, 0x0313, 0x0342, 0x0000 },
813  [0x8f] = { 0x0391, 0x0345, 0x0314, 0x0342, 0x0000 },
814  [0x90] = { 0x03B7, 0x0345, 0x0313, 0x0000 },
815  [0x91] = { 0x03B7, 0x0345, 0x0314, 0x0000 },
816  [0x92] = { 0x03B7, 0x0345, 0x0313, 0x0300, 0x0000 },
817  [0x93] = { 0x03B7, 0x0345, 0x0314, 0x0300, 0x0000 },
818  [0x94] = { 0x03B7, 0x0345, 0x0313, 0x0301, 0x0000 },
819  [0x95] = { 0x03B7, 0x0345, 0x0314, 0x0301, 0x0000 },
820  [0x96] = { 0x03B7, 0x0345, 0x0313, 0x0342, 0x0000 },
821  [0x97] = { 0x03B7, 0x0345, 0x0314, 0x0342, 0x0000 },
822  [0x98] = { 0x0397, 0x0345, 0x0313, 0x0000 },
823  [0x99] = { 0x0397, 0x0345, 0x0314, 0x0000 },
824  [0x9a] = { 0x0397, 0x0345, 0x0313, 0x0300, 0x0000 },
825  [0x9b] = { 0x0397, 0x0345, 0x0314, 0x0300, 0x0000 },
826  [0x9c] = { 0x0397, 0x0345, 0x0313, 0x0301, 0x0000 },
827  [0x9d] = { 0x0397, 0x0345, 0x0314, 0x0301, 0x0000 },
828  [0x9e] = { 0x0397, 0x0345, 0x0313, 0x0342, 0x0000 },
829  [0x9f] = { 0x0397, 0x0345, 0x0314, 0x0342, 0x0000 },
830  [0xa0] = { 0x03C9, 0x0345, 0x0313, 0x0000 },
831  [0xa1] = { 0x03C9, 0x0345, 0x0314, 0x0000 },
832  [0xa2] = { 0x03C9, 0x0345, 0x0313, 0x0300, 0x0000 },
833  [0xa3] = { 0x03C9, 0x0345, 0x0314, 0x0300, 0x0000 },
834  [0xa4] = { 0x03C9, 0x0345, 0x0313, 0x0301, 0x0000 },
835  [0xa5] = { 0x03C9, 0x0345, 0x0314, 0x0301, 0x0000 },
836  [0xa6] = { 0x03C9, 0x0345, 0x0313, 0x0342, 0x0000 },
837  [0xa7] = { 0x03C9, 0x0345, 0x0314, 0x0342, 0x0000 },
838  [0xa8] = { 0x03A9, 0x0345, 0x0313, 0x0000 },
839  [0xa9] = { 0x03A9, 0x0345, 0x0314, 0x0000 },
840  [0xaa] = { 0x03A9, 0x0345, 0x0313, 0x0300, 0x0000 },
841  [0xab] = { 0x03A9, 0x0345, 0x0314, 0x0300, 0x0000 },
842  [0xac] = { 0x03A9, 0x0345, 0x0313, 0x0301, 0x0000 },
843  [0xad] = { 0x03A9, 0x0345, 0x0314, 0x0301, 0x0000 },
844  [0xae] = { 0x03A9, 0x0345, 0x0313, 0x0342, 0x0000 },
845  [0xaf] = { 0x03A9, 0x0345, 0x0314, 0x0342, 0x0000 },
846  [0xb0] = { 0x03B1, 0x0306, 0x0000 },
847  [0xb1] = { 0x03B1, 0x0304, 0x0000 },
848  [0xb2] = { 0x03B1, 0x0345, 0x0300, 0x0000 },
849  [0xb3] = { 0x03B1, 0x0345, 0x0000 },
850  [0xb4] = { 0x03B1, 0x0345, 0x0301, 0x0000 },
851  [0xb6] = { 0x03B1, 0x0342, 0x0000 },
852  [0xb7] = { 0x03B1, 0x0345, 0x0342, 0x0000 },
853  [0xb8] = { 0x0391, 0x0306, 0x0000 },
854  [0xb9] = { 0x0391, 0x0304, 0x0000 },
855  [0xba] = { 0x0391, 0x0300, 0x0000 },
856  [0xbb] = { 0x0391, 0x0301, 0x0000 },
857  [0xbc] = { 0x0391, 0x0345, 0x0000 },
858  [0xbe] = { 0x03B9, 0x0000 },
859  [0xc1] = { 0x00A8, 0x0342, 0x0000 },
860  [0xc2] = { 0x03B7, 0x0345, 0x0300, 0x0000 },
861  [0xc3] = { 0x03B7, 0x0345, 0x0000 },
862  [0xc4] = { 0x03B7, 0x0345, 0x0301, 0x0000 },
863  [0xc6] = { 0x03B7, 0x0342, 0x0000 },
864  [0xc7] = { 0x03B7, 0x0345, 0x0342, 0x0000 },
865  [0xc8] = { 0x0395, 0x0300, 0x0000 },
866  [0xc9] = { 0x0395, 0x0301, 0x0000 },
867  [0xca] = { 0x0397, 0x0300, 0x0000 },
868  [0xcb] = { 0x0397, 0x0301, 0x0000 },
869  [0xcc] = { 0x0397, 0x0345, 0x0000 },
870  [0xcd] = { 0x1FBF, 0x0300, 0x0000 },
871  [0xce] = { 0x1FBF, 0x0301, 0x0000 },
872  [0xcf] = { 0x1FBF, 0x0342, 0x0000 },
873  [0xd0] = { 0x03B9, 0x0306, 0x0000 },
874  [0xd1] = { 0x03B9, 0x0304, 0x0000 },
875  [0xd2] = { 0x03B9, 0x0308, 0x0300, 0x0000 },
876  [0xd3] = { 0x03B9, 0x0308, 0x0301, 0x0000 },
877  [0xd6] = { 0x03B9, 0x0342, 0x0000 },
878  [0xd7] = { 0x03B9, 0x0308, 0x0342, 0x0000 },
879  [0xd8] = { 0x0399, 0x0306, 0x0000 },
880  [0xd9] = { 0x0399, 0x0304, 0x0000 },
881  [0xda] = { 0x0399, 0x0300, 0x0000 },
882  [0xdb] = { 0x0399, 0x0301, 0x0000 },
883  [0xdd] = { 0x1FFE, 0x0300, 0x0000 },
884  [0xde] = { 0x1FFE, 0x0301, 0x0000 },
885  [0xdf] = { 0x1FFE, 0x0342, 0x0000 },
886  [0xe0] = { 0x03C5, 0x0306, 0x0000 },
887  [0xe1] = { 0x03C5, 0x0304, 0x0000 },
888  [0xe2] = { 0x03C5, 0x0308, 0x0300, 0x0000 },
889  [0xe3] = { 0x03C5, 0x0308, 0x0301, 0x0000 },
890  [0xe4] = { 0x03C1, 0x0313, 0x0000 },
891  [0xe5] = { 0x03C1, 0x0314, 0x0000 },
892  [0xe6] = { 0x03C5, 0x0342, 0x0000 },
893  [0xe7] = { 0x03C5, 0x0308, 0x0342, 0x0000 },
894  [0xe8] = { 0x03A5, 0x0306, 0x0000 },
895  [0xe9] = { 0x03A5, 0x0304, 0x0000 },
896  [0xea] = { 0x03A5, 0x0300, 0x0000 },
897  [0xeb] = { 0x03A5, 0x0301, 0x0000 },
898  [0xec] = { 0x03A1, 0x0314, 0x0000 },
899  [0xed] = { 0x00A8, 0x0300, 0x0000 },
900  [0xee] = { 0x00A8, 0x0301, 0x0000 },
901  [0xef] = { 0x0060, 0x0000 },
902  [0xf2] = { 0x03C9, 0x0345, 0x0300, 0x0000 },
903  [0xf3] = { 0x03C9, 0x0345, 0x0000 },
904  [0xf4] = { 0x03BF, 0x0345, 0x0301, 0x0000 },
905  [0xf6] = { 0x03C9, 0x0342, 0x0000 },
906  [0xf7] = { 0x03C9, 0x0345, 0x0342, 0x0000 },
907  [0xf8] = { 0x039F, 0x0300, 0x0000 },
908  [0xf9] = { 0x039F, 0x0301, 0x0000 },
909  [0xfa] = { 0x03A9, 0x0300, 0x0000 },
910  [0xfb] = { 0x03A9, 0x0301, 0x0000 },
911  [0xfc] = { 0x03A9, 0x0345, 0x0000 },
912  [0xfd] = { 0x00B4, 0x0000 },
913 };
914 
915 static const uint16_t page30[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
916  [0x4c] = { 0x304B, 0x3099, 0x0000 },
917  [0x4e] = { 0x304D, 0x3099, 0x0000 },
918  [0x50] = { 0x304F, 0x3099, 0x0000 },
919  [0x52] = { 0x3051, 0x3099, 0x0000 },
920  [0x54] = { 0x3053, 0x3099, 0x0000 },
921  [0x56] = { 0x3055, 0x3099, 0x0000 },
922  [0x58] = { 0x3057, 0x3099, 0x0000 },
923  [0x5a] = { 0x3059, 0x3099, 0x0000 },
924  [0x5c] = { 0x305B, 0x3099, 0x0000 },
925  [0x5e] = { 0x305D, 0x3099, 0x0000 },
926  [0x60] = { 0x305F, 0x3099, 0x0000 },
927  [0x62] = { 0x3061, 0x3099, 0x0000 },
928  [0x65] = { 0x3064, 0x3099, 0x0000 },
929  [0x67] = { 0x3066, 0x3099, 0x0000 },
930  [0x69] = { 0x3068, 0x3099, 0x0000 },
931  [0x70] = { 0x306F, 0x3099, 0x0000 },
932  [0x71] = { 0x306F, 0x309A, 0x0000 },
933  [0x73] = { 0x3072, 0x3099, 0x0000 },
934  [0x74] = { 0x3072, 0x309A, 0x0000 },
935  [0x76] = { 0x3075, 0x3099, 0x0000 },
936  [0x77] = { 0x3075, 0x309A, 0x0000 },
937  [0x79] = { 0x3078, 0x3099, 0x0000 },
938  [0x7a] = { 0x3078, 0x309A, 0x0000 },
939  [0x7c] = { 0x307B, 0x3099, 0x0000 },
940  [0x7d] = { 0x307B, 0x309A, 0x0000 },
941  [0x94] = { 0x3046, 0x3099, 0x0000 },
942  [0x9e] = { 0x309D, 0x3099, 0x0000 },
943  [0xac] = { 0x30AB, 0x3099, 0x0000 },
944  [0xae] = { 0x30AD, 0x3099, 0x0000 },
945  [0xb0] = { 0x30AF, 0x3099, 0x0000 },
946  [0xb2] = { 0x30B1, 0x3099, 0x0000 },
947  [0xb4] = { 0x30B3, 0x3099, 0x0000 },
948  [0xb6] = { 0x30B5, 0x3099, 0x0000 },
949  [0xb8] = { 0x30B7, 0x3099, 0x0000 },
950  [0xba] = { 0x30B9, 0x3099, 0x0000 },
951  [0xbc] = { 0x30BB, 0x3099, 0x0000 },
952  [0xbe] = { 0x30BD, 0x3099, 0x0000 },
953  [0xc0] = { 0x30BF, 0x3099, 0x0000 },
954  [0xc2] = { 0x30C1, 0x3099, 0x0000 },
955  [0xc5] = { 0x30C4, 0x3099, 0x0000 },
956  [0xc7] = { 0x30C6, 0x3099, 0x0000 },
957  [0xc9] = { 0x30C8, 0x3099, 0x0000 },
958  [0xd0] = { 0x30CF, 0x3099, 0x0000 },
959  [0xd1] = { 0x30CF, 0x309A, 0x0000 },
960  [0xd3] = { 0x30D2, 0x3099, 0x0000 },
961  [0xd4] = { 0x30D2, 0x309A, 0x0000 },
962  [0xd6] = { 0x30D5, 0x3099, 0x0000 },
963  [0xd7] = { 0x30D5, 0x309A, 0x0000 },
964  [0xd9] = { 0x30D8, 0x3099, 0x0000 },
965  [0xda] = { 0x30D8, 0x309A, 0x0000 },
966  [0xdc] = { 0x30DB, 0x3099, 0x0000 },
967  [0xdd] = { 0x30DB, 0x309A, 0x0000 },
968  [0xf4] = { 0x30A6, 0x3099, 0x0000 },
969  [0xf7] = { 0x30EF, 0x3099, 0x0000 },
970  [0xf8] = { 0x30F0, 0x3099, 0x0000 },
971  [0xf9] = { 0x30F1, 0x3099, 0x0000 },
972  [0xfa] = { 0x30F2, 0x3099, 0x0000 },
973  [0xfe] = { 0x30FD, 0x3099, 0x0000 },
974 };
975 
976 static const uint16_t pagefb[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
977  [0x1f] = { 0x05F2, 0x05B7, 0x0000 },
978  [0x2a] = { 0x05E9, 0x05C1, 0x0000 },
979  [0x2b] = { 0x05E9, 0x05C2, 0x0000 },
980  [0x2c] = { 0x05E9, 0x05BC, 0x05C1, 0x0000 },
981  [0x2d] = { 0x05E9, 0x05BC, 0x05C2, 0x0000 },
982  [0x2e] = { 0x05D0, 0x05B7, 0x0000 },
983  [0x2f] = { 0x05D0, 0x05B8, 0x0000 },
984  [0x30] = { 0x05D0, 0x05BC, 0x0000 },
985  [0x31] = { 0x05D1, 0x05BC, 0x0000 },
986  [0x32] = { 0x05D2, 0x05BC, 0x0000 },
987  [0x33] = { 0x05D3, 0x05BC, 0x0000 },
988  [0x34] = { 0x05D4, 0x05BC, 0x0000 },
989  [0x35] = { 0x05D5, 0x05BC, 0x0000 },
990  [0x36] = { 0x05D6, 0x05BC, 0x0000 },
991  [0x38] = { 0x05D8, 0x05BC, 0x0000 },
992  [0x39] = { 0x05D9, 0x05BC, 0x0000 },
993  [0x3a] = { 0x05DA, 0x05BC, 0x0000 },
994  [0x3b] = { 0x05DB, 0x05BC, 0x0000 },
995  [0x3c] = { 0x05DC, 0x05BC, 0x0000 },
996  [0x3e] = { 0x05DE, 0x05BC, 0x0000 },
997  [0x40] = { 0x05E0, 0x05BC, 0x0000 },
998  [0x41] = { 0x05E1, 0x05BC, 0x0000 },
999  [0x43] = { 0x05E3, 0x05BC, 0x0000 },
1000  [0x44] = { 0x05E4, 0x05BC, 0x0000 },
1001  [0x46] = { 0x05E6, 0x05BC, 0x0000 },
1002  [0x47] = { 0x05E7, 0x05BC, 0x0000 },
1003  [0x48] = { 0x05E8, 0x05BC, 0x0000 },
1004  [0x49] = { 0x05E9, 0x05BC, 0x0000 },
1005  [0x4a] = { 0x05EA, 0x05BC, 0x0000 },
1006  [0x4b] = { 0x05D5, 0x05B9, 0x0000 },
1007  [0x4c] = { 0x05D1, 0x05BF, 0x0000 },
1008  [0x4d] = { 0x05DB, 0x05BF, 0x0000 },
1009  [0x4e] = { 0x05E4, 0x05BF, 0x0000 },
1010 };
1011 
1013  [0x00] = page00,
1014  [0x01] = page01,
1015  [0x02] = page02,
1016  [0x03] = page03,
1017  [0x04] = page04,
1018  [0x09] = page09,
1019  [0x0a] = page0a,
1020  [0x0b] = page0b,
1021  [0x0c] = page0c,
1022  [0x0d] = page0d,
1023  [0x0e] = page0e,
1024  [0x0f] = page0f,
1025  [0x1e] = page1e,
1026  [0x1f] = page1f,
1027  [0x30] = page30,
1028  [0xfb] = pagefb,
1029 };
1030 
1031 /* ====================================== ts ============================= */
1032 
1033 /* The new implementation */
1034 #include "hfsplus_decompose_ts.c"
1035 
1037 {
1038  int i, j, k;
1039 
1040  for (i = 0; i < 256; i++) {
1041  if (hfsplus_decompose_pages_old[i] == NULL) {
1042  if (hfsplus_decompose_pages[i] == NULL)
1043  continue;
1044  fprintf(stderr, "DIFF : i= %d , ts != NULL\n", i);
1045  return 0;
1046  } else if (hfsplus_decompose_pages[i] == NULL) {
1047  fprintf(stderr, "DIFF : i= %d , ts == NULL\n", i);
1048  return 0;
1049  }
1050 
1051  for (j = 0; j < 256; j++)
1052  for (k = 0; k < HFSPLUS_MAX_DECOMPOSE_LEN + 1; k++)
1053  if (hfsplus_decompose_pages_old[i][j][k] !=
1054  hfsplus_decompose_pages[i][j][k]) {
1055  fprintf(stderr,
1056  "DIFF : i= %d , j= %d , k= %d : %4.4x !+ %4.4x\n",
1057  i, j, k, hfsplus_decompose_pages[i][j][k],
1058  hfsplus_decompose_pages[i][j][k]);
1059  return 0;
1060  }
1061  }
1062  return 1;
1063 }
1064 
1065 
1067 {
1068 
1070 
1071  /* <<< intentional deviations */
1072  /* hfsplus_decompose_pages[1][4][0] = 0xffff; */
1073  /* hfsplus_decompose_pages_old[3] = NULL; */
1074 
1076 
1077  exit(0);
1078 }
1079 
void make_hfsplus_decompose_pages()
#define HFSPLUS_MAX_DECOMPOSE_LEN
Definition: hfsplus.h:187
uint16_t(*[256] hfsplus_decompose_pages)[4+1]
static const uint16_t page0a[256][4+1]
static const uint16_t page09[256][4+1]
const uint16_t(*[256] hfsplus_decompose_pages_old)[4+1]
static const uint16_t page01[256][4+1]
static const uint16_t page1e[256][4+1]
static const uint16_t page04[256][4+1]
static const uint16_t page0d[256][4+1]
static const uint16_t page03[256][4+1]
static const uint16_t page0f[256][4+1]
static const uint16_t page02[256][4+1]
static const uint16_t page1f[256][4+1]
static const uint16_t page00[256][4+1]
static int compare_decompose_pages()
static const uint16_t page0e[256][4+1]
static const uint16_t pagefb[256][4+1]
static const uint16_t page0b[256][4+1]
static const uint16_t page0c[256][4+1]
static const uint16_t page30[256][4+1]