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

#include <stdint.h>

#include <libnu/udb.h>

const size_t _NU_DUCET_CONTRACTIONS = 820; /* contractions included in switch */
const size_t _NU_DUCET_CODEPOINTS = 20027; /* complementary codepoints number */

#define state_00AAB9 -838
#define state_000438 -826
#define state_0019B5 -749
#define state_001B09 -745
#define state_0019B7 -744
#define state_0019BA -737
#define state_00006C -712
#define state_0019B6 -686
#define state_00064A -684
#define state_000648 -674
#define state_00AABB -667
#define state_000418 -500
#define state_001B07 -482
#define state_001B05 -454
#define state_00AABC -394
#define state_000627 -391
#define state_000B92 -381
#define state_00004C -343
#define state_001B0D -252
#define state_001025 -217
#define state_000E40 -198
#define state_000E41 -197
#define state_000E42 -196
#define state_000E43 -195
#define state_000E44 -194
#define state_00AAB5 -171
#define state_00AAB6 -161
#define state_000EC1 -114
#define state_000EC0 -113
#define state_000EC3 -112
#define state_000EC2 -111
#define state_000EC4 -109
#define state_001B0B -59
#define state_001B11 -24

const int16_t _NU_DUCET_ROOTS_G[] = {
	0, -34, 0, 0, -33, -32, -31, -30, -29, -28, 2, -26, 
	-15, 0, 0, 3, 0, 0, -14, -13, -12, 8, 1, 8, 
	-10, 0, -7, -6, 5, 20, 4, -4, -2, 0, };

const size_t _NU_DUCET_ROOTS_G_SIZE = sizeof(_NU_DUCET_ROOTS_G) / sizeof(*_NU_DUCET_ROOTS_G);

/* codepoints */
const uint32_t _NU_DUCET_ROOTS_VALUES_C[] = {
	0x00004C, 0x001B0D, 0x000648, 0x000EC0, 0x00064A, 0x000E44, 0x001B0B, 0x000EC1, 
	0x000EC3, 0x001B05, 0x000E41, 0x000E43, 0x00006C, 0x000627, 0x0019B5, 0x001025, 
	0x001B07, 0x00AAB9, 0x000E40, 0x0019B7, 0x000E42, 0x00AABC, 0x001B09, 0x0019BA, 
	0x000EC2, 0x0019B6, 0x000B92, 0x000418, 0x00AABB, 0x000438, 0x00AAB5, 0x00AAB6, 
	0x001B11, 0x000EC4, };

/* indexes */
const uint16_t _NU_DUCET_ROOTS_VALUES_I[] = {
	0x0157, 0x00FC, 0x02A2, 0x0071, 0x02AC, 0x00C2, 0x003B, 0x0072, 0x0070, 0x01C6, 
	0x00C5, 0x00C3, 0x02C8, 0x0187, 0x02ED, 0x00D9, 0x01E2, 0x0346, 0x00C6, 0x02E8, 
	0x00C4, 0x018A, 0x02E9, 0x02E1, 0x006F, 0x02AE, 0x017D, 0x01F4, 0x029B, 0x033A, 
	0x00AB, 0x00A1, 0x0018, 0x006D, };

/* MPH lookup for root codepoints + binary search on balanced tree
 * for intermediate states */
