-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgloommaths.cpp
1385 lines (1349 loc) · 116 KB
/
gloommaths.cpp
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
#include <cstdint>
#include <algorithm>
#include <utility>
#include "gloommaths.h"
namespace GloomMaths
{
static const uint16_t camrots[256][4] = {
{ 0x7FFE, 0x0000, 0x0000, 0x7FFE },
{ 0x7FF4, 0xFCDC, 0x0323, 0x7FF4 },
{ 0x7FD6, 0xF9B8, 0x0647, 0x7FD6 },
{ 0x7FA5, 0xF695, 0x096A, 0x7FA5 },
{ 0x7F60, 0xF374, 0x0C8B, 0x7F60 },
{ 0x7F07, 0xF055, 0x0FAA, 0x7F07 },
{ 0x7E9B, 0xED38, 0x12C7, 0x7E9B },
{ 0x7E1B, 0xEA1E, 0x15E1, 0x7E1B },
{ 0x7D88, 0xE707, 0x18F8, 0x7D88 },
{ 0x7CE1, 0xE3F4, 0x1C0B, 0x7CE1 },
{ 0x7C27, 0xE0E6, 0x1F19, 0x7C27 },
{ 0x7B5B, 0xDDDD, 0x2222, 0x7B5B },
{ 0x7A7B, 0xDAD8, 0x2527, 0x7A7B },
{ 0x7988, 0xD7DA, 0x2825, 0x7988 },
{ 0x7882, 0xD4E1, 0x2B1E, 0x7882 },
{ 0x776A, 0xD1EF, 0x2E10, 0x776A },
{ 0x763F, 0xCF05, 0x30FA, 0x763F },
{ 0x7502, 0xCC22, 0x33DD, 0x7502 },
{ 0x73B3, 0xC946, 0x36B9, 0x73B3 },
{ 0x7253, 0xC674, 0x398B, 0x7253 },
{ 0x70E0, 0xC3AA, 0x3C55, 0x70E0 },
{ 0x6F5D, 0xC0E9, 0x3F16, 0x6F5D },
{ 0x6DC8, 0xBE33, 0x41CC, 0x6DC8 },
{ 0x6C22, 0xBB86, 0x4479, 0x6C22 },
{ 0x6A6B, 0xB8E4, 0x471B, 0x6A6B },
{ 0x68A4, 0xB64D, 0x49B2, 0x68A4 },
{ 0x66CD, 0xB3C1, 0x4C3E, 0x66CD },
{ 0x64E6, 0xB141, 0x4EBE, 0x64E6 },
{ 0x62F0, 0xAECD, 0x5132, 0x62F0 },
{ 0x60EA, 0xAC66, 0x5399, 0x60EA },
{ 0x5ED5, 0xAA0B, 0x55F4, 0x5ED5 },
{ 0x5CB2, 0xA7BE, 0x5841, 0x5CB2 },
{ 0x5A80, 0xA57F, 0x5A80, 0x5A80 },
{ 0x5841, 0xA34D, 0x5CB2, 0x5841 },
{ 0x55F4, 0xA12A, 0x5ED5, 0x55F4 },
{ 0x5399, 0x9F15, 0x60EA, 0x5399 },
{ 0x5132, 0x9D0F, 0x62F0, 0x5132 },
{ 0x4EBE, 0x9B19, 0x64E6, 0x4EBE },
{ 0x4C3E, 0x9932, 0x66CD, 0x4C3E },
{ 0x49B2, 0x975B, 0x68A4, 0x49B2 },
{ 0x471B, 0x9594, 0x6A6B, 0x471B },
{ 0x4479, 0x93DD, 0x6C22, 0x4479 },
{ 0x41CC, 0x9237, 0x6DC8, 0x41CC },
{ 0x3F16, 0x90A2, 0x6F5D, 0x3F16 },
{ 0x3C55, 0x8F1F, 0x70E0, 0x3C55 },
{ 0x398B, 0x8DAC, 0x7253, 0x398B },
{ 0x36B9, 0x8C4C, 0x73B3, 0x36B9 },
{ 0x33DD, 0x8AFD, 0x7502, 0x33DD },
{ 0x30FA, 0x89C0, 0x763F, 0x30FA },
{ 0x2E10, 0x8895, 0x776A, 0x2E10 },
{ 0x2B1E, 0x877D, 0x7882, 0x2B1E },
{ 0x2825, 0x8677, 0x7988, 0x2825 },
{ 0x2527, 0x8584, 0x7A7B, 0x2527 },
{ 0x2222, 0x84A4, 0x7B5B, 0x2222 },
{ 0x1F19, 0x83D8, 0x7C27, 0x1F19 },
{ 0x1C0B, 0x831E, 0x7CE1, 0x1C0B },
{ 0x18F8, 0x8277, 0x7D88, 0x18F8 },
{ 0x15E1, 0x81E4, 0x7E1B, 0x15E1 },
{ 0x12C7, 0x8164, 0x7E9B, 0x12C7 },
{ 0x0FAA, 0x80F8, 0x7F07, 0x0FAA },
{ 0x0C8B, 0x809F, 0x7F60, 0x0C8B },
{ 0x096A, 0x805A, 0x7FA5, 0x096A },
{ 0x0647, 0x8029, 0x7FD6, 0x0647 },
{ 0x0323, 0x800B, 0x7FF4, 0x0323 },
{ 0x0000, 0x8002, 0x7FFE, 0x0000 },
{ 0xFCDC, 0x800B, 0x7FF4, 0xFCDC },
{ 0xF9B8, 0x8029, 0x7FD6, 0xF9B8 },
{ 0xF695, 0x805A, 0x7FA5, 0xF695 },
{ 0xF374, 0x809F, 0x7F60, 0xF374 },
{ 0xF055, 0x80F8, 0x7F07, 0xF055 },
{ 0xED38, 0x8164, 0x7E9B, 0xED38 },
{ 0xEA1E, 0x81E4, 0x7E1B, 0xEA1E },
{ 0xE707, 0x8277, 0x7D88, 0xE707 },
{ 0xE3F4, 0x831E, 0x7CE1, 0xE3F4 },
{ 0xE0E6, 0x83D8, 0x7C27, 0xE0E6 },
{ 0xDDDD, 0x84A4, 0x7B5B, 0xDDDD },
{ 0xDAD8, 0x8584, 0x7A7B, 0xDAD8 },
{ 0xD7DA, 0x8677, 0x7988, 0xD7DA },
{ 0xD4E1, 0x877D, 0x7882, 0xD4E1 },
{ 0xD1EF, 0x8895, 0x776A, 0xD1EF },
{ 0xCF05, 0x89C0, 0x763F, 0xCF05 },
{ 0xCC22, 0x8AFD, 0x7502, 0xCC22 },
{ 0xC946, 0x8C4C, 0x73B3, 0xC946 },
{ 0xC674, 0x8DAC, 0x7253, 0xC674 },
{ 0xC3AA, 0x8F1F, 0x70E0, 0xC3AA },
{ 0xC0E9, 0x90A2, 0x6F5D, 0xC0E9 },
{ 0xBE33, 0x9237, 0x6DC8, 0xBE33 },
{ 0xBB86, 0x93DD, 0x6C22, 0xBB86 },
{ 0xB8E4, 0x9594, 0x6A6B, 0xB8E4 },
{ 0xB64D, 0x975B, 0x68A4, 0xB64D },
{ 0xB3C1, 0x9932, 0x66CD, 0xB3C1 },
{ 0xB141, 0x9B19, 0x64E6, 0xB141 },
{ 0xAECD, 0x9D0F, 0x62F0, 0xAECD },
{ 0xAC66, 0x9F15, 0x60EA, 0xAC66 },
{ 0xAA0B, 0xA12A, 0x5ED5, 0xAA0B },
{ 0xA7BE, 0xA34D, 0x5CB2, 0xA7BE },
{ 0xA57F, 0xA57F, 0x5A80, 0xA57F },
{ 0xA34D, 0xA7BE, 0x5841, 0xA34D },
{ 0xA12A, 0xAA0B, 0x55F4, 0xA12A },
{ 0x9F15, 0xAC66, 0x5399, 0x9F15 },
{ 0x9D0F, 0xAECD, 0x5132, 0x9D0F },
{ 0x9B19, 0xB141, 0x4EBE, 0x9B19 },
{ 0x9932, 0xB3C1, 0x4C3E, 0x9932 },
{ 0x975B, 0xB64D, 0x49B2, 0x975B },
{ 0x9594, 0xB8E4, 0x471B, 0x9594 },
{ 0x93DD, 0xBB86, 0x4479, 0x93DD },
{ 0x9237, 0xBE33, 0x41CC, 0x9237 },
{ 0x90A2, 0xC0E9, 0x3F16, 0x90A2 },
{ 0x8F1F, 0xC3AA, 0x3C55, 0x8F1F },
{ 0x8DAC, 0xC674, 0x398B, 0x8DAC },
{ 0x8C4C, 0xC946, 0x36B9, 0x8C4C },
{ 0x8AFD, 0xCC22, 0x33DD, 0x8AFD },
{ 0x89C0, 0xCF05, 0x30FA, 0x89C0 },
{ 0x8895, 0xD1EF, 0x2E10, 0x8895 },
{ 0x877D, 0xD4E1, 0x2B1E, 0x877D },
{ 0x8677, 0xD7DA, 0x2825, 0x8677 },
{ 0x8584, 0xDAD8, 0x2527, 0x8584 },
{ 0x84A4, 0xDDDD, 0x2222, 0x84A4 },
{ 0x83D8, 0xE0E6, 0x1F19, 0x83D8 },
{ 0x831E, 0xE3F4, 0x1C0B, 0x831E },
{ 0x8277, 0xE707, 0x18F8, 0x8277 },
{ 0x81E4, 0xEA1E, 0x15E1, 0x81E4 },
{ 0x8164, 0xED38, 0x12C7, 0x8164 },
{ 0x80F8, 0xF055, 0x0FAA, 0x80F8 },
{ 0x809F, 0xF374, 0x0C8B, 0x809F },
{ 0x805A, 0xF695, 0x096A, 0x805A },
{ 0x8029, 0xF9B8, 0x0647, 0x8029 },
{ 0x800B, 0xFCDC, 0x0323, 0x800B },
{ 0x8002, 0x0000, 0x0000, 0x8002 },
{ 0x800B, 0x0323, 0xFCDC, 0x800B },
{ 0x8029, 0x0647, 0xF9B8, 0x8029 },
{ 0x805A, 0x096A, 0xF695, 0x805A },
{ 0x809F, 0x0C8B, 0xF374, 0x809F },
{ 0x80F8, 0x0FAA, 0xF055, 0x80F8 },
{ 0x8164, 0x12C7, 0xED38, 0x8164 },
{ 0x81E4, 0x15E1, 0xEA1E, 0x81E4 },
{ 0x8277, 0x18F8, 0xE707, 0x8277 },
{ 0x831E, 0x1C0B, 0xE3F4, 0x831E },
{ 0x83D8, 0x1F19, 0xE0E6, 0x83D8 },
{ 0x84A4, 0x2222, 0xDDDD, 0x84A4 },
{ 0x8584, 0x2527, 0xDAD8, 0x8584 },
{ 0x8677, 0x2825, 0xD7DA, 0x8677 },
{ 0x877D, 0x2B1E, 0xD4E1, 0x877D },
{ 0x8895, 0x2E10, 0xD1EF, 0x8895 },
{ 0x89C0, 0x30FA, 0xCF05, 0x89C0 },
{ 0x8AFD, 0x33DD, 0xCC22, 0x8AFD },
{ 0x8C4C, 0x36B9, 0xC946, 0x8C4C },
{ 0x8DAC, 0x398B, 0xC674, 0x8DAC },
{ 0x8F1F, 0x3C55, 0xC3AA, 0x8F1F },
{ 0x90A2, 0x3F16, 0xC0E9, 0x90A2 },
{ 0x9237, 0x41CC, 0xBE33, 0x9237 },
{ 0x93DD, 0x4479, 0xBB86, 0x93DD },
{ 0x9594, 0x471B, 0xB8E4, 0x9594 },
{ 0x975B, 0x49B2, 0xB64D, 0x975B },
{ 0x9932, 0x4C3E, 0xB3C1, 0x9932 },
{ 0x9B19, 0x4EBE, 0xB141, 0x9B19 },
{ 0x9D0F, 0x5132, 0xAECD, 0x9D0F },
{ 0x9F15, 0x5399, 0xAC66, 0x9F15 },
{ 0xA12A, 0x55F4, 0xAA0B, 0xA12A },
{ 0xA34D, 0x5841, 0xA7BE, 0xA34D },
{ 0xA57F, 0x5A80, 0xA57F, 0xA57F },
{ 0xA7BE, 0x5CB2, 0xA34D, 0xA7BE },
{ 0xAA0B, 0x5ED5, 0xA12A, 0xAA0B },
{ 0xAC66, 0x60EA, 0x9F15, 0xAC66 },
{ 0xAECD, 0x62F0, 0x9D0F, 0xAECD },
{ 0xB141, 0x64E6, 0x9B19, 0xB141 },
{ 0xB3C1, 0x66CD, 0x9932, 0xB3C1 },
{ 0xB64D, 0x68A4, 0x975B, 0xB64D },
{ 0xB8E4, 0x6A6B, 0x9594, 0xB8E4 },
{ 0xBB86, 0x6C22, 0x93DD, 0xBB86 },
{ 0xBE33, 0x6DC8, 0x9237, 0xBE33 },
{ 0xC0E9, 0x6F5D, 0x90A2, 0xC0E9 },
{ 0xC3AA, 0x70E0, 0x8F1F, 0xC3AA },
{ 0xC674, 0x7253, 0x8DAC, 0xC674 },
{ 0xC946, 0x73B3, 0x8C4C, 0xC946 },
{ 0xCC22, 0x7502, 0x8AFD, 0xCC22 },
{ 0xCF05, 0x763F, 0x89C0, 0xCF05 },
{ 0xD1EF, 0x776A, 0x8895, 0xD1EF },
{ 0xD4E1, 0x7882, 0x877D, 0xD4E1 },
{ 0xD7DA, 0x7988, 0x8677, 0xD7DA },
{ 0xDAD8, 0x7A7B, 0x8584, 0xDAD8 },
{ 0xDDDD, 0x7B5B, 0x84A4, 0xDDDD },
{ 0xE0E6, 0x7C27, 0x83D8, 0xE0E6 },
{ 0xE3F4, 0x7CE1, 0x831E, 0xE3F4 },
{ 0xE707, 0x7D88, 0x8277, 0xE707 },
{ 0xEA1E, 0x7E1B, 0x81E4, 0xEA1E },
{ 0xED38, 0x7E9B, 0x8164, 0xED38 },
{ 0xF055, 0x7F07, 0x80F8, 0xF055 },
{ 0xF374, 0x7F60, 0x809F, 0xF374 },
{ 0xF695, 0x7FA5, 0x805A, 0xF695 },
{ 0xF9B8, 0x7FD6, 0x8029, 0xF9B8 },
{ 0xFCDC, 0x7FF4, 0x800B, 0xFCDC },
{ 0x0000, 0x7FFE, 0x8002, 0x0000 },
{ 0x0323, 0x7FF4, 0x800B, 0x0323 },
{ 0x0647, 0x7FD6, 0x8029, 0x0647 },
{ 0x096A, 0x7FA5, 0x805A, 0x096A },
{ 0x0C8B, 0x7F60, 0x809F, 0x0C8B },
{ 0x0FAA, 0x7F07, 0x80F8, 0x0FAA },
{ 0x12C7, 0x7E9B, 0x8164, 0x12C7 },
{ 0x15E1, 0x7E1B, 0x81E4, 0x15E1 },
{ 0x18F8, 0x7D88, 0x8277, 0x18F8 },
{ 0x1C0A, 0x7CE1, 0x831E, 0x1C0A },
{ 0x1F19, 0x7C27, 0x83D8, 0x1F19 },
{ 0x2222, 0x7B5B, 0x84A4, 0x2222 },
{ 0x2527, 0x7A7B, 0x8584, 0x2527 },
{ 0x2825, 0x7988, 0x8677, 0x2825 },
{ 0x2B1E, 0x7882, 0x877D, 0x2B1E },
{ 0x2E10, 0x776A, 0x8895, 0x2E10 },
{ 0x30FA, 0x763F, 0x89C0, 0x30FA },
{ 0x33DD, 0x7502, 0x8AFD, 0x33DD },
{ 0x36B9, 0x73B3, 0x8C4C, 0x36B9 },
{ 0x398B, 0x7253, 0x8DAC, 0x398B },
{ 0x3C55, 0x70E0, 0x8F1F, 0x3C55 },
{ 0x3F16, 0x6F5D, 0x90A2, 0x3F16 },
{ 0x41CC, 0x6DC8, 0x9237, 0x41CC },
{ 0x4479, 0x6C22, 0x93DD, 0x4479 },
{ 0x471B, 0x6A6B, 0x9594, 0x471B },
{ 0x49B2, 0x68A4, 0x975B, 0x49B2 },
{ 0x4C3E, 0x66CD, 0x9932, 0x4C3E },
{ 0x4EBE, 0x64E6, 0x9B19, 0x4EBE },
{ 0x5132, 0x62F0, 0x9D0F, 0x5132 },
{ 0x5399, 0x60EA, 0x9F15, 0x5399 },
{ 0x55F4, 0x5ED5, 0xA12A, 0x55F4 },
{ 0x5841, 0x5CB2, 0xA34D, 0x5841 },
{ 0x5A80, 0x5A80, 0xA57F, 0x5A80 },
{ 0x5CB2, 0x5841, 0xA7BE, 0x5CB2 },
{ 0x5ED5, 0x55F4, 0xAA0B, 0x5ED5 },
{ 0x60EA, 0x5399, 0xAC66, 0x60EA },
{ 0x62EF, 0x5132, 0xAECD, 0x62EF },
{ 0x64E6, 0x4EBE, 0xB141, 0x64E6 },
{ 0x66CD, 0x4C3E, 0xB3C1, 0x66CD },
{ 0x68A4, 0x49B2, 0xB64D, 0x68A4 },
{ 0x6A6B, 0x471B, 0xB8E4, 0x6A6B },
{ 0x6C22, 0x4479, 0xBB86, 0x6C22 },
{ 0x6DC8, 0x41CC, 0xBE33, 0x6DC8 },
{ 0x6F5D, 0x3F16, 0xC0E9, 0x6F5D },
{ 0x70E0, 0x3C55, 0xC3AA, 0x70E0 },
{ 0x7253, 0x398B, 0xC674, 0x7253 },
{ 0x73B3, 0x36B9, 0xC946, 0x73B3 },
{ 0x7502, 0x33DD, 0xCC22, 0x7502 },
{ 0x763F, 0x30FA, 0xCF05, 0x763F },
{ 0x776A, 0x2E10, 0xD1EF, 0x776A },
{ 0x7882, 0x2B1E, 0xD4E1, 0x7882 },
{ 0x7988, 0x2825, 0xD7DA, 0x7988 },
{ 0x7A7B, 0x2527, 0xDAD8, 0x7A7B },
{ 0x7B5B, 0x2222, 0xDDDD, 0x7B5B },
{ 0x7C27, 0x1F19, 0xE0E6, 0x7C27 },
{ 0x7CE1, 0x1C0B, 0xE3F4, 0x7CE1 },
{ 0x7D88, 0x18F8, 0xE707, 0x7D88 },
{ 0x7E1B, 0x15E1, 0xEA1E, 0x7E1B },
{ 0x7E9B, 0x12C7, 0xED38, 0x7E9B },
{ 0x7F07, 0x0FAA, 0xF055, 0x7F07 },
{ 0x7F60, 0x0C8B, 0xF374, 0x7F60 },
{ 0x7FA5, 0x096A, 0xF695, 0x7FA5 },
{ 0x7FD6, 0x0647, 0xF9B8, 0x7FD6 },
{ 0x7FF4, 0x0323, 0xFCDC, 0x7FF4 } };
void GetCamRot(uint8_t ang, Quick result[4])
{
for (auto i = 0; i < 4; i++)
{
// these appear to have been shifted down by one (as a sign bit is needed) compared to a Blitz quick
// there's a lot of 'add d0, d0' in the code to compensate sometimes
int32_t val = camrots[ang][i] << 1;
if (val & 0x10000) val |= 0xFFFF0000;
result[i].SetVal(val);
}
}
void GetCamRotRaw(uint8_t ang, int16_t result[4])
{
for (auto i = 0; i < 4; i++)
{
result[i] = camrots[ang][i];
}
}
static const int32_t camrots2[] =
{
0x7FFE, 0x0000, 0x0000, 0x7FFE, 0x7FFD, 0xFF37, 0x00C8, 0x7FFD, 0x7FFB, 0xFE6E, 0x0191, 0x7FFB, 0x7FF8, 0xFDA5, 0x025A, 0x7FF8,
0x7FF4, 0xFCDC, 0x0323, 0x7FF4, 0x7FEE, 0xFC13, 0x03EC, 0x7FEE, 0x7FE7, 0xFB4A, 0x04B5, 0x7FE7, 0x7FDF, 0xFA81, 0x057E, 0x7FDF,
0x7FD6, 0xF9B8, 0x0647, 0x7FD6, 0x7FCC, 0xF8EF, 0x0710, 0x7FCC, 0x7FC0, 0xF827, 0x07D8, 0x7FC0, 0x7FB3, 0xF75E, 0x08A1, 0x7FB3,
0x7FA5, 0xF695, 0x096A, 0x7FA5, 0x7F95, 0xF5CD, 0x0A32, 0x7F95, 0x7F85, 0xF505, 0x0AFA, 0x7F85, 0x7F73, 0xF43C, 0x0BC3, 0x7F73,
0x7F60, 0xF374, 0x0C8B, 0x7F60, 0x7F4B, 0xF2AC, 0x0D53, 0x7F4B, 0x7F36, 0xF1E4, 0x0E1B, 0x7F36, 0x7F1F, 0xF11C, 0x0EE3, 0x7F1F,
0x7F07, 0xF055, 0x0FAA, 0x7F07, 0x7EEE, 0xEF8D, 0x1072, 0x7EEE, 0x7ED3, 0xEEC6, 0x1139, 0x7ED3, 0x7EB8, 0xEDFF, 0x1200, 0x7EB8,
0x7E9B, 0xED38, 0x12C7, 0x7E9B, 0x7E7D, 0xEC71, 0x138E, 0x7E7D, 0x7E5D, 0xEBAB, 0x1454, 0x7E5D, 0x7E3D, 0xEAE4, 0x151B, 0x7E3D,
0x7E1B, 0xEA1E, 0x15E1, 0x7E1B, 0x7DF8, 0xE958, 0x16A7, 0x7DF8, 0x7DD4, 0xE892, 0x176D, 0x7DD4, 0x7DAE, 0xE7CD, 0x1832, 0x7DAE,
0x7D88, 0xE707, 0x18F8, 0x7D88, 0x7D60, 0xE642, 0x19BD, 0x7D60, 0x7D37, 0xE57D, 0x1A82, 0x7D37, 0x7D0D, 0xE4B9, 0x1B46, 0x7D0D,
0x7CE1, 0xE3F4, 0x1C0B, 0x7CE1, 0x7CB5, 0xE330, 0x1CCF, 0x7CB5, 0x7C87, 0xE26D, 0x1D92, 0x7C87, 0x7C58, 0xE1A9, 0x1E56, 0x7C58,
0x7C27, 0xE0E6, 0x1F19, 0x7C27, 0x7BF6, 0xE023, 0x1FDC, 0x7BF6, 0x7BC3, 0xDF61, 0x209E, 0x7BC3, 0x7B90, 0xDE9F, 0x2160, 0x7B90,
0x7B5B, 0xDDDD, 0x2222, 0x7B5B, 0x7B24, 0xDD1B, 0x22E4, 0x7B24, 0x7AED, 0xDC5A, 0x23A5, 0x7AED, 0x7AB4, 0xDB99, 0x2466, 0x7AB4,
0x7A7B, 0xDAD8, 0x2527, 0x7A7B, 0x7A40, 0xDA18, 0x25E7, 0x7A40, 0x7A03, 0xD958, 0x26A7, 0x7A03, 0x79C6, 0xD899, 0x2766, 0x79C6,
0x7988, 0xD7DA, 0x2825, 0x7988, 0x7948, 0xD71B, 0x28E4, 0x7948, 0x7907, 0xD65D, 0x29A2, 0x7907, 0x78C5, 0xD59F, 0x2A60, 0x78C5,
0x7882, 0xD4E1, 0x2B1E, 0x7882, 0x783E, 0xD424, 0x2BDB, 0x783E, 0x77F8, 0xD368, 0x2C97, 0x77F8, 0x77B2, 0xD2AB, 0x2D54, 0x77B2,
0x776A, 0xD1EF, 0x2E10, 0x776A, 0x7721, 0xD134, 0x2ECB, 0x7721, 0x76D7, 0xD079, 0x2F86, 0x76D7, 0x768C, 0xCFBF, 0x3040, 0x768C,
0x763F, 0xCF05, 0x30FA, 0x763F, 0x75F2, 0xCE4B, 0x31B4, 0x75F2, 0x75A3, 0xCD92, 0x326D, 0x75A3, 0x7553, 0xCCDA, 0x3325, 0x7553,
0x7502, 0xCC22, 0x33DD, 0x7502, 0x74B0, 0xCB6A, 0x3495, 0x74B0, 0x745D, 0xCAB3, 0x354C, 0x745D, 0x7409, 0xC9FC, 0x3603, 0x7409,
0x73B3, 0xC946, 0x36B9, 0x73B3, 0x735D, 0xC891, 0x376E, 0x735D, 0x7305, 0xC7DC, 0x3823, 0x7305, 0x72AD, 0xC728, 0x38D7, 0x72AD,
0x7253, 0xC674, 0x398B, 0x7253, 0x71F8, 0xC5C0, 0x3A3F, 0x71F8, 0x719C, 0xC50E, 0x3AF1, 0x719C, 0x713F, 0xC45B, 0x3BA4, 0x713F,
0x70E0, 0xC3AA, 0x3C55, 0x70E0, 0x7081, 0xC2F9, 0x3D06, 0x7081, 0x7021, 0xC248, 0x3DB7, 0x7021, 0x6FBF, 0xC198, 0x3E67, 0x6FBF,
0x6F5D, 0xC0E9, 0x3F16, 0x6F5D, 0x6EF9, 0xC03B, 0x3FC4, 0x6EF9, 0x6E94, 0xBF8D, 0x4072, 0x6E94, 0x6E2E, 0xBEE0, 0x411F, 0x6E2E,
0x6DC8, 0xBE33, 0x41CC, 0x6DC8, 0x6D60, 0xBD87, 0x4278, 0x6D60, 0x6CF7, 0xBCDB, 0x4324, 0x6CF7, 0x6C8D, 0xBC30, 0x43CF, 0x6C8D,
0x6C22, 0xBB86, 0x4479, 0x6C22, 0x6BB6, 0xBADD, 0x4522, 0x6BB6, 0x6B48, 0xBA34, 0x45CB, 0x6B48, 0x6ADA, 0xB98C, 0x4673, 0x6ADA,
0x6A6B, 0xB8E4, 0x471B, 0x6A6B, 0x69FB, 0xB83D, 0x47C2, 0x69FB, 0x698A, 0xB797, 0x4868, 0x698A, 0x6917, 0xB6F2, 0x490D, 0x6917,
0x68A4, 0xB64D, 0x49B2, 0x68A4, 0x6830, 0xB5A9, 0x4A56, 0x6830, 0x67BB, 0xB506, 0x4AF9, 0x67BB, 0x6744, 0xB463, 0x4B9C, 0x6744,
0x66CD, 0xB3C1, 0x4C3E, 0x66CD, 0x6655, 0xB320, 0x4CDF, 0x6655, 0x65DB, 0xB280, 0x4D7F, 0x65DB, 0x6561, 0xB1E0, 0x4E1F, 0x6561,
0x64E6, 0xB141, 0x4EBE, 0x64E6, 0x646A, 0xB0A3, 0x4F5C, 0x646A, 0x63ED, 0xB006, 0x4FF9, 0x63ED, 0x636F, 0xAF69, 0x5096, 0x636F,
0x62F0, 0xAECD, 0x5132, 0x62F0, 0x626F, 0xAE32, 0x51CD, 0x626F, 0x61EF, 0xAD98, 0x5267, 0x61EF, 0x616D, 0xACFE, 0x5301, 0x616D,
0x60EA, 0xAC66, 0x5399, 0x60EA, 0x6066, 0xABCE, 0x5431, 0x6066, 0x5FE2, 0xAB37, 0x54C8, 0x5FE2, 0x5F5C, 0xAAA1, 0x555E, 0x5F5C,
0x5ED5, 0xAA0B, 0x55F4, 0x5ED5, 0x5E4E, 0xA977, 0x5688, 0x5E4E, 0x5DC6, 0xA8E3, 0x571C, 0x5DC6, 0x5D3C, 0xA850, 0x57AF, 0x5D3C,
0x5CB2, 0xA7BE, 0x5841, 0x5CB2, 0x5C27, 0xA72D, 0x58D2, 0x5C27, 0x5B9B, 0xA69D, 0x5962, 0x5B9B, 0x5B0E, 0xA60D, 0x59F2, 0x5B0E,
0x5A80, 0xA57F, 0x5A80, 0x5A80, 0x59F2, 0xA4F1, 0x5B0E, 0x59F2, 0x5962, 0xA464, 0x5B9B, 0x5962, 0x58D2, 0xA3D8, 0x5C27, 0x58D2,
0x5841, 0xA34D, 0x5CB2, 0x5841, 0x57AF, 0xA2C3, 0x5D3C, 0x57AF, 0x571C, 0xA239, 0x5DC6, 0x571C, 0x5688, 0xA1B1, 0x5E4E, 0x5688,
0x55F4, 0xA12A, 0x5ED5, 0x55F4, 0x555E, 0xA0A3, 0x5F5C, 0x555E, 0x54C8, 0xA01D, 0x5FE2, 0x54C8, 0x5431, 0x9F99, 0x6066, 0x5431,
0x5399, 0x9F15, 0x60EA, 0x5399, 0x5301, 0x9E92, 0x616D, 0x5301, 0x5267, 0x9E10, 0x61EF, 0x5267, 0x51CD, 0x9D90, 0x626F, 0x51CD,
0x5132, 0x9D0F, 0x62F0, 0x5132, 0x5096, 0x9C90, 0x636F, 0x5096, 0x4FF9, 0x9C12, 0x63ED, 0x4FF9, 0x4F5C, 0x9B95, 0x646A, 0x4F5C,
0x4EBE, 0x9B19, 0x64E6, 0x4EBE, 0x4E1F, 0x9A9E, 0x6561, 0x4E1F, 0x4D7F, 0x9A24, 0x65DB, 0x4D7F, 0x4CDF, 0x99AA, 0x6655, 0x4CDF,
0x4C3E, 0x9932, 0x66CD, 0x4C3E, 0x4B9C, 0x98BB, 0x6744, 0x4B9C, 0x4AF9, 0x9844, 0x67BB, 0x4AF9, 0x4A56, 0x97CF, 0x6830, 0x4A56,
0x49B2, 0x975B, 0x68A4, 0x49B2, 0x490D, 0x96E8, 0x6917, 0x490D, 0x4868, 0x9675, 0x698A, 0x4868, 0x47C2, 0x9604, 0x69FB, 0x47C2,
0x471B, 0x9594, 0x6A6B, 0x471B, 0x4673, 0x9525, 0x6ADA, 0x4673, 0x45CB, 0x94B7, 0x6B48, 0x45CB, 0x4522, 0x9449, 0x6BB6, 0x4522,
0x4479, 0x93DD, 0x6C22, 0x4479, 0x43CF, 0x9372, 0x6C8D, 0x43CF, 0x4324, 0x9308, 0x6CF7, 0x4324, 0x4278, 0x929F, 0x6D60, 0x4278,
0x41CC, 0x9237, 0x6DC8, 0x41CC, 0x411F, 0x91D1, 0x6E2E, 0x411F, 0x4072, 0x916B, 0x6E94, 0x4072, 0x3FC4, 0x9106, 0x6EF9, 0x3FC4,
0x3F16, 0x90A2, 0x6F5D, 0x3F16, 0x3E67, 0x9040, 0x6FBF, 0x3E67, 0x3DB7, 0x8FDE, 0x7021, 0x3DB7, 0x3D06, 0x8F7E, 0x7081, 0x3D06,
0x3C55, 0x8F1F, 0x70E0, 0x3C55, 0x3BA4, 0x8EC0, 0x713F, 0x3BA4, 0x3AF1, 0x8E63, 0x719C, 0x3AF1, 0x3A3F, 0x8E07, 0x71F8, 0x3A3F,
0x398B, 0x8DAC, 0x7253, 0x398B, 0x38D7, 0x8D52, 0x72AD, 0x38D7, 0x3823, 0x8CFA, 0x7305, 0x3823, 0x376E, 0x8CA2, 0x735D, 0x376E,
0x36B9, 0x8C4C, 0x73B3, 0x36B9, 0x3603, 0x8BF6, 0x7409, 0x3603, 0x354C, 0x8BA2, 0x745D, 0x354C, 0x3495, 0x8B4F, 0x74B0, 0x3495,
0x33DD, 0x8AFD, 0x7502, 0x33DD, 0x3325, 0x8AAC, 0x7553, 0x3325, 0x326D, 0x8A5C, 0x75A3, 0x326D, 0x31B4, 0x8A0D, 0x75F2, 0x31B4,
0x30FA, 0x89C0, 0x763F, 0x30FA, 0x3040, 0x8973, 0x768C, 0x3040, 0x2F86, 0x8928, 0x76D7, 0x2F86, 0x2ECB, 0x88DE, 0x7721, 0x2ECB,
0x2E10, 0x8895, 0x776A, 0x2E10, 0x2D54, 0x884D, 0x77B2, 0x2D54, 0x2C97, 0x8807, 0x77F8, 0x2C97, 0x2BDB, 0x87C1, 0x783E, 0x2BDB,
0x2B1E, 0x877D, 0x7882, 0x2B1E, 0x2A60, 0x873A, 0x78C5, 0x2A60, 0x29A2, 0x86F8, 0x7907, 0x29A2, 0x28E4, 0x86B7, 0x7948, 0x28E4,
0x2825, 0x8677, 0x7988, 0x2825, 0x2766, 0x8639, 0x79C6, 0x2766, 0x26A7, 0x85FC, 0x7A03, 0x26A7, 0x25E7, 0x85BF, 0x7A40, 0x25E7,
0x2527, 0x8584, 0x7A7B, 0x2527, 0x2466, 0x854B, 0x7AB4, 0x2466, 0x23A5, 0x8512, 0x7AED, 0x23A5, 0x22E4, 0x84DB, 0x7B24, 0x22E4,
0x2222, 0x84A4, 0x7B5B, 0x2222, 0x2160, 0x846F, 0x7B90, 0x2160, 0x209E, 0x843C, 0x7BC3, 0x209E, 0x1FDC, 0x8409, 0x7BF6, 0x1FDC,
0x1F19, 0x83D8, 0x7C27, 0x1F19, 0x1E56, 0x83A7, 0x7C58, 0x1E56, 0x1D92, 0x8378, 0x7C87, 0x1D92, 0x1CCF, 0x834A, 0x7CB5, 0x1CCF,
0x1C0B, 0x831E, 0x7CE1, 0x1C0B, 0x1B46, 0x82F2, 0x7D0D, 0x1B46, 0x1A82, 0x82C8, 0x7D37, 0x1A82, 0x19BD, 0x829F, 0x7D60, 0x19BD,
0x18F8, 0x8277, 0x7D88, 0x18F8, 0x1832, 0x8251, 0x7DAE, 0x1832, 0x176D, 0x822B, 0x7DD4, 0x176D, 0x16A7, 0x8207, 0x7DF8, 0x16A7,
0x15E1, 0x81E4, 0x7E1B, 0x15E1, 0x151B, 0x81C2, 0x7E3D, 0x151B, 0x1454, 0x81A2, 0x7E5D, 0x1454, 0x138E, 0x8182, 0x7E7D, 0x138E,
0x12C7, 0x8164, 0x7E9B, 0x12C7, 0x1200, 0x8147, 0x7EB8, 0x1200, 0x1139, 0x812C, 0x7ED3, 0x1139, 0x1072, 0x8111, 0x7EEE, 0x1072,
0x0FAA, 0x80F8, 0x7F07, 0x0FAA, 0x0EE3, 0x80E0, 0x7F1F, 0x0EE3, 0x0E1B, 0x80C9, 0x7F36, 0x0E1B, 0x0D53, 0x80B4, 0x7F4B, 0x0D53,
0x0C8B, 0x809F, 0x7F60, 0x0C8B, 0x0BC3, 0x808C, 0x7F73, 0x0BC3, 0x0AFA, 0x807A, 0x7F85, 0x0AFA, 0x0A32, 0x806A, 0x7F95, 0x0A32,
0x096A, 0x805A, 0x7FA5, 0x096A, 0x08A1, 0x804C, 0x7FB3, 0x08A1, 0x07D8, 0x803F, 0x7FC0, 0x07D8, 0x0710, 0x8033, 0x7FCC, 0x0710,
0x0647, 0x8029, 0x7FD6, 0x0647, 0x057E, 0x8020, 0x7FDF, 0x057E, 0x04B5, 0x8018, 0x7FE7, 0x04B5, 0x03EC, 0x8011, 0x7FEE, 0x03EC,
0x0323, 0x800B, 0x7FF4, 0x0323, 0x025A, 0x8007, 0x7FF8, 0x025A, 0x0191, 0x8004, 0x7FFB, 0x0191, 0x00C8, 0x8002, 0x7FFD, 0x00C8,
0x0000, 0x8002, 0x7FFE, 0x0000, 0xFF37, 0x8002, 0x7FFD, 0xFF37, 0xFE6E, 0x8004, 0x7FFB, 0xFE6E, 0xFDA5, 0x8007, 0x7FF8, 0xFDA5,
0xFCDC, 0x800B, 0x7FF4, 0xFCDC, 0xFC13, 0x8011, 0x7FEE, 0xFC13, 0xFB4A, 0x8018, 0x7FE7, 0xFB4A, 0xFA81, 0x8020, 0x7FDF, 0xFA81,
0xF9B8, 0x8029, 0x7FD6, 0xF9B8, 0xF8EF, 0x8033, 0x7FCC, 0xF8EF, 0xF827, 0x803F, 0x7FC0, 0xF827, 0xF75E, 0x804C, 0x7FB3, 0xF75E,
0xF695, 0x805A, 0x7FA5, 0xF695, 0xF5CD, 0x806A, 0x7F95, 0xF5CD, 0xF505, 0x807A, 0x7F85, 0xF505, 0xF43C, 0x808C, 0x7F73, 0xF43C,
0xF374, 0x809F, 0x7F60, 0xF374, 0xF2AC, 0x80B4, 0x7F4B, 0xF2AC, 0xF1E4, 0x80C9, 0x7F36, 0xF1E4, 0xF11C, 0x80E0, 0x7F1F, 0xF11C,
0xF055, 0x80F8, 0x7F07, 0xF055, 0xEF8D, 0x8111, 0x7EEE, 0xEF8D, 0xEEC6, 0x812C, 0x7ED3, 0xEEC6, 0xEDFF, 0x8147, 0x7EB8, 0xEDFF,
0xED38, 0x8164, 0x7E9B, 0xED38, 0xEC71, 0x8182, 0x7E7D, 0xEC71, 0xEBAB, 0x81A2, 0x7E5D, 0xEBAB, 0xEAE4, 0x81C2, 0x7E3D, 0xEAE4,
0xEA1E, 0x81E4, 0x7E1B, 0xEA1E, 0xE958, 0x8207, 0x7DF8, 0xE958, 0xE892, 0x822B, 0x7DD4, 0xE892, 0xE7CD, 0x8251, 0x7DAE, 0xE7CD,
0xE707, 0x8277, 0x7D88, 0xE707, 0xE642, 0x829F, 0x7D60, 0xE642, 0xE57D, 0x82C8, 0x7D37, 0xE57D, 0xE4B9, 0x82F2, 0x7D0D, 0xE4B9,
0xE3F4, 0x831E, 0x7CE1, 0xE3F4, 0xE330, 0x834A, 0x7CB5, 0xE330, 0xE26D, 0x8378, 0x7C87, 0xE26D, 0xE1A9, 0x83A7, 0x7C58, 0xE1A9,
0xE0E6, 0x83D8, 0x7C27, 0xE0E6, 0xE023, 0x8409, 0x7BF6, 0xE023, 0xDF61, 0x843C, 0x7BC3, 0xDF61, 0xDE9F, 0x846F, 0x7B90, 0xDE9F,
0xDDDD, 0x84A4, 0x7B5B, 0xDDDD, 0xDD1B, 0x84DB, 0x7B24, 0xDD1B, 0xDC5A, 0x8512, 0x7AED, 0xDC5A, 0xDB99, 0x854B, 0x7AB4, 0xDB99,
0xDAD8, 0x8584, 0x7A7B, 0xDAD8, 0xDA18, 0x85BF, 0x7A40, 0xDA18, 0xD958, 0x85FC, 0x7A03, 0xD958, 0xD899, 0x8639, 0x79C6, 0xD899,
0xD7DA, 0x8677, 0x7988, 0xD7DA, 0xD71B, 0x86B7, 0x7948, 0xD71B, 0xD65D, 0x86F8, 0x7907, 0xD65D, 0xD59F, 0x873A, 0x78C5, 0xD59F,
0xD4E1, 0x877D, 0x7882, 0xD4E1, 0xD424, 0x87C1, 0x783E, 0xD424, 0xD368, 0x8807, 0x77F8, 0xD368, 0xD2AB, 0x884D, 0x77B2, 0xD2AB,
0xD1EF, 0x8895, 0x776A, 0xD1EF, 0xD134, 0x88DE, 0x7721, 0xD134, 0xD079, 0x8928, 0x76D7, 0xD079, 0xCFBF, 0x8973, 0x768C, 0xCFBF,
0xCF05, 0x89C0, 0x763F, 0xCF05, 0xCE4B, 0x8A0D, 0x75F2, 0xCE4B, 0xCD92, 0x8A5C, 0x75A3, 0xCD92, 0xCCDA, 0x8AAC, 0x7553, 0xCCDA,
0xCC22, 0x8AFD, 0x7502, 0xCC22, 0xCB6A, 0x8B4F, 0x74B0, 0xCB6A, 0xCAB3, 0x8BA2, 0x745D, 0xCAB3, 0xC9FC, 0x8BF6, 0x7409, 0xC9FC,
0xC946, 0x8C4C, 0x73B3, 0xC946, 0xC891, 0x8CA2, 0x735D, 0xC891, 0xC7DC, 0x8CFA, 0x7305, 0xC7DC, 0xC728, 0x8D52, 0x72AD, 0xC728,
0xC674, 0x8DAC, 0x7253, 0xC674, 0xC5C0, 0x8E07, 0x71F8, 0xC5C0, 0xC50E, 0x8E63, 0x719C, 0xC50E, 0xC45B, 0x8EC0, 0x713F, 0xC45B,
0xC3AA, 0x8F1F, 0x70E0, 0xC3AA, 0xC2F9, 0x8F7E, 0x7081, 0xC2F9, 0xC248, 0x8FDE, 0x7021, 0xC248, 0xC198, 0x9040, 0x6FBF, 0xC198,
0xC0E9, 0x90A2, 0x6F5D, 0xC0E9, 0xC03B, 0x9106, 0x6EF9, 0xC03B, 0xBF8D, 0x916B, 0x6E94, 0xBF8D, 0xBEE0, 0x91D1, 0x6E2E, 0xBEE0,
0xBE33, 0x9237, 0x6DC8, 0xBE33, 0xBD87, 0x929F, 0x6D60, 0xBD87, 0xBCDB, 0x9308, 0x6CF7, 0xBCDB, 0xBC30, 0x9372, 0x6C8D, 0xBC30,
0xBB86, 0x93DD, 0x6C22, 0xBB86, 0xBADD, 0x9449, 0x6BB6, 0xBADD, 0xBA34, 0x94B7, 0x6B48, 0xBA34, 0xB98C, 0x9525, 0x6ADA, 0xB98C,
0xB8E4, 0x9594, 0x6A6B, 0xB8E4, 0xB83D, 0x9604, 0x69FB, 0xB83D, 0xB797, 0x9675, 0x698A, 0xB797, 0xB6F2, 0x96E8, 0x6917, 0xB6F2,
0xB64D, 0x975B, 0x68A4, 0xB64D, 0xB5A9, 0x97CF, 0x6830, 0xB5A9, 0xB506, 0x9844, 0x67BB, 0xB506, 0xB463, 0x98BB, 0x6744, 0xB463,
0xB3C1, 0x9932, 0x66CD, 0xB3C1, 0xB320, 0x99AA, 0x6655, 0xB320, 0xB280, 0x9A24, 0x65DB, 0xB280, 0xB1E0, 0x9A9E, 0x6561, 0xB1E0,
0xB141, 0x9B19, 0x64E6, 0xB141, 0xB0A3, 0x9B95, 0x646A, 0xB0A3, 0xB006, 0x9C12, 0x63ED, 0xB006, 0xAF69, 0x9C90, 0x636F, 0xAF69,
0xAECD, 0x9D0F, 0x62F0, 0xAECD, 0xAE32, 0x9D90, 0x626F, 0xAE32, 0xAD98, 0x9E10, 0x61EF, 0xAD98, 0xACFE, 0x9E92, 0x616D, 0xACFE,
0xAC66, 0x9F15, 0x60EA, 0xAC66, 0xABCE, 0x9F99, 0x6066, 0xABCE, 0xAB37, 0xA01D, 0x5FE2, 0xAB37, 0xAAA1, 0xA0A3, 0x5F5C, 0xAAA1,
0xAA0B, 0xA12A, 0x5ED5, 0xAA0B, 0xA977, 0xA1B1, 0x5E4E, 0xA977, 0xA8E3, 0xA239, 0x5DC6, 0xA8E3, 0xA850, 0xA2C3, 0x5D3C, 0xA850,
0xA7BE, 0xA34D, 0x5CB2, 0xA7BE, 0xA72D, 0xA3D8, 0x5C27, 0xA72D, 0xA69D, 0xA464, 0x5B9B, 0xA69D, 0xA60D, 0xA4F1, 0x5B0E, 0xA60D,
0xA57F, 0xA57F, 0x5A80, 0xA57F, 0xA4F1, 0xA60D, 0x59F2, 0xA4F1, 0xA464, 0xA69D, 0x5962, 0xA464, 0xA3D8, 0xA72D, 0x58D2, 0xA3D8,
0xA34D, 0xA7BE, 0x5841, 0xA34D, 0xA2C3, 0xA850, 0x57AF, 0xA2C3, 0xA239, 0xA8E3, 0x571C, 0xA239, 0xA1B1, 0xA977, 0x5688, 0xA1B1,
0xA12A, 0xAA0B, 0x55F4, 0xA12A, 0xA0A3, 0xAAA1, 0x555E, 0xA0A3, 0xA01D, 0xAB37, 0x54C8, 0xA01D, 0x9F99, 0xABCE, 0x5431, 0x9F99,
0x9F15, 0xAC66, 0x5399, 0x9F15, 0x9E92, 0xACFE, 0x5301, 0x9E92, 0x9E11, 0xAD98, 0x5267, 0x9E11, 0x9D90, 0xAE32, 0x51CD, 0x9D90,
0x9D0F, 0xAECD, 0x5132, 0x9D0F, 0x9C90, 0xAF69, 0x5096, 0x9C90, 0x9C12, 0xB006, 0x4FF9, 0x9C12, 0x9B95, 0xB0A3, 0x4F5C, 0x9B95,
0x9B19, 0xB141, 0x4EBE, 0x9B19, 0x9A9E, 0xB1E0, 0x4E1F, 0x9A9E, 0x9A24, 0xB280, 0x4D7F, 0x9A24, 0x99AA, 0xB320, 0x4CDF, 0x99AA,
0x9932, 0xB3C1, 0x4C3E, 0x9932, 0x98BB, 0xB463, 0x4B9C, 0x98BB, 0x9844, 0xB506, 0x4AF9, 0x9844, 0x97CF, 0xB5A9, 0x4A56, 0x97CF,
0x975B, 0xB64D, 0x49B2, 0x975B, 0x96E8, 0xB6F2, 0x490D, 0x96E8, 0x9675, 0xB797, 0x4868, 0x9675, 0x9604, 0xB83D, 0x47C2, 0x9604,
0x9594, 0xB8E4, 0x471B, 0x9594, 0x9525, 0xB98C, 0x4673, 0x9525, 0x94B7, 0xBA34, 0x45CB, 0x94B7, 0x9449, 0xBADD, 0x4522, 0x9449,
0x93DD, 0xBB86, 0x4479, 0x93DD, 0x9372, 0xBC30, 0x43CF, 0x9372, 0x9308, 0xBCDB, 0x4324, 0x9308, 0x929F, 0xBD87, 0x4278, 0x929F,
0x9237, 0xBE33, 0x41CC, 0x9237, 0x91D1, 0xBEE0, 0x411F, 0x91D1, 0x916B, 0xBF8D, 0x4072, 0x916B, 0x9106, 0xC03B, 0x3FC4, 0x9106,
0x90A2, 0xC0E9, 0x3F16, 0x90A2, 0x9040, 0xC198, 0x3E67, 0x9040, 0x8FDE, 0xC248, 0x3DB7, 0x8FDE, 0x8F7E, 0xC2F9, 0x3D06, 0x8F7E,
0x8F1F, 0xC3AA, 0x3C55, 0x8F1F, 0x8EC0, 0xC45B, 0x3BA4, 0x8EC0, 0x8E63, 0xC50E, 0x3AF1, 0x8E63, 0x8E07, 0xC5C0, 0x3A3F, 0x8E07,
0x8DAC, 0xC674, 0x398B, 0x8DAC, 0x8D52, 0xC728, 0x38D7, 0x8D52, 0x8CFA, 0xC7DC, 0x3823, 0x8CFA, 0x8CA2, 0xC891, 0x376E, 0x8CA2,
0x8C4C, 0xC946, 0x36B9, 0x8C4C, 0x8BF6, 0xC9FC, 0x3603, 0x8BF6, 0x8BA2, 0xCAB3, 0x354C, 0x8BA2, 0x8B4F, 0xCB6A, 0x3495, 0x8B4F,
0x8AFD, 0xCC22, 0x33DD, 0x8AFD, 0x8AAC, 0xCCDA, 0x3325, 0x8AAC, 0x8A5C, 0xCD92, 0x326D, 0x8A5C, 0x8A0D, 0xCE4B, 0x31B4, 0x8A0D,
0x89C0, 0xCF05, 0x30FA, 0x89C0, 0x8973, 0xCFBF, 0x3040, 0x8973, 0x8928, 0xD079, 0x2F86, 0x8928, 0x88DE, 0xD134, 0x2ECB, 0x88DE,
0x8895, 0xD1EF, 0x2E10, 0x8895, 0x884D, 0xD2AB, 0x2D54, 0x884D, 0x8807, 0xD368, 0x2C97, 0x8807, 0x87C1, 0xD424, 0x2BDB, 0x87C1,
0x877D, 0xD4E1, 0x2B1E, 0x877D, 0x873A, 0xD59F, 0x2A60, 0x873A, 0x86F8, 0xD65D, 0x29A2, 0x86F8, 0x86B7, 0xD71B, 0x28E4, 0x86B7,
0x8677, 0xD7DA, 0x2825, 0x8677, 0x8639, 0xD899, 0x2766, 0x8639, 0x85FC, 0xD958, 0x26A7, 0x85FC, 0x85BF, 0xDA18, 0x25E7, 0x85BF,
0x8584, 0xDAD8, 0x2527, 0x8584, 0x854B, 0xDB99, 0x2466, 0x854B, 0x8512, 0xDC5A, 0x23A5, 0x8512, 0x84DB, 0xDD1B, 0x22E4, 0x84DB,
0x84A4, 0xDDDD, 0x2222, 0x84A4, 0x846F, 0xDE9F, 0x2160, 0x846F, 0x843C, 0xDF61, 0x209E, 0x843C, 0x8409, 0xE023, 0x1FDC, 0x8409,
0x83D8, 0xE0E6, 0x1F19, 0x83D8, 0x83A7, 0xE1A9, 0x1E56, 0x83A7, 0x8378, 0xE26D, 0x1D92, 0x8378, 0x834A, 0xE330, 0x1CCF, 0x834A,
0x831E, 0xE3F4, 0x1C0B, 0x831E, 0x82F2, 0xE4B9, 0x1B46, 0x82F2, 0x82C8, 0xE57D, 0x1A82, 0x82C8, 0x829F, 0xE642, 0x19BD, 0x829F,
0x8277, 0xE707, 0x18F8, 0x8277, 0x8251, 0xE7CD, 0x1832, 0x8251, 0x822B, 0xE892, 0x176D, 0x822B, 0x8207, 0xE958, 0x16A7, 0x8207,
0x81E4, 0xEA1E, 0x15E1, 0x81E4, 0x81C2, 0xEAE4, 0x151B, 0x81C2, 0x81A2, 0xEBAB, 0x1454, 0x81A2, 0x8182, 0xEC71, 0x138E, 0x8182,
0x8164, 0xED38, 0x12C7, 0x8164, 0x8147, 0xEDFF, 0x1200, 0x8147, 0x812C, 0xEEC6, 0x1139, 0x812C, 0x8111, 0xEF8D, 0x1072, 0x8111,
0x80F8, 0xF055, 0x0FAA, 0x80F8, 0x80E0, 0xF11C, 0x0EE3, 0x80E0, 0x80C9, 0xF1E4, 0x0E1B, 0x80C9, 0x80B4, 0xF2AC, 0x0D53, 0x80B4,
0x809F, 0xF374, 0x0C8B, 0x809F, 0x808C, 0xF43C, 0x0BC3, 0x808C, 0x807A, 0xF505, 0x0AFA, 0x807A, 0x806A, 0xF5CD, 0x0A32, 0x806A,
0x805A, 0xF695, 0x096A, 0x805A, 0x804C, 0xF75E, 0x08A1, 0x804C, 0x803F, 0xF827, 0x07D8, 0x803F, 0x8033, 0xF8EF, 0x0710, 0x8033,
0x8029, 0xF9B8, 0x0647, 0x8029, 0x8020, 0xFA81, 0x057E, 0x8020, 0x8018, 0xFB4A, 0x04B5, 0x8018, 0x8011, 0xFC13, 0x03EC, 0x8011,
0x800B, 0xFCDC, 0x0323, 0x800B, 0x8007, 0xFDA5, 0x025A, 0x8007, 0x8004, 0xFE6E, 0x0191, 0x8004, 0x8002, 0xFF37, 0x00C8, 0x8002,
0x8002, 0x0000, 0x0000, 0x8002, 0x8002, 0x00C8, 0xFF37, 0x8002, 0x8004, 0x0191, 0xFE6E, 0x8004, 0x8007, 0x025A, 0xFDA5, 0x8007,
0x800B, 0x0323, 0xFCDC, 0x800B, 0x8011, 0x03EC, 0xFC13, 0x8011, 0x8018, 0x04B5, 0xFB4A, 0x8018, 0x8020, 0x057E, 0xFA81, 0x8020,
0x8029, 0x0647, 0xF9B8, 0x8029, 0x8033, 0x0710, 0xF8EF, 0x8033, 0x803F, 0x07D8, 0xF827, 0x803F, 0x804C, 0x08A1, 0xF75E, 0x804C,
0x805A, 0x096A, 0xF695, 0x805A, 0x806A, 0x0A32, 0xF5CD, 0x806A, 0x807A, 0x0AFA, 0xF505, 0x807A, 0x808C, 0x0BC3, 0xF43C, 0x808C,
0x809F, 0x0C8B, 0xF374, 0x809F, 0x80B4, 0x0D53, 0xF2AC, 0x80B4, 0x80C9, 0x0E1B, 0xF1E4, 0x80C9, 0x80E0, 0x0EE3, 0xF11C, 0x80E0,
0x80F8, 0x0FAA, 0xF055, 0x80F8, 0x8111, 0x1072, 0xEF8D, 0x8111, 0x812C, 0x1139, 0xEEC6, 0x812C, 0x8147, 0x1200, 0xEDFF, 0x8147,
0x8164, 0x12C7, 0xED38, 0x8164, 0x8182, 0x138E, 0xEC71, 0x8182, 0x81A2, 0x1454, 0xEBAB, 0x81A2, 0x81C2, 0x151B, 0xEAE4, 0x81C2,
0x81E4, 0x15E1, 0xEA1E, 0x81E4, 0x8207, 0x16A7, 0xE958, 0x8207, 0x822B, 0x176D, 0xE892, 0x822B, 0x8251, 0x1832, 0xE7CD, 0x8251,
0x8277, 0x18F8, 0xE707, 0x8277, 0x829F, 0x19BD, 0xE642, 0x829F, 0x82C8, 0x1A82, 0xE57D, 0x82C8, 0x82F2, 0x1B46, 0xE4B9, 0x82F2,
0x831E, 0x1C0B, 0xE3F4, 0x831E, 0x834A, 0x1CCF, 0xE330, 0x834A, 0x8378, 0x1D92, 0xE26D, 0x8378, 0x83A7, 0x1E56, 0xE1A9, 0x83A7,
0x83D8, 0x1F19, 0xE0E6, 0x83D8, 0x8409, 0x1FDC, 0xE023, 0x8409, 0x843C, 0x209E, 0xDF61, 0x843C, 0x846F, 0x2160, 0xDE9F, 0x846F,
0x84A4, 0x2222, 0xDDDD, 0x84A4, 0x84DB, 0x22E4, 0xDD1B, 0x84DB, 0x8512, 0x23A5, 0xDC5A, 0x8512, 0x854B, 0x2466, 0xDB99, 0x854B,
0x8584, 0x2527, 0xDAD8, 0x8584, 0x85BF, 0x25E7, 0xDA18, 0x85BF, 0x85FC, 0x26A7, 0xD958, 0x85FC, 0x8639, 0x2766, 0xD899, 0x8639,
0x8677, 0x2825, 0xD7DA, 0x8677, 0x86B7, 0x28E4, 0xD71B, 0x86B7, 0x86F8, 0x29A2, 0xD65D, 0x86F8, 0x873A, 0x2A60, 0xD59F, 0x873A,
0x877D, 0x2B1E, 0xD4E1, 0x877D, 0x87C1, 0x2BDB, 0xD424, 0x87C1, 0x8807, 0x2C97, 0xD368, 0x8807, 0x884D, 0x2D54, 0xD2AB, 0x884D,
0x8895, 0x2E10, 0xD1EF, 0x8895, 0x88DE, 0x2ECB, 0xD134, 0x88DE, 0x8928, 0x2F86, 0xD079, 0x8928, 0x8973, 0x3040, 0xCFBF, 0x8973,
0x89C0, 0x30FA, 0xCF05, 0x89C0, 0x8A0D, 0x31B4, 0xCE4B, 0x8A0D, 0x8A5C, 0x326D, 0xCD92, 0x8A5C, 0x8AAC, 0x3325, 0xCCDA, 0x8AAC,
0x8AFD, 0x33DD, 0xCC22, 0x8AFD, 0x8B4F, 0x3495, 0xCB6A, 0x8B4F, 0x8BA2, 0x354C, 0xCAB3, 0x8BA2, 0x8BF6, 0x3603, 0xC9FC, 0x8BF6,
0x8C4C, 0x36B9, 0xC946, 0x8C4C, 0x8CA2, 0x376E, 0xC891, 0x8CA2, 0x8CFA, 0x3823, 0xC7DC, 0x8CFA, 0x8D52, 0x38D7, 0xC728, 0x8D52,
0x8DAC, 0x398B, 0xC674, 0x8DAC, 0x8E07, 0x3A3F, 0xC5C0, 0x8E07, 0x8E63, 0x3AF1, 0xC50E, 0x8E63, 0x8EC0, 0x3BA4, 0xC45B, 0x8EC0,
0x8F1F, 0x3C55, 0xC3AA, 0x8F1F, 0x8F7E, 0x3D06, 0xC2F9, 0x8F7E, 0x8FDE, 0x3DB7, 0xC248, 0x8FDE, 0x9040, 0x3E67, 0xC198, 0x9040,
0x90A2, 0x3F16, 0xC0E9, 0x90A2, 0x9106, 0x3FC4, 0xC03B, 0x9106, 0x916B, 0x4072, 0xBF8D, 0x916B, 0x91D1, 0x411F, 0xBEE0, 0x91D1,
0x9237, 0x41CC, 0xBE33, 0x9237, 0x929F, 0x4278, 0xBD87, 0x929F, 0x9308, 0x4324, 0xBCDB, 0x9308, 0x9372, 0x43CF, 0xBC30, 0x9372,
0x93DD, 0x4479, 0xBB86, 0x93DD, 0x9449, 0x4522, 0xBADD, 0x9449, 0x94B7, 0x45CB, 0xBA34, 0x94B7, 0x9525, 0x4673, 0xB98C, 0x9525,
0x9594, 0x471B, 0xB8E4, 0x9594, 0x9604, 0x47C2, 0xB83D, 0x9604, 0x9675, 0x4868, 0xB797, 0x9675, 0x96E8, 0x490D, 0xB6F2, 0x96E8,
0x975B, 0x49B2, 0xB64D, 0x975B, 0x97CF, 0x4A56, 0xB5A9, 0x97CF, 0x9844, 0x4AF9, 0xB506, 0x9844, 0x98BB, 0x4B9C, 0xB463, 0x98BB,
0x9932, 0x4C3E, 0xB3C1, 0x9932, 0x99AA, 0x4CDF, 0xB320, 0x99AA, 0x9A24, 0x4D7F, 0xB280, 0x9A24, 0x9A9E, 0x4E1F, 0xB1E0, 0x9A9E,
0x9B19, 0x4EBE, 0xB141, 0x9B19, 0x9B95, 0x4F5C, 0xB0A3, 0x9B95, 0x9C12, 0x4FF9, 0xB006, 0x9C12, 0x9C90, 0x5096, 0xAF69, 0x9C90,
0x9D0F, 0x5132, 0xAECD, 0x9D0F, 0x9D90, 0x51CD, 0xAE32, 0x9D90, 0x9E10, 0x5267, 0xAD98, 0x9E10, 0x9E92, 0x5301, 0xACFE, 0x9E92,
0x9F15, 0x5399, 0xAC66, 0x9F15, 0x9F99, 0x5431, 0xABCE, 0x9F99, 0xA01D, 0x54C8, 0xAB37, 0xA01D, 0xA0A3, 0x555E, 0xAAA1, 0xA0A3,
0xA12A, 0x55F4, 0xAA0B, 0xA12A, 0xA1B1, 0x5688, 0xA977, 0xA1B1, 0xA239, 0x571C, 0xA8E3, 0xA239, 0xA2C3, 0x57AF, 0xA850, 0xA2C3,
0xA34D, 0x5841, 0xA7BE, 0xA34D, 0xA3D8, 0x58D2, 0xA72D, 0xA3D8, 0xA464, 0x5962, 0xA69D, 0xA464, 0xA4F1, 0x59F2, 0xA60D, 0xA4F1,
0xA57F, 0x5A80, 0xA57F, 0xA57F, 0xA60D, 0x5B0E, 0xA4F1, 0xA60D, 0xA69D, 0x5B9B, 0xA464, 0xA69D, 0xA72D, 0x5C27, 0xA3D8, 0xA72D,
0xA7BE, 0x5CB2, 0xA34D, 0xA7BE, 0xA850, 0x5D3C, 0xA2C3, 0xA850, 0xA8E3, 0x5DC6, 0xA239, 0xA8E3, 0xA977, 0x5E4E, 0xA1B1, 0xA977,
0xAA0B, 0x5ED5, 0xA12A, 0xAA0B, 0xAAA1, 0x5F5C, 0xA0A3, 0xAAA1, 0xAB37, 0x5FE2, 0xA01D, 0xAB37, 0xABCE, 0x6066, 0x9F99, 0xABCE,
0xAC66, 0x60EA, 0x9F15, 0xAC66, 0xACFE, 0x616D, 0x9E92, 0xACFE, 0xAD98, 0x61EF, 0x9E10, 0xAD98, 0xAE32, 0x626F, 0x9D90, 0xAE32,
0xAECD, 0x62F0, 0x9D0F, 0xAECD, 0xAF69, 0x636F, 0x9C90, 0xAF69, 0xB006, 0x63ED, 0x9C12, 0xB006, 0xB0A3, 0x646A, 0x9B95, 0xB0A3,
0xB141, 0x64E6, 0x9B19, 0xB141, 0xB1E0, 0x6561, 0x9A9E, 0xB1E0, 0xB280, 0x65DB, 0x9A24, 0xB280, 0xB320, 0x6655, 0x99AA, 0xB320,
0xB3C1, 0x66CD, 0x9932, 0xB3C1, 0xB463, 0x6744, 0x98BB, 0xB463, 0xB506, 0x67BB, 0x9844, 0xB506, 0xB5A9, 0x6830, 0x97CF, 0xB5A9,
0xB64D, 0x68A4, 0x975B, 0xB64D, 0xB6F2, 0x6917, 0x96E8, 0xB6F2, 0xB797, 0x698A, 0x9675, 0xB797, 0xB83D, 0x69FB, 0x9604, 0xB83D,
0xB8E4, 0x6A6B, 0x9594, 0xB8E4, 0xB98C, 0x6ADA, 0x9525, 0xB98C, 0xBA34, 0x6B48, 0x94B7, 0xBA34, 0xBADD, 0x6BB6, 0x9449, 0xBADD,
0xBB86, 0x6C22, 0x93DD, 0xBB86, 0xBC30, 0x6C8D, 0x9372, 0xBC30, 0xBCDB, 0x6CF7, 0x9308, 0xBCDB, 0xBD87, 0x6D60, 0x929F, 0xBD87,
0xBE33, 0x6DC8, 0x9237, 0xBE33, 0xBEE0, 0x6E2E, 0x91D1, 0xBEE0, 0xBF8D, 0x6E94, 0x916B, 0xBF8D, 0xC03B, 0x6EF9, 0x9106, 0xC03B,
0xC0E9, 0x6F5D, 0x90A2, 0xC0E9, 0xC198, 0x6FBF, 0x9040, 0xC198, 0xC248, 0x7021, 0x8FDE, 0xC248, 0xC2F9, 0x7081, 0x8F7E, 0xC2F9,
0xC3AA, 0x70E0, 0x8F1F, 0xC3AA, 0xC45B, 0x713F, 0x8EC0, 0xC45B, 0xC50E, 0x719C, 0x8E63, 0xC50E, 0xC5C0, 0x71F8, 0x8E07, 0xC5C0,
0xC674, 0x7253, 0x8DAC, 0xC674, 0xC727, 0x72AD, 0x8D52, 0xC727, 0xC7DC, 0x7305, 0x8CFA, 0xC7DC, 0xC891, 0x735D, 0x8CA2, 0xC891,
0xC946, 0x73B3, 0x8C4C, 0xC946, 0xC9FC, 0x7409, 0x8BF6, 0xC9FC, 0xCAB3, 0x745D, 0x8BA2, 0xCAB3, 0xCB6A, 0x74B0, 0x8B4F, 0xCB6A,
0xCC22, 0x7502, 0x8AFD, 0xCC22, 0xCCDA, 0x7553, 0x8AAC, 0xCCDA, 0xCD92, 0x75A3, 0x8A5C, 0xCD92, 0xCE4B, 0x75F2, 0x8A0D, 0xCE4B,
0xCF05, 0x763F, 0x89C0, 0xCF05, 0xCFBF, 0x768C, 0x8973, 0xCFBF, 0xD079, 0x76D7, 0x8928, 0xD079, 0xD134, 0x7721, 0x88DE, 0xD134,
0xD1EF, 0x776A, 0x8895, 0xD1EF, 0xD2AB, 0x77B2, 0x884D, 0xD2AB, 0xD368, 0x77F8, 0x8807, 0xD368, 0xD424, 0x783E, 0x87C1, 0xD424,
0xD4E1, 0x7882, 0x877D, 0xD4E1, 0xD59F, 0x78C5, 0x873A, 0xD59F, 0xD65D, 0x7907, 0x86F8, 0xD65D, 0xD71B, 0x7948, 0x86B7, 0xD71B,
0xD7DA, 0x7988, 0x8677, 0xD7DA, 0xD899, 0x79C6, 0x8639, 0xD899, 0xD958, 0x7A03, 0x85FC, 0xD958, 0xDA18, 0x7A40, 0x85BF, 0xDA18,
0xDAD8, 0x7A7B, 0x8584, 0xDAD8, 0xDB99, 0x7AB4, 0x854B, 0xDB99, 0xDC5A, 0x7AED, 0x8512, 0xDC5A, 0xDD1B, 0x7B24, 0x84DB, 0xDD1B,
0xDDDD, 0x7B5B, 0x84A4, 0xDDDD, 0xDE9F, 0x7B90, 0x846F, 0xDE9F, 0xDF61, 0x7BC3, 0x843C, 0xDF61, 0xE023, 0x7BF6, 0x8409, 0xE023,
0xE0E6, 0x7C27, 0x83D8, 0xE0E6, 0xE1A9, 0x7C58, 0x83A7, 0xE1A9, 0xE26D, 0x7C87, 0x8378, 0xE26D, 0xE330, 0x7CB5, 0x834A, 0xE330,
0xE3F4, 0x7CE1, 0x831E, 0xE3F4, 0xE4B9, 0x7D0D, 0x82F2, 0xE4B9, 0xE57D, 0x7D37, 0x82C8, 0xE57D, 0xE642, 0x7D60, 0x829F, 0xE642,
0xE707, 0x7D88, 0x8277, 0xE707, 0xE7CD, 0x7DAE, 0x8251, 0xE7CD, 0xE892, 0x7DD4, 0x822B, 0xE892, 0xE958, 0x7DF8, 0x8207, 0xE958,
0xEA1E, 0x7E1B, 0x81E4, 0xEA1E, 0xEAE4, 0x7E3D, 0x81C2, 0xEAE4, 0xEBAB, 0x7E5D, 0x81A2, 0xEBAB, 0xEC71, 0x7E7D, 0x8182, 0xEC71,
0xED38, 0x7E9B, 0x8164, 0xED38, 0xEDFF, 0x7EB8, 0x8147, 0xEDFF, 0xEEC6, 0x7ED3, 0x812C, 0xEEC6, 0xEF8D, 0x7EEE, 0x8111, 0xEF8D,
0xF055, 0x7F07, 0x80F8, 0xF055, 0xF11C, 0x7F1F, 0x80E0, 0xF11C, 0xF1E4, 0x7F36, 0x80C9, 0xF1E4, 0xF2AC, 0x7F4B, 0x80B4, 0xF2AC,
0xF374, 0x7F60, 0x809F, 0xF374, 0xF43C, 0x7F73, 0x808C, 0xF43C, 0xF505, 0x7F85, 0x807A, 0xF505, 0xF5CD, 0x7F95, 0x806A, 0xF5CD,
0xF695, 0x7FA5, 0x805A, 0xF695, 0xF75E, 0x7FB3, 0x804C, 0xF75E, 0xF827, 0x7FC0, 0x803F, 0xF827, 0xF8EF, 0x7FCC, 0x8033, 0xF8EF,
0xF9B8, 0x7FD6, 0x8029, 0xF9B8, 0xFA81, 0x7FDF, 0x8020, 0xFA81, 0xFB4A, 0x7FE7, 0x8018, 0xFB4A, 0xFC13, 0x7FEE, 0x8011, 0xFC13,
0xFCDC, 0x7FF4, 0x800B, 0xFCDC, 0xFDA5, 0x7FF8, 0x8007, 0xFDA5, 0xFE6E, 0x7FFB, 0x8004, 0xFE6E, 0xFF37, 0x7FFD, 0x8002, 0xFF37,
0x0000, 0x7FFE, 0x8002, 0x0000, 0x00C8, 0x7FFD, 0x8002, 0x00C8, 0x0191, 0x7FFB, 0x8004, 0x0191, 0x025A, 0x7FF8, 0x8007, 0x025A,
0x0323, 0x7FF4, 0x800B, 0x0323, 0x03EC, 0x7FEE, 0x8011, 0x03EC, 0x04B5, 0x7FE7, 0x8018, 0x04B5, 0x057E, 0x7FDF, 0x8020, 0x057E,
0x0647, 0x7FD6, 0x8029, 0x0647, 0x0710, 0x7FCC, 0x8033, 0x0710, 0x07D8, 0x7FC0, 0x803F, 0x07D8, 0x08A1, 0x7FB3, 0x804C, 0x08A1,
0x096A, 0x7FA5, 0x805A, 0x096A, 0x0A32, 0x7F95, 0x806A, 0x0A32, 0x0AFA, 0x7F85, 0x807A, 0x0AFA, 0x0BC3, 0x7F73, 0x808C, 0x0BC3,
0x0C8B, 0x7F60, 0x809F, 0x0C8B, 0x0D53, 0x7F4B, 0x80B4, 0x0D53, 0x0E1B, 0x7F36, 0x80C9, 0x0E1B, 0x0EE3, 0x7F1F, 0x80E0, 0x0EE3,
0x0FAA, 0x7F07, 0x80F8, 0x0FAA, 0x1072, 0x7EEE, 0x8111, 0x1072, 0x1139, 0x7ED3, 0x812C, 0x1139, 0x1200, 0x7EB8, 0x8147, 0x1200,
0x12C7, 0x7E9B, 0x8164, 0x12C7, 0x138E, 0x7E7D, 0x8182, 0x138E, 0x1454, 0x7E5D, 0x81A2, 0x1454, 0x151B, 0x7E3D, 0x81C2, 0x151B,
0x15E1, 0x7E1B, 0x81E4, 0x15E1, 0x16A7, 0x7DF8, 0x8207, 0x16A7, 0x176D, 0x7DD4, 0x822B, 0x176D, 0x1832, 0x7DAE, 0x8251, 0x1832,
0x18F8, 0x7D88, 0x8277, 0x18F8, 0x19BD, 0x7D60, 0x829F, 0x19BD, 0x1A82, 0x7D37, 0x82C8, 0x1A82, 0x1B46, 0x7D0D, 0x82F2, 0x1B46,
0x1C0A, 0x7CE1, 0x831E, 0x1C0A, 0x1CCF, 0x7CB5, 0x834A, 0x1CCF, 0x1D92, 0x7C87, 0x8378, 0x1D92, 0x1E56, 0x7C58, 0x83A7, 0x1E56,
0x1F19, 0x7C27, 0x83D8, 0x1F19, 0x1FDC, 0x7BF6, 0x8409, 0x1FDC, 0x209E, 0x7BC3, 0x843C, 0x209E, 0x2160, 0x7B90, 0x846F, 0x2160,
0x2222, 0x7B5B, 0x84A4, 0x2222, 0x22E4, 0x7B24, 0x84DB, 0x22E4, 0x23A5, 0x7AED, 0x8512, 0x23A5, 0x2466, 0x7AB4, 0x854B, 0x2466,
0x2527, 0x7A7B, 0x8584, 0x2527, 0x25E7, 0x7A40, 0x85BF, 0x25E7, 0x26A7, 0x7A03, 0x85FC, 0x26A7, 0x2766, 0x79C6, 0x8639, 0x2766,
0x2825, 0x7988, 0x8677, 0x2825, 0x28E4, 0x7948, 0x86B7, 0x28E4, 0x29A2, 0x7907, 0x86F8, 0x29A2, 0x2A60, 0x78C5, 0x873A, 0x2A60,
0x2B1E, 0x7882, 0x877D, 0x2B1E, 0x2BDB, 0x783E, 0x87C1, 0x2BDB, 0x2C97, 0x77F8, 0x8807, 0x2C97, 0x2D54, 0x77B2, 0x884D, 0x2D54,
0x2E10, 0x776A, 0x8895, 0x2E10, 0x2ECB, 0x7721, 0x88DE, 0x2ECB, 0x2F86, 0x76D7, 0x8928, 0x2F86, 0x3040, 0x768C, 0x8973, 0x3040,
0x30FA, 0x763F, 0x89C0, 0x30FA, 0x31B4, 0x75F2, 0x8A0D, 0x31B4, 0x326D, 0x75A3, 0x8A5C, 0x326D, 0x3325, 0x7553, 0x8AAC, 0x3325,
0x33DD, 0x7502, 0x8AFD, 0x33DD, 0x3495, 0x74B0, 0x8B4F, 0x3495, 0x354C, 0x745D, 0x8BA2, 0x354C, 0x3603, 0x7409, 0x8BF6, 0x3603,
0x36B9, 0x73B3, 0x8C4C, 0x36B9, 0x376E, 0x735D, 0x8CA2, 0x376E, 0x3823, 0x7305, 0x8CFA, 0x3823, 0x38D7, 0x72AD, 0x8D52, 0x38D7,
0x398B, 0x7253, 0x8DAC, 0x398B, 0x3A3F, 0x71F8, 0x8E07, 0x3A3F, 0x3AF1, 0x719C, 0x8E63, 0x3AF1, 0x3BA4, 0x713F, 0x8EC0, 0x3BA4,
0x3C55, 0x70E0, 0x8F1F, 0x3C55, 0x3D06, 0x7081, 0x8F7E, 0x3D06, 0x3DB7, 0x7021, 0x8FDE, 0x3DB7, 0x3E67, 0x6FBF, 0x9040, 0x3E67,
0x3F16, 0x6F5D, 0x90A2, 0x3F16, 0x3FC4, 0x6EF9, 0x9106, 0x3FC4, 0x4072, 0x6E94, 0x916B, 0x4072, 0x411F, 0x6E2E, 0x91D1, 0x411F,
0x41CC, 0x6DC8, 0x9237, 0x41CC, 0x4278, 0x6D60, 0x929F, 0x4278, 0x4324, 0x6CF7, 0x9308, 0x4324, 0x43CF, 0x6C8D, 0x9372, 0x43CF,
0x4479, 0x6C22, 0x93DD, 0x4479, 0x4522, 0x6BB6, 0x9449, 0x4522, 0x45CB, 0x6B48, 0x94B7, 0x45CB, 0x4673, 0x6ADA, 0x9525, 0x4673,
0x471B, 0x6A6B, 0x9594, 0x471B, 0x47C2, 0x69FB, 0x9604, 0x47C2, 0x4868, 0x698A, 0x9675, 0x4868, 0x490D, 0x6917, 0x96E8, 0x490D,
0x49B2, 0x68A4, 0x975B, 0x49B2, 0x4A56, 0x6830, 0x97CF, 0x4A56, 0x4AF9, 0x67BB, 0x9844, 0x4AF9, 0x4B9C, 0x6744, 0x98BB, 0x4B9C,
0x4C3E, 0x66CD, 0x9932, 0x4C3E, 0x4CDF, 0x6655, 0x99AA, 0x4CDF, 0x4D7F, 0x65DB, 0x9A24, 0x4D7F, 0x4E1F, 0x6561, 0x9A9E, 0x4E1F,
0x4EBE, 0x64E6, 0x9B19, 0x4EBE, 0x4F5C, 0x646A, 0x9B95, 0x4F5C, 0x4FF9, 0x63ED, 0x9C12, 0x4FF9, 0x5096, 0x636F, 0x9C90, 0x5096,
0x5132, 0x62F0, 0x9D0F, 0x5132, 0x51CD, 0x626F, 0x9D90, 0x51CD, 0x5267, 0x61EF, 0x9E10, 0x5267, 0x5301, 0x616D, 0x9E92, 0x5301,
0x5399, 0x60EA, 0x9F15, 0x5399, 0x5431, 0x6066, 0x9F99, 0x5431, 0x54C8, 0x5FE2, 0xA01D, 0x54C8, 0x555E, 0x5F5C, 0xA0A3, 0x555E,
0x55F4, 0x5ED5, 0xA12A, 0x55F4, 0x5688, 0x5E4E, 0xA1B1, 0x5688, 0x571C, 0x5DC6, 0xA239, 0x571C, 0x57AF, 0x5D3C, 0xA2C3, 0x57AF,
0x5841, 0x5CB2, 0xA34D, 0x5841, 0x58D2, 0x5C27, 0xA3D8, 0x58D2, 0x5962, 0x5B9B, 0xA464, 0x5962, 0x59F2, 0x5B0E, 0xA4F1, 0x59F2,
0x5A80, 0x5A80, 0xA57F, 0x5A80, 0x5B0E, 0x59F2, 0xA60D, 0x5B0E, 0x5B9B, 0x5962, 0xA69D, 0x5B9B, 0x5C27, 0x58D2, 0xA72D, 0x5C27,
0x5CB2, 0x5841, 0xA7BE, 0x5CB2, 0x5D3C, 0x57AF, 0xA850, 0x5D3C, 0x5DC6, 0x571C, 0xA8E3, 0x5DC6, 0x5E4E, 0x5688, 0xA977, 0x5E4E,
0x5ED5, 0x55F4, 0xAA0B, 0x5ED5, 0x5F5C, 0x555E, 0xAAA1, 0x5F5C, 0x5FE2, 0x54C8, 0xAB37, 0x5FE2, 0x6066, 0x5431, 0xABCE, 0x6066,
0x60EA, 0x5399, 0xAC66, 0x60EA, 0x616D, 0x5301, 0xACFE, 0x616D, 0x61EE, 0x5267, 0xAD98, 0x61EE, 0x626F, 0x51CD, 0xAE32, 0x626F,
0x62EF, 0x5132, 0xAECD, 0x62EF, 0x636F, 0x5096, 0xAF69, 0x636F, 0x63ED, 0x4FF9, 0xB006, 0x63ED, 0x646A, 0x4F5C, 0xB0A3, 0x646A,
0x64E6, 0x4EBE, 0xB141, 0x64E6, 0x6561, 0x4E1F, 0xB1E0, 0x6561, 0x65DB, 0x4D7F, 0xB280, 0x65DB, 0x6655, 0x4CDF, 0xB320, 0x6655,
0x66CD, 0x4C3E, 0xB3C1, 0x66CD, 0x6744, 0x4B9C, 0xB463, 0x6744, 0x67BB, 0x4AF9, 0xB506, 0x67BB, 0x6830, 0x4A56, 0xB5A9, 0x6830,
0x68A4, 0x49B2, 0xB64D, 0x68A4, 0x6917, 0x490D, 0xB6F2, 0x6917, 0x698A, 0x4868, 0xB797, 0x698A, 0x69FB, 0x47C2, 0xB83D, 0x69FB,
0x6A6B, 0x471B, 0xB8E4, 0x6A6B, 0x6ADA, 0x4673, 0xB98C, 0x6ADA, 0x6B48, 0x45CB, 0xBA34, 0x6B48, 0x6BB6, 0x4522, 0xBADD, 0x6BB6,
0x6C22, 0x4479, 0xBB86, 0x6C22, 0x6C8D, 0x43CF, 0xBC30, 0x6C8D, 0x6CF7, 0x4324, 0xBCDB, 0x6CF7, 0x6D60, 0x4278, 0xBD87, 0x6D60,
0x6DC8, 0x41CC, 0xBE33, 0x6DC8, 0x6E2E, 0x411F, 0xBEE0, 0x6E2E, 0x6E94, 0x4072, 0xBF8D, 0x6E94, 0x6EF9, 0x3FC4, 0xC03B, 0x6EF9,
0x6F5D, 0x3F16, 0xC0E9, 0x6F5D, 0x6FBF, 0x3E67, 0xC198, 0x6FBF, 0x7021, 0x3DB7, 0xC248, 0x7021, 0x7081, 0x3D06, 0xC2F9, 0x7081,
0x70E0, 0x3C55, 0xC3AA, 0x70E0, 0x713F, 0x3BA4, 0xC45B, 0x713F, 0x719C, 0x3AF1, 0xC50E, 0x719C, 0x71F8, 0x3A3F, 0xC5C0, 0x71F8,
0x7253, 0x398B, 0xC674, 0x7253, 0x72AD, 0x38D8, 0xC727, 0x72AD, 0x7305, 0x3823, 0xC7DC, 0x7305, 0x735D, 0x376E, 0xC891, 0x735D,
0x73B3, 0x36B9, 0xC946, 0x73B3, 0x7409, 0x3603, 0xC9FC, 0x7409, 0x745D, 0x354C, 0xCAB3, 0x745D, 0x74B0, 0x3495, 0xCB6A, 0x74B0,
0x7502, 0x33DD, 0xCC22, 0x7502, 0x7553, 0x3325, 0xCCDA, 0x7553, 0x75A3, 0x326D, 0xCD92, 0x75A3, 0x75F2, 0x31B4, 0xCE4B, 0x75F2,
0x763F, 0x30FA, 0xCF05, 0x763F, 0x768C, 0x3040, 0xCFBF, 0x768C, 0x76D7, 0x2F86, 0xD079, 0x76D7, 0x7721, 0x2ECB, 0xD134, 0x7721,
0x776A, 0x2E10, 0xD1EF, 0x776A, 0x77B2, 0x2D54, 0xD2AB, 0x77B2, 0x77F8, 0x2C97, 0xD368, 0x77F8, 0x783E, 0x2BDB, 0xD424, 0x783E,
0x7882, 0x2B1E, 0xD4E1, 0x7882, 0x78C5, 0x2A60, 0xD59F, 0x78C5, 0x7907, 0x29A2, 0xD65D, 0x7907, 0x7948, 0x28E4, 0xD71B, 0x7948,
0x7988, 0x2825, 0xD7DA, 0x7988, 0x79C6, 0x2766, 0xD899, 0x79C6, 0x7A03, 0x26A7, 0xD958, 0x7A03, 0x7A40, 0x25E7, 0xDA18, 0x7A40,
0x7A7B, 0x2527, 0xDAD8, 0x7A7B, 0x7AB4, 0x2466, 0xDB99, 0x7AB4, 0x7AED, 0x23A5, 0xDC5A, 0x7AED, 0x7B24, 0x22E4, 0xDD1B, 0x7B24,
0x7B5B, 0x2222, 0xDDDD, 0x7B5B, 0x7B90, 0x2160, 0xDE9F, 0x7B90, 0x7BC3, 0x209E, 0xDF61, 0x7BC3, 0x7BF6, 0x1FDC, 0xE023, 0x7BF6,
0x7C27, 0x1F19, 0xE0E6, 0x7C27, 0x7C58, 0x1E56, 0xE1A9, 0x7C58, 0x7C87, 0x1D92, 0xE26D, 0x7C87, 0x7CB5, 0x1CCF, 0xE330, 0x7CB5,
0x7CE1, 0x1C0B, 0xE3F4, 0x7CE1, 0x7D0D, 0x1B46, 0xE4B9, 0x7D0D, 0x7D37, 0x1A82, 0xE57D, 0x7D37, 0x7D60, 0x19BD, 0xE642, 0x7D60,
0x7D88, 0x18F8, 0xE707, 0x7D88, 0x7DAE, 0x1832, 0xE7CD, 0x7DAE, 0x7DD4, 0x176D, 0xE892, 0x7DD4, 0x7DF8, 0x16A7, 0xE958, 0x7DF8,
0x7E1B, 0x15E1, 0xEA1E, 0x7E1B, 0x7E3D, 0x151B, 0xEAE4, 0x7E3D, 0x7E5D, 0x1454, 0xEBAB, 0x7E5D, 0x7E7D, 0x138E, 0xEC71, 0x7E7D,
0x7E9B, 0x12C7, 0xED38, 0x7E9B, 0x7EB8, 0x1200, 0xEDFF, 0x7EB8, 0x7ED3, 0x1139, 0xEEC6, 0x7ED3, 0x7EEE, 0x1072, 0xEF8D, 0x7EEE,
0x7F07, 0x0FAA, 0xF055, 0x7F07, 0x7F1F, 0x0EE3, 0xF11C, 0x7F1F, 0x7F36, 0x0E1B, 0xF1E4, 0x7F36, 0x7F4B, 0x0D53, 0xF2AC, 0x7F4B,
0x7F60, 0x0C8B, 0xF374, 0x7F60, 0x7F73, 0x0BC3, 0xF43C, 0x7F73, 0x7F85, 0x0AFA, 0xF505, 0x7F85, 0x7F95, 0x0A32, 0xF5CD, 0x7F95,
0x7FA5, 0x096A, 0xF695, 0x7FA5, 0x7FB3, 0x08A1, 0xF75E, 0x7FB3, 0x7FC0, 0x07D8, 0xF827, 0x7FC0, 0x7FCC, 0x0710, 0xF8EF, 0x7FCC,
0x7FD6, 0x0647, 0xF9B8, 0x7FD6, 0x7FDF, 0x057E, 0xFA81, 0x7FDF, 0x7FE7, 0x04B5, 0xFB4A, 0x7FE7, 0x7FEE, 0x03EC, 0xFC13, 0x7FEE,
0x7FF4, 0x0323, 0xFCDC, 0x7FF4, 0x7FF8, 0x025A, 0xFDA5, 0x7FF8, 0x7FFB, 0x0191, 0xFE6E, 0x7FFB, 0x7FFD, 0x00C8, 0xFF37, 0x7FFD
};
void GetCamRot2Raw(uint16_t ang, int16_t result[4])
{
for (auto i = 0; i < 4; i++)
{
result[i] = camrots2[ang*4 + i];
}
}
static uint16_t randomtable[55];
static int16_t j_index;
static int16_t k_index;
void SeedRnd(uint16_t seed)
{
/*
seedrnd; seed number in d0.w
;
moveq #54, d1
lea rndtable(pc), a0
;
.loop move d0, (a0)+
mulu #$1efd, d0
add #$dff, d0
dbf d1, .loop
;
move.l a0, k_index
move.l #rndtable + 48, j_index
rts
*/
for (int i = 0; i < 55; i++)
{
randomtable[i] = seed;
seed *= 0x1efd;
seed += 0xdff;
}
k_index = 55;
j_index = 24;
}
uint16_t RndW()
{
/*
rndw; return rnd number 0...65535 in d0.w
;
movem.l a0 / a1, -(a7)
lea rndtable(pc), a1
move.l j_index(pc), a0
move -(a0), d0
cmp.l a0, a1
bne.s.skip
lea rndtable + 110(pc), a0
.skip move.l a0, j_index
move.l k_index(pc), a0
add -(a0), d0
move d0, (a0)
cmp.l a0, a1
bne.s.skip2
lea rndtable + 110(pc), a0
.skip2 move.l a0, k_index
movem.l(a7) + , a0 / a1
rts
*/
uint16_t r = randomtable[--j_index];
if (j_index == 0) j_index = 55;
r += randomtable[--k_index];
randomtable[k_index] = r;
if (k_index == 0) k_index = 55;
return r;
}
uint16_t RndN(int16_t mult)
{
uint32_t result = mult * RndW();
return (uint16_t)(result >> 16);
}
static const uint16_t arctable[] =
{
0x0000, 0x0014, 0x0028, 0x003D, 0x0051, 0x0065, 0x007A, 0x008E, 0x00A2, 0x00B7, 0x00CB, 0x00E0, 0x00F4, 0x0108, 0x011D, 0x0131,
0x0145, 0x015A, 0x016E, 0x0182, 0x0197, 0x01AB, 0x01BF, 0x01D4, 0x01E8, 0x01FC, 0x0211, 0x0225, 0x0239, 0x024E, 0x0262, 0x0276,
0x028A, 0x029F, 0x02B3, 0x02C7, 0x02DC, 0x02F0, 0x0304, 0x0318, 0x032D, 0x0341, 0x0355, 0x0369, 0x037E, 0x0392, 0x03A6, 0x03BA,
0x03CE, 0x03E3, 0x03F7, 0x040B, 0x041F, 0x0433, 0x0447, 0x045C, 0x0470, 0x0484, 0x0498, 0x04AC, 0x04C0, 0x04D4, 0x04E8, 0x04FC,
0x0510, 0x0524, 0x0539, 0x054D, 0x0561, 0x0575, 0x0589, 0x059D, 0x05B1, 0x05C5, 0x05D8, 0x05EC, 0x0600, 0x0614, 0x0628, 0x063C,
0x0650, 0x0664, 0x0678, 0x068C, 0x069F, 0x06B3, 0x06C7, 0x06DB, 0x06EF, 0x0702, 0x0716, 0x072A, 0x073E, 0x0751, 0x0765, 0x0779,
0x078D, 0x07A0, 0x07B4, 0x07C7, 0x07DB, 0x07EF, 0x0802, 0x0816, 0x0829, 0x083D, 0x0851, 0x0864, 0x0878, 0x088B, 0x089F, 0x08B2,
0x08C5, 0x08D9, 0x08EC, 0x0900, 0x0913, 0x0926, 0x093A, 0x094D, 0x0960, 0x0974, 0x0987, 0x099A, 0x09AE, 0x09C1, 0x09D4, 0x09E7,
0x09FA, 0x0A0E, 0x0A21, 0x0A34, 0x0A47, 0x0A5A, 0x0A6D, 0x0A80, 0x0A93, 0x0AA6, 0x0AB9, 0x0ACC, 0x0ADF, 0x0AF2, 0x0B05, 0x0B18,
0x0B2B, 0x0B3E, 0x0B51, 0x0B63, 0x0B76, 0x0B89, 0x0B9C, 0x0BAE, 0x0BC1, 0x0BD4, 0x0BE7, 0x0BF9, 0x0C0C, 0x0C1F, 0x0C31, 0x0C44,
0x0C56, 0x0C69, 0x0C7B, 0x0C8E, 0x0CA0, 0x0CB3, 0x0CC5, 0x0CD8, 0x0CEA, 0x0CFC, 0x0D0F, 0x0D21, 0x0D33, 0x0D46, 0x0D58, 0x0D6A,
0x0D7D, 0x0D8F, 0x0DA1, 0x0DB3, 0x0DC5, 0x0DD7, 0x0DE9, 0x0DFC, 0x0E0E, 0x0E20, 0x0E32, 0x0E44, 0x0E56, 0x0E67, 0x0E79, 0x0E8B,
0x0E9D, 0x0EAF, 0x0EC1, 0x0ED3, 0x0EE4, 0x0EF6, 0x0F08, 0x0F1A, 0x0F2B, 0x0F3D, 0x0F4F, 0x0F60, 0x0F72, 0x0F83, 0x0F95, 0x0FA6,
0x0FB8, 0x0FC9, 0x0FDB, 0x0FEC, 0x0FFE, 0x100F, 0x1020, 0x1032, 0x1043, 0x1054, 0x1066, 0x1077, 0x1088, 0x1099, 0x10AA, 0x10BB,
0x10CD, 0x10DE, 0x10EF, 0x1100, 0x1111, 0x1122, 0x1133, 0x1144, 0x1155, 0x1165, 0x1176, 0x1187, 0x1198, 0x11A9, 0x11BA, 0x11CA,
0x11DB, 0x11EC, 0x11FC, 0x120D, 0x121E, 0x122E, 0x123F, 0x124F, 0x1260, 0x1270, 0x1281, 0x1291, 0x12A2, 0x12B2, 0x12C2, 0x12D3,
0x12E3, 0x12F3, 0x1303, 0x1314, 0x1324, 0x1334, 0x1344, 0x1354, 0x1364, 0x1375, 0x1385, 0x1395, 0x13A5, 0x13B5, 0x13C5, 0x13D4,
0x13E4, 0x13F4, 0x1404, 0x1414, 0x1424, 0x1433, 0x1443, 0x1453, 0x1463, 0x1472, 0x1482, 0x1492, 0x14A1, 0x14B1, 0x14C0, 0x14D0,
0x14DF, 0x14EF, 0x14FE, 0x150E, 0x151D, 0x152C, 0x153C, 0x154B, 0x155A, 0x1569, 0x1579, 0x1588, 0x1597, 0x15A6, 0x15B5, 0x15C4,
0x15D4, 0x15E3, 0x15F2, 0x1601, 0x1610, 0x161F, 0x162D, 0x163C, 0x164B, 0x165A, 0x1669, 0x1678, 0x1686, 0x1695, 0x16A4, 0x16B3,
0x16C1, 0x16D0, 0x16DE, 0x16ED, 0x16FC, 0x170A, 0x1719, 0x1727, 0x1736, 0x1744, 0x1752, 0x1761, 0x176F, 0x177D, 0x178C, 0x179A,
0x17A8, 0x17B6, 0x17C5, 0x17D3, 0x17E1, 0x17EF, 0x17FD, 0x180B, 0x1819, 0x1827, 0x1835, 0x1843, 0x1851, 0x185F, 0x186D, 0x187B,
0x1889, 0x1897, 0x18A4, 0x18B2, 0x18C0, 0x18CE, 0x18DB, 0x18E9, 0x18F7, 0x1904, 0x1912, 0x191F, 0x192D, 0x193B, 0x1948, 0x1955,
0x1963, 0x1970, 0x197E, 0x198B, 0x1998, 0x19A6, 0x19B3, 0x19C0, 0x19CE, 0x19DB, 0x19E8, 0x19F5, 0x1A02, 0x1A0F, 0x1A1D, 0x1A2A,
0x1A37, 0x1A44, 0x1A51, 0x1A5E, 0x1A6B, 0x1A78, 0x1A84, 0x1A91, 0x1A9E, 0x1AAB, 0x1AB8, 0x1AC5, 0x1AD1, 0x1ADE, 0x1AEB, 0x1AF7,
0x1B04, 0x1B11, 0x1B1D, 0x1B2A, 0x1B37, 0x1B43, 0x1B50, 0x1B5C, 0x1B69, 0x1B75, 0x1B81, 0x1B8E, 0x1B9A, 0x1BA7, 0x1BB3, 0x1BBF,
0x1BCB, 0x1BD8, 0x1BE4, 0x1BF0, 0x1BFC, 0x1C09, 0x1C15, 0x1C21, 0x1C2D, 0x1C39, 0x1C45, 0x1C51, 0x1C5D, 0x1C69, 0x1C75, 0x1C81,
0x1C8D, 0x1C99, 0x1CA5, 0x1CB0, 0x1CBC, 0x1CC8, 0x1CD4, 0x1CE0, 0x1CEB, 0x1CF7, 0x1D03, 0x1D0E, 0x1D1A, 0x1D26, 0x1D31, 0x1D3D,
0x1D48, 0x1D54, 0x1D5F, 0x1D6B, 0x1D76, 0x1D82, 0x1D8D, 0x1D98, 0x1DA4, 0x1DAF, 0x1DBB, 0x1DC6, 0x1DD1, 0x1DDC, 0x1DE8, 0x1DF3,
0x1DFE, 0x1E09, 0x1E14, 0x1E1F, 0x1E2B, 0x1E36, 0x1E41, 0x1E4C, 0x1E57, 0x1E62, 0x1E6D, 0x1E78, 0x1E83, 0x1E8E, 0x1E98, 0x1EA3,
0x1EAE, 0x1EB9, 0x1EC4, 0x1ECF, 0x1ED9, 0x1EE4, 0x1EEF, 0x1EFA, 0x1F04, 0x1F0F, 0x1F1A, 0x1F24, 0x1F2F, 0x1F39, 0x1F44, 0x1F4E,
0x1F59, 0x1F63, 0x1F6E, 0x1F78, 0x1F83, 0x1F8D, 0x1F98, 0x1FA2, 0x1FAC, 0x1FB7, 0x1FC1, 0x1FCB, 0x1FD6, 0x1FE0, 0x1FEA, 0x1FF4
};
uint8_t CalcAngle(int32_t x1, int32_t z1, int32_t x2, int32_t z2)
{
const unsigned int octtable[8] = { 0, 0x4000FFFF, 0x0000FFFF, 0xc0000000, 0x8000FFFF, 0x40000000, 0x80000000, 0xc000FFFF };
///OCTTABLE INDEXED BY LONGS, IN BYTES IN THE ASSEMBLY BELOW, HENCE DIV BY 4
/*
calcangle_; d0.w = x d1.w = y(dest - src)!
;
moveq #0, d2
tst d1
bpl.s.hpos
moveq #16, d2
neg d1
.hpos tst d0
bpl.s.wpos
eor #8, d2
neg d0
*/
uint32_t oct = 0;
x1 -= x2;
z1 -= z2;
if (z1 < 0)
{
oct = 4;
z1 = -z1;
}
if (x1 < 0)
{
oct ^= 2;
x1 = -x1;
}
/*
.wpos cmp d1, d0
bmi.s.notsteep
bne.s.neq
move #$2000, d1
bra.s.flow
.neq eor #4, d2
exg d1, d0
.notsteep tst d1
bne.s.noflow
moveq #0, d1
bra.s.flow
.noflow ext.l d0
swap d0
divu d1, d0
lsr #6, d0
and #1022, d0
move.arc(pc, d0), d1
.flow move.l.oct(pc, d2), d0
eor d0, d1
swap d0
add d1, d0
lsr #8, d0
rts
;
*/
if ((x1 - z1) < 0)
{
goto notsteep;
}
if (z1 == x1)
{
z1 = 0x2000;
goto flow;
}
oct ^= 1;
std::swap(x1, z1);
notsteep:
if (z1 != 0) goto noflow;
z1 = 0;// isn't this superfluous? "if z1 = 0, set z1 to zero?"
goto flow;
noflow:
x1 = (x1 << 16) | ((x1 >> 16)&0xFFFF);
x1 = x1 / z1;
x1 >>= 6;
x1 &= 1022;
z1 = arctable[x1 / 2];
flow:
x1 = octtable[oct];
z1 ^= x1;
x1 >>= 16;
x1 += z1;
x1 >>= 8;
return x1 & 0xFF;
}
static const int16_t sqrtable[] = {
0x0000, 0x0001, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0005, 0x0005, 0x0005,
0x0005, 0x0005, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
0x0009, 0x0009, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000B, 0x000B, 0x000B,
0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D, 0x000D,
0x000D, 0x000D, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E,
0x000E, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F,
0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
0x0010, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013,
0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0015, 0x0015, 0x0015,
0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
0x0015, 0x0015, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,
0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,
0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,
0x0019, 0x0019, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A,
0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001A, 0x001B, 0x001B, 0x001B,
0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,
0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,
0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,
0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D,
0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D,
0x001D, 0x001D, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,
0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,
0x001E, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F,
0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F, 0x001F,
0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
0x0020, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
0x0021, 0x0021, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0025, 0x0025, 0x0025,
0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
0x0025, 0x0025, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
0x0029, 0x0029, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,
0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,
0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002B, 0x002B, 0x002B,
0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,
0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,
0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,
0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,
0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,
0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,
0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,
0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,
0x002D, 0x002D, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
0x002E, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F,
0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F,
0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F, 0x002F,
0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
0x0030, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0035, 0x0035, 0x0035,
0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
0x0035, 0x0035, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A,
0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A,
0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A,
0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003B, 0x003B, 0x003B,
0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,
0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,
0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,
0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C,
0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C,
0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C,
0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C,
0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D,
0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D,
0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D,
0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D,
0x003D, 0x003D, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E,
0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E,
0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E,
0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E, 0x003E,
0x003E, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F,
0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F,
0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F,
0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F,
0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
0x0040, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
0x0041, 0x0041, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
0x0049, 0x0049, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A,
0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A,
0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A,
0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A,
0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004B, 0x004B, 0x004B,
0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B,
0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B,
0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B,
0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B,
0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004B, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D,
0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D,
0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D,
0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D,
0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D, 0x004D,
0x004D, 0x004D, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E,
0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E,
0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E,
0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E,
0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E,
0x004E, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
0x0051, 0x0051, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,
0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,
0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,
0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,
0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,
0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
0x0055, 0x0055, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,