int32_t _nu_ducet_weight_switch(uint32_t u, int32_t *w, void *context) {
	(void)(context);

	if (w == 0) { /*  first entry, root states */
		uint32_t state = nu_udb_lookup_value(u, _NU_DUCET_ROOTS_G, _NU_DUCET_ROOTS_G_SIZE,
			_NU_DUCET_ROOTS_VALUES_C, _NU_DUCET_ROOTS_VALUES_I);

		if (state != 0) {
			return -state; /* VALUES_I store negated (positive) states */
		}
	}

	if (w != 0) { /* re-entry, intermediate states */
		int32_t weight = *w;
		*w = 0;

		if (weight == state_00004C) {
			switch (u) {
			case 0x000387: return 0x000456; 
			case 0x0000B7: return 0x000456; 
			}

			*w = 1;
			return 0x00044D;
		}
		else if (weight < state_00004C) {
			if (weight == state_00064A) {
				switch (u) {
				case 0x000654: return 0x000C71; 
				}

				*w = 1;
				return 0x000FE3;
			}
			else if (weight < state_00064A) {
				if (weight == state_0019B7) {
					switch (u) {
					case 0x0019A2: return 0x001F15; 
					case 0x001999: return 0x001EE8; 
					case 0x001981: return 0x001E70; 
					case 0x00198E: return 0x001EB1; 
					case 0x001988: return 0x001E93; 
					case 0x001994: return 0x001ECF; 
					case 0x0019A6: return 0x001F29; 
					case 0x00198A: return 0x001E9D; 
					case 0x001984: return 0x001E7F; 
					case 0x00199D: return 0x001EFC; 
					case 0x001991: return 0x001EC0; 
					case 0x0019A3: return 0x001F1A; 
					case 0x001980: return 0x001E6B; 
					case 0x00198D: return 0x001EAC; 
					case 0x001995: return 0x001ED4; 
					case 0x0019A7: return 0x001F2E; 
					case 0x00199A: return 0x001EED; 
					case 0x0019AA: return 0x001F3D; 
					case 0x00199E: return 0x001F01; 
					case 0x001992: return 0x001EC5; 
					case 0x001987: return 0x001E8E; 
					case 0x001996: return 0x001ED9; 
					case 0x0019A0: return 0x001F0B; 
					case 0x00199B: return 0x001EF2; 
					case 0x001983: return 0x001E7A; 
					case 0x0019AB: return 0x001F42; 
					case 0x0019A4: return 0x001F1F; 
					case 0x00199F: return 0x001F06; 
					case 0x001993: return 0x001ECA; 
					case 0x00198C: return 0x001EA7; 
					case 0x001986: return 0x001E89; 
					case 0x0019A8: return 0x001F33; 
					case 0x001997: return 0x001EDE; 
					case 0x0019A1: return 0x001F10; 
					case 0x00199C: return 0x001EF7; 
					case 0x001998: return 0x001EE3; 
					case 0x001982: return 0x001E75; 
					case 0x00198F: return 0x001EB6; 
					case 0x001989: return 0x001E98; 
					case 0x0019A5: return 0x001F24; 
					case 0x00198B: return 0x001EA2; 
					case 0x001985: return 0x001E84; 
					case 0x0019A9: return 0x001F38; 
					case 0x001990: return 0x001EBB; 
					}

					*w = 1;
					return 0x001F4B;
				}
				else if (weight < state_0019B7) {
					if (weight == state_0019B5) {
						switch (u) {
						case 0x0019A8: return 0x001F31; 
						case 0x00199F: return 0x001F04; 
						case 0x001993: return 0x001EC8; 
						case 0x0019AA: return 0x001F3B; 
						case 0x0019A7: return 0x001F2C; 
						case 0x001982: return 0x001E73; 
						case 0x00198F: return 0x001EB4; 
						case 0x001997: return 0x001EDC; 
						case 0x00199C: return 0x001EF5; 
						case 0x0019A0: return 0x001F09; 
						case 0x00198B: return 0x001EA0; 
						case 0x0019A9: return 0x001F36; 
						case 0x001990: return 0x001EB9; 
						case 0x0019A4: return 0x001F1D; 
						case 0x001985: return 0x001E82; 
						case 0x001994: return 0x001ECD; 
						case 0x0019AB: return 0x001F40; 
						case 0x001981: return 0x001E6E; 
						case 0x0019A1: return 0x001F0E; 
						case 0x00198E: return 0x001EAF; 
						case 0x001998: return 0x001EE1; 
						case 0x00199D: return 0x001EFA; 
						case 0x001991: return 0x001EBE; 
						case 0x0019A5: return 0x001F22; 
						case 0x00198A: return 0x001E9B; 
						case 0x001984: return 0x001E7D; 
						case 0x001995: return 0x001ED2; 
						case 0x001989: return 0x001E96; 
						case 0x00199A: return 0x001EEB; 
						case 0x001980: return 0x001E69; 
						case 0x00198D: return 0x001EAA; 
						case 0x001999: return 0x001EE6; 
						case 0x00199E: return 0x001EFF; 
						case 0x0019A2: return 0x001F13; 
						case 0x001987: return 0x001E8C; 
						case 0x001992: return 0x001EC3; 
						case 0x001988: return 0x001E91; 
						case 0x0019A6: return 0x001F27; 
						case 0x001983: return 0x001E78; 
						case 0x001996: return 0x001ED7; 
						case 0x00199B: return 0x001EF0; 
						case 0x0019A3: return 0x001F18; 
						case 0x00198C: return 0x001EA5; 
						case 0x001986: return 0x001E87; 
						}

						*w = 1;
						return 0x001F49;
					}
					else if (weight < state_0019B5) {
						if (weight == state_000438) {
							switch (u) {
							case 0x000306: return 0x000987; 
							}

							*w = 1;
							return 0x000977;
						}
						else if (weight < state_000438) {
							if (weight == state_00AAB9) {
								switch (u) {
								case 0x00AA92: return 0x001AE6; 
								case 0x00AAA5: return 0x001B58; 
								case 0x00AAAC: return 0x001B82; 
								case 0x00AA8F: return 0x001AD4; 
								case 0x00AA82: return 0x001A86; 
								case 0x00AA9C: return 0x001B22; 
								case 0x00AAA1: return 0x001B40; 
								case 0x00AA97: return 0x001B04; 
								case 0x00AAAD: return 0x001B88; 
								case 0x00AA86: return 0x001A9E; 
								case 0x00AA93: return 0x001AEC; 
								case 0x00AA9D: return 0x001B28; 
								case 0x00AA8A: return 0x001AB6; 
								case 0x00AAA6: return 0x001B5E; 
								case 0x00AA94: return 0x001AF2; 
								case 0x00AA8E: return 0x001ACE; 
								case 0x00AAAE: return 0x001B8E; 
								case 0x00AA81: return 0x001A80; 
								case 0x00AAA2: return 0x001B46; 
								case 0x00AA90: return 0x001ADA; 
								case 0x00AA9E: return 0x001B2E; 
								case 0x00AAAA: return 0x001B76; 
								case 0x00AA85: return 0x001A98; 
								case 0x00AA9A: return 0x001B16; 
								case 0x00AAA7: return 0x001B64; 
								case 0x00AA95: return 0x001AF8; 
								case 0x00AA89: return 0x001AB0; 
								case 0x00AA8D: return 0x001AC8; 
								case 0x00AA80: return 0x001A7A; 
								case 0x00AA98: return 0x001B0A; 
								case 0x00AAA3: return 0x001B4C; 
								case 0x00AA91: return 0x001AE0; 
								case 0x00AAA8: return 0x001B6A; 
								case 0x00AAAF: return 0x001B94; 
								case 0x00AA84: return 0x001A92; 
								case 0x00AA8C: return 0x001AC2; 
								case 0x00AA9F: return 0x001B34; 
								case 0x00AAA4: return 0x001B52; 
								case 0x00AAAB: return 0x001B7C; 
								case 0x00AA88: return 0x001AAA; 
								case 0x00AA83: return 0x001A8C; 
								case 0x00AA99: return 0x001B10; 
								case 0x00AA9B: return 0x001B1C; 
								case 0x00AAA0: return 0x001B3A; 
								case 0x00AA96: return 0x001AFE; 
								case 0x00AAA9: return 0x001B70; 
								case 0x00AA87: return 0x001AA4; 
								case 0x00AA8B: return 0x001ABC; 
								}

								*w = 1;
								return 0x001B9A;
							}
						}
					}
					else { /* weight > state_0019B5 */
						if (weight == state_001B09) {
							switch (u) {
							case 0x001B35: return 0x001FCC; 
							}

							*w = 1;
							return 0x001FCB;
						}
					}
				}
				else { /* weight > state_0019B7 */
					if (weight == state_00006C) {
						switch (u) {
						case 0x0000B7: return 0x000445; 
						case 0x000387: return 0x000445; 
						}

						*w = 1;
						return 0x00043C;
					}
					else if (weight < state_00006C) {
						if (weight == state_0019BA) {
							switch (u) {
							case 0x00198F: return 0x001EB7; 
							case 0x0019A2: return 0x001F16; 
							case 0x001995: return 0x001ED5; 
							case 0x00199C: return 0x001EF8; 
							case 0x001980: return 0x001E6C; 
							case 0x001991: return 0x001EC1; 
							case 0x0019A7: return 0x001F2F; 
							case 0x001984: return 0x001E80; 
							case 0x00199D: return 0x001EFD; 
							case 0x00198A: return 0x001E9E; 
							case 0x0019A3: return 0x001F1B; 
							case 0x001983: return 0x001E7B; 
							case 0x00198E: return 0x001EB2; 
							case 0x001996: return 0x001EDA; 
							case 0x0019A4: return 0x001F20; 
							case 0x001987: return 0x001E8F; 
							case 0x00199E: return 0x001F02; 
							case 0x001992: return 0x001EC6; 
							case 0x0019A0: return 0x001F0C; 
							case 0x00199A: return 0x001EEE; 
							case 0x001982: return 0x001E76; 
							case 0x00198D: return 0x001EAD; 
							case 0x0019AA: return 0x001F3E; 
							case 0x001997: return 0x001EDF; 
							case 0x0019A5: return 0x001F25; 
							case 0x001986: return 0x001E8A; 
							case 0x0019A8: return 0x001F34; 
							case 0x001989: return 0x001E99; 
							case 0x001993: return 0x001ECB; 
							case 0x00198C: return 0x001EA8; 
							case 0x0019A1: return 0x001F11; 
							case 0x001998: return 0x001EE4; 
							case 0x00199F: return 0x001F07; 
							case 0x001994: return 0x001ED0; 
							case 0x00199B: return 0x001EF3; 
							case 0x001981: return 0x001E71; 
							case 0x0019A9: return 0x001F39; 
							case 0x0019AB: return 0x001F43; 
							case 0x001988: return 0x001E94; 
							case 0x001990: return 0x001EBC; 
							case 0x00198B: return 0x001EA3; 
							case 0x0019A6: return 0x001F2A; 
							case 0x001999: return 0x001EE9; 
							case 0x001985: return 0x001E85; 
							}

							*w = 1;
							return 0x001F4E;
						}
					}
					else { /* weight > state_00006C */
						if (weight == state_0019B6) {
							switch (u) {
							case 0x001995: return 0x001ED3; 
							case 0x0019A3: return 0x001F19; 
							case 0x00199A: return 0x001EEC; 
							case 0x001980: return 0x001E6A; 
							case 0x00198D: return 0x001EAB; 
							case 0x001989: return 0x001E97; 
							case 0x0019AA: return 0x001F3C; 
							case 0x0019A7: return 0x001F2D; 
							case 0x00199E: return 0x001F00; 
							case 0x001990: return 0x001EBA; 
							case 0x001985: return 0x001E83; 
							case 0x001994: return 0x001ECE; 
							case 0x0019A2: return 0x001F14; 
							case 0x001981: return 0x001E6F; 
							case 0x00198E: return 0x001EB0; 
							case 0x0019A6: return 0x001F28; 
							case 0x00199D: return 0x001EFB; 
							case 0x00198A: return 0x001E9C; 
							case 0x001986: return 0x001E88; 
							case 0x001993: return 0x001EC9; 
							case 0x0019A1: return 0x001F0F; 
							case 0x001982: return 0x001E74; 
							case 0x00198F: return 0x001EB5; 
							case 0x001997: return 0x001EDD; 
							case 0x0019A5: return 0x001F23; 
							case 0x00199C: return 0x001EF6; 
							case 0x00198B: return 0x001EA1; 
							case 0x001987: return 0x001E8D; 
							case 0x0019A9: return 0x001F37; 
							case 0x001992: return 0x001EC4; 
							case 0x0019A0: return 0x001F0A; 
							case 0x001999: return 0x001EE7; 
							case 0x001983: return 0x001E79; 
							case 0x001996: return 0x001ED8; 
							case 0x0019A4: return 0x001F1E; 
							case 0x00199B: return 0x001EF1; 
							case 0x00198C: return 0x001EA6; 
							case 0x001988: return 0x001E92; 
							case 0x0019AB: return 0x001F41; 
							case 0x0019A8: return 0x001F32; 
							case 0x00199F: return 0x001F05; 
							case 0x001991: return 0x001EBF; 
							case 0x001998: return 0x001EE2; 
							case 0x001984: return 0x001E7E; 
							}

							*w = 1;
							return 0x001F4A;
						}
					}
				}
			}
			else { /* weight > state_00064A */
				if (weight == state_001B05) {
					switch (u) {
					case 0x001B35: return 0x001FC8; 
					}

					*w = 1;
					return 0x001FC7;
				}
				else if (weight < state_001B05) {
					if (weight == state_000418) {
						switch (u) {
						case 0x000306: return 0x000988; 
						}

						*w = 1;
						return 0x00097B;
					}
					else if (weight < state_000418) {
						if (weight == state_00AABB) {
							switch (u) {
							case 0x00AAA0: return 0x001B3B; 
							case 0x00AA8D: return 0x001AC9; 
							case 0x00AA81: return 0x001A81; 
							case 0x00AA99: return 0x001B11; 
							case 0x00AA90: return 0x001ADB; 
							case 0x00AAAF: return 0x001B95; 
							case 0x00AA9D: return 0x001B29; 
							case 0x00AA85: return 0x001A99; 
							case 0x00AA8A: return 0x001AB7; 
							case 0x00AAAB: return 0x001B7D; 
							case 0x00AA89: return 0x001AB1; 
							case 0x00AAA7: return 0x001B65; 
							case 0x00AA8E: return 0x001ACF; 
							case 0x00AA82: return 0x001A87; 
							case 0x00AA98: return 0x001B0B; 
							case 0x00AA97: return 0x001B05; 
							case 0x00AAAE: return 0x001B8F; 
							case 0x00AAA3: return 0x001B4D; 
							case 0x00AA86: return 0x001A9F; 
							case 0x00AA8B: return 0x001ABD; 
							case 0x00AA93: return 0x001AED; 
							case 0x00AAAA: return 0x001B77; 
							case 0x00AAA6: return 0x001B5F; 
							case 0x00AA8F: return 0x001AD5; 
							case 0x00AA83: return 0x001A8D; 
							case 0x00AA9C: return 0x001B23; 
							case 0x00AA96: return 0x001AFF; 
							case 0x00AAAD: return 0x001B89; 
							case 0x00AAA2: return 0x001B47; 
							case 0x00AA87: return 0x001AA5; 
							case 0x00AAA9: return 0x001B71; 
							case 0x00AA8C: return 0x001AC3; 
							case 0x00AA92: return 0x001AE7; 
							case 0x00AA9F: return 0x001B35; 
							case 0x00AAA5: return 0x001B59; 
							case 0x00AA9B: return 0x001B1D; 
							case 0x00AA95: return 0x001AF9; 
							case 0x00AAA1: return 0x001B41; 
							case 0x00AA80: return 0x001A7B; 
							case 0x00AAA8: return 0x001B6B; 
							case 0x00AA91: return 0x001AE1; 
							case 0x00AA9E: return 0x001B2F; 
							case 0x00AA84: return 0x001A93; 
							case 0x00AAA4: return 0x001B53; 
							case 0x00AAAC: return 0x001B83; 
							case 0x00AA9A: return 0x001B17; 
							case 0x00AA94: return 0x001AF3; 
							case 0x00AA88: return 0x001AAB; 
							}

							*w = 1;
							return 0x001B9C;
						}
						else if (weight < state_00AABB) {
							if (weight == state_000648) {
								switch (u) {
								case 0x000654: return 0x000C68; 
								}

								*w = 1;
								return 0x000FBB;
							}
						}
					}
					else { /* weight > state_000418 */
						if (weight == state_001B07) {
							switch (u) {
							case 0x001B35: return 0x001FCA; 
							}

							*w = 1;
							return 0x001FC9;
						}
					}
				}
				else { /* weight > state_001B05 */
					if (weight == state_000627) {
						switch (u) {
						case 0x000653: return 0x000C5E; 
						case 0x000655: return 0x000C6B; 
						case 0x000654: return 0x000C61; 
						}

						*w = 1;
						return 0x000C9B;
					}
					else if (weight < state_000627) {
						if (weight == state_00AABC) {
							switch (u) {
							case 0x00AA95: return 0x001AFA; 
							case 0x00AAA1: return 0x001B42; 
							case 0x00AA84: return 0x001A94; 
							case 0x00AA98: return 0x001B0C; 
							case 0x00AA91: return 0x001AE2; 
							case 0x00AAAC: return 0x001B84; 
							case 0x00AA9E: return 0x001B30; 
							case 0x00AA88: return 0x001AAC; 
							case 0x00AAA6: return 0x001B60; 
							case 0x00AA8D: return 0x001ACA; 
							case 0x00AA9A: return 0x001B18; 
							case 0x00AA96: return 0x001B00; 
							case 0x00AAA2: return 0x001B48; 
							case 0x00AA83: return 0x001A8E; 
							case 0x00AA99: return 0x001B12; 
							case 0x00AA92: return 0x001AE8; 
							case 0x00AAAD: return 0x001B8A; 
							case 0x00AA9F: return 0x001B36; 
							case 0x00AA87: return 0x001AA6; 
							case 0x00AAA7: return 0x001B66; 
							case 0x00AA8C: return 0x001AC4; 
							case 0x00AA9B: return 0x001B1E; 
							case 0x00AA97: return 0x001B06; 
							case 0x00AAA3: return 0x001B4E; 
							case 0x00AA82: return 0x001A88; 
							case 0x00AA93: return 0x001AEE; 
							case 0x00AAAE: return 0x001B90; 
							case 0x00AA86: return 0x001AA0; 
							case 0x00AAA8: return 0x001B6C; 
							case 0x00AA8B: return 0x001ABE; 
							case 0x00AAAA: return 0x001B78; 
							case 0x00AA9C: return 0x001B24; 
							case 0x00AAA4: return 0x001B54; 
							case 0x00AA8F: return 0x001AD6; 
							case 0x00AA81: return 0x001A82; 
							case 0x00AA94: return 0x001AF4; 
							case 0x00AAAF: return 0x001B96; 
							case 0x00AAA0: return 0x001B3C; 
							case 0x00AA85: return 0x001A9A; 
							case 0x00AAA9: return 0x001B72; 
							case 0x00AA8A: return 0x001AB8; 
							case 0x00AA90: return 0x001ADC; 
							case 0x00AAAB: return 0x001B7E; 
							case 0x00AA9D: return 0x001B2A; 
							case 0x00AA89: return 0x001AB2; 
							case 0x00AAA5: return 0x001B5A; 
							case 0x00AA8E: return 0x001AD0; 
							case 0x00AA80: return 0x001A7C; 
							}

							*w = 1;
							return 0x001B9D;
						}
					}
					else { /* weight > state_000627 */
						if (weight == state_000B92) {
							switch (u) {
							case 0x000BD7: return 0x0013E2; 
							}

							*w = 1;
							return 0x0013E0;
						}
					}
				}
			}
		}
		else { /* weight > state_00004C */
			if (weight == state_00AAB6) {
				switch (u) {
				case 0x00AA9D: return 0x001B27; 
				case 0x00AA87: return 0x001AA3; 
				case 0x00AA8A: return 0x001AB5; 
				case 0x00AAA9: return 0x001B6F; 
				case 0x00AAAD: return 0x001B87; 
				case 0x00AA92: return 0x001AE5; 
				case 0x00AAA0: return 0x001B39; 
				case 0x00AA99: return 0x001B0F; 
				case 0x00AA83: return 0x001A8B; 
				case 0x00AA96: return 0x001AFD; 
				case 0x00AA8F: return 0x001AD3; 
				case 0x00AAA4: return 0x001B51; 
				case 0x00AA9C: return 0x001B21; 
				case 0x00AA88: return 0x001AA9; 
				case 0x00AA8B: return 0x001ABB; 
				case 0x00AAA8: return 0x001B69; 
				case 0x00AAAC: return 0x001B81; 
				case 0x00AA91: return 0x001ADF; 
				case 0x00AA98: return 0x001B09; 
				case 0x00AA84: return 0x001A91; 
				case 0x00AA95: return 0x001AF7; 
				case 0x00AAA3: return 0x001B4B; 
				case 0x00AA80: return 0x001A79; 
				case 0x00AA9B: return 0x001B1B; 
				case 0x00AA89: return 0x001AAF; 
				case 0x00AA8C: return 0x001AC1; 
				case 0x00AAA7: return 0x001B63; 
				case 0x00AAAB: return 0x001B7B; 
				case 0x00AA90: return 0x001AD9; 
				case 0x00AA9F: return 0x001B33; 
				case 0x00AA85: return 0x001A97; 
				case 0x00AAAF: return 0x001B93; 
				case 0x00AA94: return 0x001AF1; 
				case 0x00AAA2: return 0x001B45; 
				case 0x00AA81: return 0x001A7F; 
				case 0x00AA9A: return 0x001B15; 
				case 0x00AA8D: return 0x001AC7; 
				case 0x00AAA6: return 0x001B5D; 
				case 0x00AAAA: return 0x001B75; 
				case 0x00AA9E: return 0x001B2D; 
				case 0x00AA86: return 0x001A9D; 
				case 0x00AAAE: return 0x001B8D; 
				case 0x00AA93: return 0x001AEB; 
				case 0x00AAA1: return 0x001B3F; 
				case 0x00AA82: return 0x001A85; 
				case 0x00AA97: return 0x001B03; 
				case 0x00AA8E: return 0x001ACD; 
				case 0x00AAA5: return 0x001B57; 
				}

				*w = 1;
				return 0x001B99;
			}
			else if (weight < state_00AAB6) {
				if (weight == state_000E42) {
					switch (u) {
					case 0x000E1C: return 0x00193A; 
					case 0x000E16: return 0x001916; 
					case 0x000E24: return 0x00196A; 
					case 0x000E07: return 0x0018BC; 
					case 0x000E0C: return 0x0018DA; 
					case 0x000E12: return 0x0018FE; 
					case 0x000E1F: return 0x00194C; 
					case 0x000E2D: return 0x0019A0; 
					case 0x000E21: return 0x001958; 
					case 0x000E1B: return 0x001934; 
					case 0x000E15: return 0x001910; 
					case 0x000E25: return 0x001970; 
					case 0x000E2A: return 0x00198E; 
					case 0x000E23: return 0x001964; 
					case 0x000E11: return 0x0018F8; 
					case 0x000E1E: return 0x001946; 
					case 0x000E2E: return 0x0019A6; 
					case 0x000E04: return 0x0018AA; 
					case 0x000E1A: return 0x00192E; 
					case 0x000E14: return 0x00190A; 
					case 0x000E08: return 0x0018C2; 
					case 0x000E0D: return 0x0018E0; 
					case 0x000E01: return 0x001898; 
					case 0x000E19: return 0x001928; 
					case 0x000E28: return 0x001982; 
					case 0x000E10: return 0x0018F2; 
					case 0x000E26: return 0x001976; 
					case 0x000E1D: return 0x001940; 
					case 0x000E2B: return 0x001994; 
					case 0x000E05: return 0x0018B0; 
					case 0x000E0A: return 0x0018CE; 
					case 0x000E09: return 0x0018C8; 
					case 0x000E0E: return 0x0018E6; 
					case 0x000E02: return 0x00189E; 
					case 0x000E18: return 0x001922; 
					case 0x000E17: return 0x00191C; 
					case 0x000E27: return 0x00197C; 
					case 0x000E2C: return 0x00199A; 
					case 0x000E06: return 0x0018B6; 
					case 0x000E0B: return 0x0018D4; 
					case 0x000E13: return 0x001904; 
					case 0x000E29: return 0x001988; 
					case 0x000E20: return 0x001952; 
					case 0x000E22: return 0x00195E; 
					case 0x000E0F: return 0x0018EC; 
					case 0x000E03: return 0x0018A4; 
					}

					*w = 1;
					return 0x0019AF;
				}
				else if (weight < state_000E42) {
					if (weight == state_000E40) {
						switch (u) {
						case 0x000E04: return 0x0018A8; 
						case 0x000E27: return 0x00197A; 
						case 0x000E11: return 0x0018F6; 
						case 0x000E2C: return 0x001998; 
						case 0x000E1E: return 0x001944; 
						case 0x000E18: return 0x001920; 
						case 0x000E0D: return 0x0018DE; 
						case 0x000E01: return 0x001896; 
						case 0x000E1A: return 0x00192C; 
						case 0x000E14: return 0x001908; 
						case 0x000E05: return 0x0018AE; 
						case 0x000E0A: return 0x0018CC; 
						case 0x000E20: return 0x001950; 
						case 0x000E10: return 0x0018F0; 
						case 0x000E29: return 0x001986; 
						case 0x000E1D: return 0x00193E; 
						case 0x000E0E: return 0x0018E4; 
						case 0x000E24: return 0x001968; 
						case 0x000E17: return 0x00191A; 
						case 0x000E02: return 0x00189C; 
						case 0x000E2D: return 0x00199E; 
						case 0x000E21: return 0x001956; 
						case 0x000E13: return 0x001902; 
						case 0x000E22: return 0x00195C; 
						case 0x000E06: return 0x0018B4; 
						case 0x000E0B: return 0x0018D2; 
						case 0x000E25: return 0x00196E; 
						case 0x000E2A: return 0x00198C; 
						case 0x000E1C: return 0x001938; 
						case 0x000E16: return 0x001914; 
						case 0x000E0F: return 0x0018EA; 
						case 0x000E03: return 0x0018A2; 
						case 0x000E2E: return 0x0019A4; 
						case 0x000E08: return 0x0018C0; 
						case 0x000E12: return 0x0018FC; 
						case 0x000E1F: return 0x00194A; 
						case 0x000E07: return 0x0018BA; 
						case 0x000E0C: return 0x0018D8; 
						case 0x000E26: return 0x001974; 
						case 0x000E2B: return 0x001992; 
						case 0x000E1B: return 0x001932; 
						case 0x000E19: return 0x001926; 
						case 0x000E23: return 0x001962; 
						case 0x000E28: return 0x001980; 
						case 0x000E09: return 0x0018C6; 
						case 0x000E15: return 0x00190E; 
						}

						*w = 1;
						return 0x0019AD;
					}
					else if (weight < state_000E40) {
						if (weight == state_001025) {
							switch (u) {
							case 0x00102E: return 0x001DE0; 
							}

							*w = 1;
							return 0x001DDF;
						}
						else if (weight < state_001025) {
							if (weight == state_001B0D) {
								switch (u) {
								case 0x001B35: return 0x001FD0; 
								}

								*w = 1;
								return 0x001FCF;
							}
						}
					}
					else { /* weight > state_000E40 */
						if (weight == state_000E41) {
							switch (u) {
							case 0x000E2C: return 0x001999; 
							case 0x000E26: return 0x001975; 
							case 0x000E14: return 0x001909; 
							case 0x000E01: return 0x001897; 
							case 0x000E0E: return 0x0018E5; 
							case 0x000E08: return 0x0018C1; 
							case 0x000E1D: return 0x00193F; 
							case 0x000E11: return 0x0018F7; 
							case 0x000E0A: return 0x0018CD; 
							case 0x000E04: return 0x0018A9; 
							case 0x000E29: return 0x001987; 
							case 0x000E2B: return 0x001993; 
							case 0x000E25: return 0x00196F; 
							case 0x000E15: return 0x00190F; 
							case 0x000E1A: return 0x00192D; 
							case 0x000E0D: return 0x0018DF; 
							case 0x000E21: return 0x001957; 
							case 0x000E2E: return 0x0019A5; 
							case 0x000E1E: return 0x001945; 
							case 0x000E23: return 0x001963; 
							case 0x000E07: return 0x0018BB; 
							case 0x000E2A: return 0x00198D; 
							case 0x000E24: return 0x001969; 
							case 0x000E12: return 0x0018FD; 
							case 0x000E03: return 0x0018A3; 
							case 0x000E20: return 0x001951; 
							case 0x000E16: return 0x001915; 
							case 0x000E28: return 0x001981; 
							case 0x000E2D: return 0x00199F; 
							case 0x000E1B: return 0x001933; 
							case 0x000E0C: return 0x0018D9; 
							case 0x000E06: return 0x0018B5; 
							case 0x000E1F: return 0x00194B; 
							case 0x000E13: return 0x001903; 
							case 0x000E18: return 0x001921; 
							case 0x000E02: return 0x00189D; 
							case 0x000E0F: return 0x0018EB; 
							case 0x000E27: return 0x00197B; 
							case 0x000E17: return 0x00191B; 
							case 0x000E1C: return 0x001939; 
							case 0x000E0B: return 0x0018D3; 
							case 0x000E09: return 0x0018C7; 
							case 0x000E22: return 0x00195D; 
							case 0x000E10: return 0x0018F1; 
							case 0x000E19: return 0x001927; 
							case 0x000E05: return 0x0018AF; 
							}

							*w = 1;
							return 0x0019AE;
						}
					}
				}
				else { /* weight > state_000E42 */
					if (weight == state_000E44) {
						switch (u) {
						case 0x000E1E: return 0x001948; 
						case 0x000E10: return 0x0018F4; 
						case 0x000E08: return 0x0018C4; 
						case 0x000E01: return 0x00189A; 
						case 0x000E28: return 0x001984; 
						case 0x000E0E: return 0x0018E8; 
						case 0x000E14: return 0x00190C; 
						case 0x000E2B: return 0x001996; 
						case 0x000E27: return 0x00197E; 
						case 0x000E29: return 0x00198A; 
						case 0x000E0A: return 0x0018D0; 
						case 0x000E18: return 0x001924; 
						case 0x000E22: return 0x001960; 
						case 0x000E1D: return 0x001942; 
						case 0x000E13: return 0x001906; 
						case 0x000E09: return 0x0018CA; 
						case 0x000E06: return 0x0018B8; 
						case 0x000E17: return 0x00191E; 
						case 0x000E1C: return 0x00193C; 
						case 0x000E2C: return 0x00199C; 
						case 0x000E02: return 0x0018A0; 
						case 0x000E0F: return 0x0018EE; 
						case 0x000E12: return 0x001900; 
						case 0x000E24: return 0x00196C; 
						case 0x000E0B: return 0x0018D6; 
						case 0x000E07: return 0x0018BE; 
						case 0x000E16: return 0x001918; 
						case 0x000E20: return 0x001954; 
						case 0x000E23: return 0x001966; 
						case 0x000E1B: return 0x001936; 
						case 0x000E2D: return 0x0019A2; 
						case 0x000E03: return 0x0018A6; 
						case 0x000E1F: return 0x00194E; 
						case 0x000E25: return 0x001972; 
						case 0x000E0C: return 0x0018DC; 
						case 0x000E04: return 0x0018AC; 
						case 0x000E11: return 0x0018FA; 
						case 0x000E21: return 0x00195A; 
						case 0x000E2E: return 0x0019A8; 
						case 0x000E0D: return 0x0018E2; 
						case 0x000E15: return 0x001912; 
						case 0x000E1A: return 0x001930; 
						case 0x000E2A: return 0x001990; 
						case 0x000E26: return 0x001978; 
						case 0x000E05: return 0x0018B2; 
						case 0x000E19: return 0x00192A; 
						}

						*w = 1;
						return 0x0019B1;
					}
					else if (weight < state_000E44) {
						if (weight == state_000E43) {
							switch (u) {
							case 0x000E02: return 0x00189F; 
							case 0x000E22: return 0x00195F; 
							case 0x000E13: return 0x001905; 
							case 0x000E25: return 0x001971; 
							case 0x000E2A: return 0x00198F; 
							case 0x000E06: return 0x0018B7; 
							case 0x000E0B: return 0x0018D5; 
							case 0x000E28: return 0x001983; 
							case 0x000E1C: return 0x00193B; 
							case 0x000E2E: return 0x0019A7; 
							case 0x000E20: return 0x001953; 
							case 0x000E0F: return 0x0018ED; 
							case 0x000E01: return 0x001899; 
							case 0x000E14: return 0x00190B; 
							case 0x000E24: return 0x00196B; 
							case 0x000E05: return 0x0018B1; 
							case 0x000E0A: return 0x0018CF; 
							case 0x000E10: return 0x0018F3; 
							case 0x000E1D: return 0x001941; 
							case 0x000E2D: return 0x0019A1; 
							case 0x000E09: return 0x0018C9; 
							case 0x000E0E: return 0x0018E7; 
							case 0x000E15: return 0x001911; 
							case 0x000E27: return 0x00197D; 
							case 0x000E2C: return 0x00199B; 
							case 0x000E04: return 0x0018AB; 
							case 0x000E18: return 0x001923; 
							case 0x000E11: return 0x0018F9; 
							case 0x000E1E: return 0x001947; 
							case 0x000E08: return 0x0018C3; 
							case 0x000E23: return 0x001965; 
							case 0x000E0D: return 0x0018E1; 
							case 0x000E1A: return 0x00192F; 
							case 0x000E16: return 0x001917; 
							case 0x000E26: return 0x001977; 
							case 0x000E2B: return 0x001995; 
							case 0x000E03: return 0x0018A5; 
							case 0x000E19: return 0x001929; 
							case 0x000E29: return 0x001989; 
							case 0x000E12: return 0x0018FF; 
							case 0x000E1F: return 0x00194D; 
							case 0x000E07: return 0x0018BD; 
							case 0x000E0C: return 0x0018DB; 
							case 0x000E1B: return 0x001935; 
							case 0x000E17: return 0x00191D; 
							case 0x000E21: return 0x001959; 
							}

							*w = 1;
							return 0x0019B0;
						}
					}
					else { /* weight > state_000E44 */
						if (weight == state_00AAB5) {
							switch (u) {
							case 0x00AAA8: return 0x001B68; 
							case 0x00AA9F: return 0x001B32; 
							case 0x00AA93: return 0x001AEA; 
							case 0x00AAAA: return 0x001B74; 
							case 0x00AAA7: return 0x001B62; 
							case 0x00AA82: return 0x001A84; 
							case 0x00AA8F: return 0x001AD2; 
							case 0x00AA97: return 0x001B02; 
							case 0x00AAAE: return 0x001B8C; 
							case 0x00AA9C: return 0x001B20; 
							case 0x00AAA0: return 0x001B38; 
							case 0x00AA8B: return 0x001ABA; 
							case 0x00AAA9: return 0x001B6E; 
							case 0x00AA90: return 0x001AD8; 
							case 0x00AAA4: return 0x001B50; 
							case 0x00AA85: return 0x001A96; 
							case 0x00AA94: return 0x001AF0; 
							case 0x00AAAB: return 0x001B7A; 
							case 0x00AA81: return 0x001A7E; 
							case 0x00AAA1: return 0x001B3E; 
							case 0x00AA8E: return 0x001ACC; 
							case 0x00AA98: return 0x001B08; 
							case 0x00AAAF: return 0x001B92; 
							case 0x00AA9D: return 0x001B26; 
							case 0x00AA91: return 0x001ADE; 
							case 0x00AAA5: return 0x001B56; 
							case 0x00AA8A: return 0x001AB4; 
							case 0x00AA84: return 0x001A90; 
							case 0x00AA95: return 0x001AF6; 
							case 0x00AA89: return 0x001AAE; 
							case 0x00AAAC: return 0x001B80; 
							case 0x00AA9A: return 0x001B14; 
							case 0x00AA80: return 0x001A78; 
							case 0x00AA8D: return 0x001AC6; 
							case 0x00AA99: return 0x001B0E; 
							case 0x00AA9E: return 0x001B2C; 
							case 0x00AAA2: return 0x001B44; 
							case 0x00AA87: return 0x001AA2; 
							case 0x00AA92: return 0x001AE4; 
							case 0x00AA88: return 0x001AA8; 
							case 0x00AAA6: return 0x001B5C; 
							case 0x00AA83: return 0x001A8A; 
							case 0x00AA96: return 0x001AFC; 
							case 0x00AAAD: return 0x001B86; 
							case 0x00AA9B: return 0x001B1A; 
							case 0x00AAA3: return 0x001B4A; 
							case 0x00AA8C: return 0x001AC0; 
							case 0x00AA86: return 0x001A9C; 
							}

							*w = 1;
							return 0x001B98;
						}
					}
				}
			}
			else { /* weight > state_00AAB6 */
				if (weight == state_000EC2) {
					switch (u) {
					case 0x000E82: return 0x0019C2; 
					case 0x000E9B: return 0x001A16; 
					case 0x000EDD: return 0x001A5E; 
					case 0x000EAD: return 0x001A64; 
					case 0x000E9F: return 0x001A2E; 
					case 0x000EAA: return 0x0019DA; 
					case 0x000E81: return 0x0019BC; 
					case 0x000E9C: return 0x001A1C; 
					case 0x000E94: return 0x0019F2; 
					case 0x000EDC: return 0x001A58; 
					case 0x000EAE: return 0x001A6A; 
					case 0x000EA1: return 0x001A34; 
					case 0x000E84: return 0x0019C8; 
					case 0x000EA5: return 0x001A46; 
					case 0x000EAB: return 0x001A52; 
					case 0x000E95: return 0x0019F8; 
					case 0x000EA2: return 0x001A3A; 
					case 0x000E99: return 0x001A0A; 
					case 0x000E8A: return 0x0019E0; 
					case 0x000EDF: return 0x0019E6; 
					case 0x000E88: return 0x0019D4; 
					case 0x000E9D: return 0x001A22; 
					case 0x000E87: return 0x0019CE; 
					case 0x000E96: return 0x0019FE; 
					case 0x000E8D: return 0x0019EC; 
					case 0x000E9A: return 0x001A10; 
					case 0x000EA3: return 0x001A40; 
					case 0x000EDE: return 0x0019B6; 
					case 0x000E9E: return 0x001A28; 
					case 0x000EA7: return 0x001A4C; 
					case 0x000E97: return 0x001A04; 
					}

					*w = 1;
					return 0x001A74;
				}
				else if (weight < state_000EC2) {
					if (weight == state_000EC0) {
						switch (u) {
						case 0x000E84: return 0x0019C6; 
						case 0x000E9D: return 0x001A20; 
						case 0x000E8A: return 0x0019DE; 
						case 0x000EAB: return 0x001A50; 
						case 0x000E88: return 0x0019D2; 
						case 0x000E99: return 0x001A08; 
						case 0x000E96: return 0x0019FC; 
						case 0x000EA2: return 0x001A38; 
						case 0x000E87: return 0x0019CC; 
						case 0x000E9E: return 0x001A26; 
						case 0x000EDE: return 0x0019B4; 
						case 0x000E9A: return 0x001A0E; 
						case 0x000EA7: return 0x001A4A; 
						case 0x000E82: return 0x0019C0; 
						case 0x000E8D: return 0x0019EA; 
						case 0x000E97: return 0x001A02; 
						case 0x000EA3: return 0x001A3E; 
						case 0x000EAD: return 0x001A62; 
						case 0x000EDD: return 0x001A5C; 
						case 0x000E9F: return 0x001A2C; 
						case 0x000E94: return 0x0019F0; 
						case 0x000E9B: return 0x001A14; 
						case 0x000EAE: return 0x001A68; 
						case 0x000E81: return 0x0019BA; 
						case 0x000EAA: return 0x0019D8; 
						case 0x000EA5: return 0x001A44; 
						case 0x000EDC: return 0x001A56; 
						case 0x000E95: return 0x0019F6; 
						case 0x000E9C: return 0x001A1A; 
						case 0x000EA1: return 0x001A32; 
						case 0x000EDF: return 0x0019E4; 
						}

						*w = 1;
						return 0x001A72;
					}
					else if (weight < state_000EC0) {
						if (weight == state_000EC1) {
							switch (u) {
							case 0x000EAD: return 0x001A63; 
							case 0x000E97: return 0x001A03; 
							case 0x000EA1: return 0x001A33; 
							case 0x000E9C: return 0x001A1B; 
							case 0x000E82: return 0x0019C1; 
							case 0x000EDE: return 0x0019B5; 
							case 0x000EA5: return 0x001A45; 
							case 0x000E87: return 0x0019CD; 
							case 0x000E96: return 0x0019FD; 
							case 0x000E9B: return 0x001A15; 
							case 0x000E99: return 0x001A09; 
							case 0x000E88: return 0x0019D3; 
							case 0x000EAB: return 0x001A51; 
							case 0x000E9F: return 0x001A2D; 
							case 0x000E84: return 0x0019C7; 
							case 0x000EDF: return 0x0019E5; 
							case 0x000EA3: return 0x001A3F; 
							case 0x000E8D: return 0x0019EB; 
							case 0x000E95: return 0x0019F7; 
							case 0x000EDC: return 0x001A57; 
							case 0x000EA7: return 0x001A4B; 
							case 0x000E9A: return 0x001A0F; 
							case 0x000EAA: return 0x0019D9; 
							case 0x000E9E: return 0x001A27; 
							case 0x000EA2: return 0x001A39; 
							case 0x000E81: return 0x0019BB; 
							case 0x000EAE: return 0x001A69; 
							case 0x000E94: return 0x0019F1; 
							case 0x000E8A: return 0x0019DF; 
							case 0x000EDD: return 0x001A5D; 
							case 0x000E9D: return 0x001A21; 
							}

							*w = 1;
							return 0x001A73;
						}
					}
					else { /* weight > state_000EC0 */
						if (weight == state_000EC3) {
							switch (u) {
							case 0x000E96: return 0x0019FF; 
							case 0x000EAE: return 0x001A6B; 
							case 0x000E9C: return 0x001A1D; 
							case 0x000EA1: return 0x001A35; 
							case 0x000EDE: return 0x0019B7; 
							case 0x000EA5: return 0x001A47; 
							case 0x000E84: return 0x0019C9; 
							case 0x000E95: return 0x0019F9; 
							case 0x000EAD: return 0x001A65; 
							case 0x000E9B: return 0x001A17; 
							case 0x000E99: return 0x001A0B; 
							case 0x000EDF: return 0x0019E7; 
							case 0x000E9F: return 0x001A2F; 
							case 0x000E94: return 0x0019F3; 
							case 0x000E88: return 0x0019D5; 
							case 0x000EDC: return 0x001A59; 
							case 0x000E81: return 0x0019BD; 
							case 0x000E9A: return 0x001A11; 
							case 0x000E8D: return 0x0019ED; 
							case 0x000E9E: return 0x001A29; 
							case 0x000EA3: return 0x001A41; 
							case 0x000EA7: return 0x001A4D; 
							case 0x000EAB: return 0x001A53; 
							case 0x000E82: return 0x0019C3; 
							case 0x000E97: return 0x001A05; 
							case 0x000E9D: return 0x001A23; 
							case 0x000EA2: return 0x001A3B; 
							case 0x000E87: return 0x0019CF; 
							case 0x000E8A: return 0x0019E1; 
							case 0x000EDD: return 0x001A5F; 
							case 0x000EAA: return 0x0019DB; 
							}

							*w = 1;
							return 0x001A75;
						}
					}
				}
				else { /* weight > state_000EC2 */
					if (weight == state_001B0B) {
						switch (u) {
						case 0x001B35: return 0x001FCE; 
						}

						*w = 1;
						return 0x001FCD;
					}
					else if (weight < state_001B0B) {
						if (weight == state_000EC4) {
							switch (u) {
							case 0x000EDD: return 0x001A60; 
							case 0x000E9F: return 0x001A30; 
							case 0x000EAA: return 0x0019DC; 
							case 0x000EA7: return 0x001A4E; 
							case 0x000E82: return 0x0019C4; 
							case 0x000E97: return 0x001A06; 
							case 0x000EDC: return 0x001A5A; 
							case 0x000EAE: return 0x001A6C; 
							case 0x000E9C: return 0x001A1E; 
							case 0x000E94: return 0x0019F4; 
							case 0x000EAB: return 0x001A54; 
							case 0x000E81: return 0x0019BE; 
							case 0x000EA1: return 0x001A36; 
							case 0x000EDF: return 0x0019E8; 
							case 0x000E9D: return 0x001A24; 
							case 0x000EA5: return 0x001A48; 
							case 0x000E8A: return 0x0019E2; 
							case 0x000E84: return 0x0019CA; 
							case 0x000E95: return 0x0019FA; 
							case 0x000E9A: return 0x001A12; 
							case 0x000E8D: return 0x0019EE; 
							case 0x000E99: return 0x001A0C; 
							case 0x000E9E: return 0x001A2A; 
							case 0x000EA2: return 0x001A3C; 
							case 0x000E87: return 0x0019D0; 
							case 0x000EDE: return 0x0019B8; 
							case 0x000E88: return 0x0019D6; 
							case 0x000E96: return 0x001A00; 
							case 0x000EAD: return 0x001A66; 
							case 0x000E9B: return 0x001A18; 
							case 0x000EA3: return 0x001A42; 
							}

							*w = 1;
							return 0x001A76;
						}
					}
					else { /* weight > state_001B0B */
						if (weight == state_001B11) {
							switch (u) {
							case 0x001B35: return 0x001FD4; 
							}

							*w = 1;
							return 0x001FD3;
						}
					}
				}
			}
		}
	}

	return 0;
}