1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #include "VehiclePaint.h"
11 
12 #include "../Game.h"
13 #include "../drawing/Drawing.h"
14 #include "../drawing/LightFX.h"
15 #include "../interface/Viewport.h"
16 #include "../paint/Paint.h"
17 #include "../paint/sprite/Paint.Sprite.h"
18 #include "../ride/RideData.h"
19 #include "../ride/Vehicle.h"
20 #include "../world/Entity.h"
21 #include "Track.h"
22 
23 #include <iterator>
24 
25 // 0x0098E52C:
26 const vehicle_boundbox VehicleBoundboxes[16][224] = {
27     {
28         // 0x0099123C:
29         { -5, -2, -22, 10, 4, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
30         { -2, -5, -22, 4, 10, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
31         { -5, -2, -22, 10, 4, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
32         { -2, -5, -22, 4, 10, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
33         { -5, -2, -22, 10, 4, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
34         { -2, -5, -22, 4, 10, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
35         { -5, -2, -22, 10, 4, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
36         { -2, -5, -22, 4, 10, 14 },   { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },    { -3, -3, -22, 6, 6, 14 },
37         { -10, -6, -22, 16, 12, 14 }, { -8, -8, -22, 16, 16, 14 },  { -6, -11, -27, 3, 16, 19 },  { -8, -8, -22, 16, 16, 14 },
38         { -11, -6, -27, 16, 5, 19 },  { -8, -8, -22, 16, 16, 14 },  { -6, -10, -22, 12, 16, 14 }, { -8, -8, -22, 16, 16, 14 },
39         { -10, -6, -22, 16, 12, 14 }, { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },
40         { -3, -10, -33, 3, 16, 27 },  { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },
41         { -13, -6, -33, 16, 5, 24 },  { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },
42         { -6, -10, -22, 12, 16, 14 }, { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },  { -6, -6, -22, 12, 12, 14 },
43         { -10, -6, -33, 20, 12, 24 }, { -2, -3, -33, 3, 10, 29 },   { -13, -6, -33, 20, 5, 24 },  { -6, -10, -22, 12, 20, 14 },
44         { -10, -6, -43, 5, 12, 34 },  { -10, -6, -43, 5, 12, 34 },  { -10, -6, -43, 5, 12, 34 },  { -10, -6, -43, 5, 12, 34 },
45         { -2, 4, -33, 3, 10, 29 },    { -2, 4, -33, 3, 10, 29 },    { -2, 4, -33, 3, 10, 29 },    { -2, 4, -33, 3, 10, 29 },
46         { -13, -6, -33, 20, 5, 24 },  { -13, -6, -33, 20, 5, 24 },  { -13, -6, -33, 20, 5, 24 },  { -13, -6, -33, 20, 5, 24 },
47         { -6, -15, -22, 12, 10, 14 }, { -6, -15, -22, 12, 10, 14 }, { -6, -15, -22, 12, 10, 14 }, { -6, -15, -22, 12, 10, 14 },
48         { -10, -6, -33, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -33, 10, 5, 24 },   { -6, -15, -10, 12, 10, 14 },
49         { -10, -6, -22, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -22, 10, 5, 14 },   { -6, -15, -10, 12, 10, 14 },
50         { -10, -6, -38, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -28, 10, 12, 7 },    { -6, -15, -5, 12, 10, 7 },
51         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },      { -6, -10, 5, 12, 10, 7 },
52         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
53         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
54         { -8, -8, -22, 16, 16, 14 },  { -8, -8, -22, 16, 16, 14 },  { -8, -8, -22, 16, 16, 14 },  { -8, -8, -22, 16, 16, 14 },
55         { -8, -8, -22, 16, 16, 14 },  { -8, -8, -22, 16, 16, 14 },  { -8, -8, -22, 16, 16, 14 },  { -8, -8, -22, 16, 16, 14 },
56         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },    { -6, -8, 11, 12, 16, 4 },
57         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -22, 12, 16, 14 },  { -8, -8, -22, 16, 16, 14 },  { -8, -6, -22, 16, 12, 14 },
58         { -8, -6, -22, 16, 12, 14 },  { -8, -6, -22, 16, 12, 14 },  { -8, -8, -22, 16, 16, 14 },  { -6, -8, -22, 12, 16, 14 },
59         { -6, -8, -22, 12, 16, 14 },  { -6, -8, -22, 12, 16, 14 },  { -8, -8, -22, 16, 16, 14 },  { -8, -6, -22, 16, 12, 14 },
60         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
61         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
62         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
63         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
64         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
65         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
66         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 },
67         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 },
68         { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
69         { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
70         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
71         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
72         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
73         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
74         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
75         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
76         { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
77         { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
78         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 },
79         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 },
80         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 },
81         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
82         { -10, -6, -22, 20, 12, 14 }, { -6, -10, -22, 12, 20, 14 }, { -10, -6, -22, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
83         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
84         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -22, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
85     },
86     {
87         // 0x0099027C:
88         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
89         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
90         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
91         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
92         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
93         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
94         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
95         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
96         { -10, -6, -28, 16, 12, 14 }, { -8, -8, -28, 16, 16, 14 },  { -6, -11, -33, 3, 16, 19 },  { -8, -8, -28, 16, 16, 14 },
97         { -11, -6, -33, 16, 5, 19 },  { -8, -8, -28, 16, 16, 14 },  { -6, -10, -28, 12, 16, 14 }, { -8, -8, -28, 16, 16, 14 },
98         { -10, -6, -28, 16, 12, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
99         { -3, -10, -39, 3, 16, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
100         { -10, -6, -39, 16, 3, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
101         { -6, -10, -28, 12, 16, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
102         { -10, -6, -28, 20, 12, 14 }, { -2, -3, -39, 3, 10, 29 },   { -3, -2, -39, 10, 3, 29 },   { -6, -10, -28, 12, 20, 14 },
103         { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },
104         { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },
105         { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },
106         { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 },
107         { -10, -6, -39, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -39, 10, 5, 24 },   { -6, -15, -10, 12, 10, 14 },
108         { -10, -6, -28, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -28, 10, 5, 14 },   { -6, -15, -10, 12, 10, 14 },
109         { -10, -6, -44, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -34, 10, 12, 7 },    { -6, -15, -5, 12, 10, 7 },
110         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },      { -6, -10, 5, 12, 10, 7 },
111         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
112         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
113         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
114         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
115         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },    { -6, -8, 11, 12, 16, 4 },
116         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
117         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
118         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
119         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
120         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
121         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
122         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
123         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
124         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
125         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
126         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
127         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
128         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
129         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
130         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
131         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
132         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
133         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
134         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
135         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
136         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
137         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
138         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
139         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
140         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
141         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
142         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
143         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
144     },
145     {
146         // 0x009907BC:
147         { -8, -6, -23, 16, 12, 14 },  { -8, -6, -23, 16, 12, 14 },  { -8, -8, -23, 16, 16, 14 },  { -6, -8, -23, 12, 16, 14 },
148         { -6, -8, -23, 12, 16, 14 },  { -6, -8, -23, 12, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -6, -23, 16, 12, 14 },
149         { -8, -6, -23, 16, 12, 14 },  { -8, -6, -23, 16, 12, 14 },  { -8, -8, -23, 16, 16, 14 },  { -6, -8, -23, 12, 16, 14 },
150         { -6, -8, -23, 12, 16, 14 },  { -6, -8, -23, 12, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -6, -23, 16, 12, 14 },
151         { -6, -6, -23, 12, 12, 14 },  { -9, -6, -23, 18, 12, 14 },  { -8, -8, -23, 16, 16, 14 },  { -6, -9, -23, 12, 18, 14 },
152         { -6, -6, -23, 12, 12, 14 },  { -6, -9, -23, 12, 18, 14 },  { -8, -8, -23, 16, 16, 14 },  { -9, -6, -23, 18, 12, 14 },
153         { -6, -6, -23, 12, 12, 14 },  { -9, -6, -23, 18, 12, 14 },  { -8, -8, -23, 16, 16, 14 },  { -6, -9, -23, 12, 18, 14 },
154         { -6, -6, -23, 12, 12, 14 },  { -6, -9, -23, 12, 18, 14 },  { -8, -8, -23, 16, 16, 14 },  { -9, -6, -23, 18, 12, 14 },
155         { -10, -6, -23, 16, 12, 14 }, { -8, -8, -23, 16, 16, 14 },  { -6, -11, -28, 3, 16, 19 },  { -8, -8, -23, 16, 16, 14 },
156         { -11, -6, -28, 16, 5, 19 },  { -8, -8, -23, 16, 16, 14 },  { -6, -10, -23, 12, 16, 14 }, { -8, -8, -23, 16, 16, 14 },
157         { -10, -6, -23, 16, 12, 14 }, { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },
158         { -3, -10, -34, 3, 16, 27 },  { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },
159         { -13, -6, -34, 16, 5, 24 },  { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },
160         { -6, -10, -23, 12, 16, 14 }, { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },  { -6, -6, -23, 12, 12, 14 },
161         { -10, -6, -34, 20, 12, 24 }, { -2, -3, -34, 3, 10, 29 },   { -13, -6, -34, 20, 5, 24 },  { -6, -10, -23, 12, 20, 14 },
162         { -10, -6, -44, 5, 12, 34 },  { -10, -6, -44, 5, 12, 34 },  { -10, -6, -44, 5, 12, 34 },  { -10, -6, -44, 5, 12, 34 },
163         { -2, 4, -34, 3, 10, 29 },    { -2, 4, -34, 3, 10, 29 },    { -2, 4, -34, 3, 10, 29 },    { -2, 4, -34, 3, 10, 29 },
164         { -13, -6, -34, 20, 5, 24 },  { -13, -6, -34, 20, 5, 24 },  { -13, -6, -34, 20, 5, 24 },  { -13, -6, -34, 20, 5, 24 },
165         { -6, -15, -23, 12, 10, 14 }, { -6, -15, -23, 12, 10, 14 }, { -6, -15, -23, 12, 10, 14 }, { -6, -15, -23, 12, 10, 14 },
166         { -10, -6, -34, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -34, 10, 5, 24 },   { -6, -15, -10, 12, 10, 14 },
167         { -10, -6, -23, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -23, 10, 5, 14 },   { -6, -15, -10, 12, 10, 14 },
168         { -10, -6, -39, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -29, 10, 12, 7 },    { -6, -15, -5, 12, 10, 7 },
169         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },      { -6, -10, 5, 12, 10, 7 },
170         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
171         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
172         { -8, -8, -23, 16, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -8, -23, 16, 16, 14 },
173         { -8, -8, -23, 16, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -8, -23, 16, 16, 14 },
174         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },    { -6, -8, 11, 12, 16, 4 },
175         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -23, 12, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -6, -23, 16, 12, 14 },
176         { -8, -6, -23, 16, 12, 14 },  { -8, -6, -23, 16, 12, 14 },  { -8, -8, -23, 16, 16, 14 },  { -6, -8, -23, 12, 16, 14 },
177         { -6, -8, -23, 12, 16, 14 },  { -6, -8, -23, 12, 16, 14 },  { -8, -8, -23, 16, 16, 14 },  { -8, -6, -23, 16, 12, 14 },
178         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
179         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
180         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
181         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
182         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
183         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
184         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 },
185         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 },
186         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
187         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
188         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
189         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
190         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
191         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
192         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
193         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
194         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
195         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
196         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 },
197         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 },
198         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
199         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
200         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
201         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
202         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -23, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
203     },
204     {
205         // 0x009921FC:
206         { -19, -6, -28, 38, 12, 14 }, { -11, -6, -28, 22, 12, 14 }, { -11, -11, -28, 22, 22, 14 }, { -6, -11, -28, 12, 22, 14 },
207         { -6, -19, -28, 12, 38, 14 }, { -6, -11, -28, 12, 22, 14 }, { -11, -11, -28, 22, 22, 14 }, { -11, -6, -28, 22, 12, 14 },
208         { -19, -6, -28, 38, 12, 14 }, { -11, -6, -28, 22, 12, 14 }, { -11, -11, -28, 22, 22, 14 }, { -6, -11, -28, 12, 22, 14 },
209         { -6, -19, -28, 12, 38, 14 }, { -6, -11, -28, 12, 22, 14 }, { -11, -11, -28, 22, 22, 14 }, { -11, -6, -28, 22, 12, 14 },
210         { -15, -6, -28, 18, 12, 14 }, { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },   { -6, -9, -28, 12, 18, 14 },
211         { -6, -6, -28, 12, 28, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },   { -9, -6, -28, 18, 12, 14 },
212         { -6, -6, -28, 28, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },   { -6, -9, -28, 12, 18, 14 },
213         { -6, -15, -28, 12, 18, 14 }, { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },   { -9, -6, -28, 18, 12, 14 },
214         { -10, -6, -28, 16, 12, 14 }, { -8, -8, -28, 16, 16, 14 },  { -6, -11, -33, 3, 16, 19 },   { -8, -8, -28, 16, 16, 14 },
215         { -11, -6, -33, 16, 5, 19 },  { -8, -8, -28, 16, 16, 14 },  { -6, -10, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
216         { -10, -6, -28, 16, 12, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
217         { -3, -10, -39, 3, 16, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
218         { -13, -6, -39, 16, 5, 24 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
219         { -6, -10, -28, 12, 16, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
220         { -10, -6, -39, 20, 12, 24 }, { -2, -3, -39, 3, 10, 29 },   { -13, -6, -39, 20, 5, 24 },   { -6, -10, -28, 12, 20, 14 },
221         { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },   { -10, -6, -49, 5, 12, 34 },
222         { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },     { -2, 4, -39, 3, 10, 29 },
223         { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },   { -13, -6, -39, 20, 5, 24 },
224         { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 },  { -6, -15, -28, 12, 10, 14 },
225         { -10, -6, -39, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -39, 10, 5, 24 },    { -6, -15, -10, 12, 10, 14 },
226         { -10, -6, -28, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -28, 10, 5, 14 },    { -6, -15, -10, 12, 10, 14 },
227         { -10, -6, -44, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -34, 10, 12, 7 },     { -6, -15, -5, 12, 10, 7 },
228         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },       { -6, -10, 5, 12, 10, 7 },
229         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },     { -6, -10, 5, 12, 20, 7 },
230         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },     { -6, -10, 5, 12, 20, 7 },
231         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -8, -28, 16, 16, 14 },
232         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -8, -28, 16, 16, 14 },
233         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },     { -6, -8, 11, 12, 16, 4 },
234         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -6, -28, 16, 12, 14 },
235         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },   { -6, -8, -28, 12, 16, 14 },
236         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -6, -28, 16, 12, 14 },
237         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
238         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
239         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
240         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
241         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
242         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
243         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
244         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
245         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
246         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
247         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
248         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
249         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
250         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
251         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
252         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
253         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
254         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
255         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
256         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
257         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
258         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
259         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
260         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
261         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
262     },
263     {
264         // 0x00991CBC:
265         { -24, -6, -28, 32, 12, 14 }, { -11, -6, -28, 22, 12, 14 }, { -11, -11, -28, 22, 22, 14 }, { -6, -11, -28, 12, 22, 14 },
266         { -6, -11, -28, 12, 32, 14 }, { -6, -11, -28, 12, 22, 14 }, { -11, -11, -28, 22, 22, 14 }, { -11, -6, -28, 22, 12, 14 },
267         { -11, -6, -28, 32, 12, 14 }, { -11, -6, -28, 22, 12, 14 }, { -11, -11, -28, 22, 22, 14 }, { -6, -11, -28, 12, 22, 14 },
268         { -6, -24, -28, 12, 32, 14 }, { -6, -11, -28, 12, 22, 14 }, { -11, -11, -28, 22, 22, 14 }, { -11, -6, -28, 22, 12, 14 },
269         { -15, -6, -28, 18, 12, 14 }, { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },   { -6, -9, -28, 12, 18, 14 },
270         { -6, -6, -28, 12, 28, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },   { -9, -6, -28, 18, 12, 14 },
271         { -6, -6, -28, 28, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },   { -6, -9, -28, 12, 18, 14 },
272         { -6, -15, -28, 12, 18, 14 }, { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },   { -9, -6, -28, 18, 12, 14 },
273         { -10, -6, -28, 16, 12, 14 }, { -8, -8, -28, 16, 16, 14 },  { -6, -11, -33, 3, 16, 19 },   { -8, -8, -28, 16, 16, 14 },
274         { -11, -6, -33, 16, 5, 19 },  { -8, -8, -28, 16, 16, 14 },  { -6, -10, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
275         { -10, -6, -28, 16, 12, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
276         { -3, -10, -39, 3, 16, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
277         { -13, -6, -39, 16, 5, 24 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
278         { -6, -10, -28, 12, 16, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },   { -6, -6, -28, 12, 12, 14 },
279         { -10, -6, -39, 20, 12, 24 }, { -2, -3, -39, 3, 10, 29 },   { -13, -6, -39, 20, 5, 24 },   { -6, -10, -28, 12, 20, 14 },
280         { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },   { -10, -6, -49, 5, 12, 34 },
281         { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },     { -2, 4, -39, 3, 10, 29 },
282         { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },   { -13, -6, -39, 20, 5, 24 },
283         { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 },  { -6, -15, -28, 12, 10, 14 },
284         { -10, -6, -39, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -39, 10, 5, 24 },    { -6, -15, -10, 12, 10, 14 },
285         { -10, -6, -28, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -28, 10, 5, 14 },    { -6, -15, -10, 12, 10, 14 },
286         { -10, -6, -44, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -34, 10, 12, 7 },     { -6, -15, -5, 12, 10, 7 },
287         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },       { -6, -10, 5, 12, 10, 7 },
288         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },     { -6, -10, 5, 12, 20, 7 },
289         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },     { -6, -10, 5, 12, 20, 7 },
290         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -8, -28, 16, 16, 14 },
291         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -8, -28, 16, 16, 14 },
292         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },     { -6, -8, 11, 12, 16, 4 },
293         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -6, -28, 16, 12, 14 },
294         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },   { -6, -8, -28, 12, 16, 14 },
295         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },   { -8, -6, -28, 16, 12, 14 },
296         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
297         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
298         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
299         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
300         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
301         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
302         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
303         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
304         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
305         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
306         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
307         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
308         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
309         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
310         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
311         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
312         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
313         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
314         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
315         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },   { -6, -10, -28, 12, 20, 14 },
316         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
317         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
318         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
319         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
320         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },   { -6, -10, 11, 12, 20, 14 },
321     },
322     {
323         // 0x0098F52C
324         { -14, -6, 1, 28, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
325         { -6, -14, 1, 12, 28, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
326         { -14, -6, 1, 28, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
327         { -6, -14, 1, 12, 28, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
328         { -13, -6, 1, 26, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
329         { -6, -13, 3, 12, 26, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
330         { -13, -6, 3, 26, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
331         { -6, -13, 1, 12, 26, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
332         { -14, -6, 1, 28, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 28, 14 },   { -8, -8, 1, 16, 16, 14 },
333         { -18, -6, 1, 28, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 28, 14 },   { 0, 0, 1, 8, 8, 14 },
334         { -3, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
335         { -6, -8, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
336         { -8, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
337         { -6, -3, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
338         { 0, -6, 5, 3, 12, 5 },       { -6, -13, 5, 3, 12, 5 },     { -13, -6, 5, 12, 5, 5 },     { -6, 0, 5, 12, 3, 5 },
339         { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { -6, -12, -8, 12, 10, 15 },
340         { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },
341         { -12, -6, -8, 10, 12, 15 },  { -12, -6, -8, 10, 12, 15 },  { -12, -6, -8, 10, 12, 15 },  { -6, 0, -8, 12, 10, 15 },
342         { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },
343         { -3, -6, -4, 6, 12, 5 },     { -6, -13, -4, 3, 20, 5 },    { -13, -6, -4, 6, 5, 5 },     { -6, -3, -4, 12, 20, 5 },
344         { -3, -6, 1, 6, 12, 6 },      { -6, -13, -10, 3, 6, 6 },    { -13, -6, -10, 6, 5, 6 },    { -6, -3, 1, 12, 6, 6 },
345         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
346         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
347         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
348         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
349         { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },
350         { -8, -8, 1, 16, 16, 14 },    { -32, -32, 24, 4, 4, 14 },   { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
351         { -14, -6, 1, 28, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
352         { -6, -14, 1, 12, 28, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
353         { -14, -6, 1, 28, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
354         { -6, -14, 1, 12, 28, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
355         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
356         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
357         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
358         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
359         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },
360         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
361         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
362         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
363         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
364         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
365         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
366         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
367         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
368         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
369         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
370         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
371         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
372         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
373         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
374         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
375         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
376         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
377         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
378         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
379         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
380     },
381     {
382         // 0x0098EFEC:
383         { -10, -6, 1, 20, 12, 14 },   { -9, -6, 1, 18, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -9, 1, 12, 18, 14 },
384         { -6, -10, 1, 12, 20, 14 },   { -6, -9, 1, 12, 18, 14 },    { -8, -8, 1, 16, 16, 14 },    { -9, -6, 1, 18, 12, 14 },
385         { -10, -6, 1, 20, 12, 14 },   { -9, -6, 1, 18, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -9, 1, 12, 18, 14 },
386         { -6, -10, 1, 12, 20, 14 },   { -6, -9, 1, 12, 18, 14 },    { -8, -8, 1, 16, 16, 14 },    { -9, -6, 1, 18, 12, 14 },
387         { -10, -6, 1, 20, 12, 14 },   { -8, -6, 1, 16, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -8, 1, 12, 16, 14 },
388         { -6, -10, 2, 12, 20, 14 },   { -6, -8, 1, 12, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -6, 1, 16, 12, 14 },
389         { -10, -6, 2, 20, 12, 14 },   { -8, -6, 1, 16, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -8, 1, 12, 16, 14 },
390         { -6, -10, 1, 12, 20, 14 },   { -6, -8, 1, 12, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -6, 1, 16, 12, 14 },
391         { -10, -6, 1, 20, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -10, 1, 12, 20, 14 },   { -8, -8, 1, 16, 16, 14 },
392         { -10, -6, 1, 20, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -10, 1, 12, 20, 14 },   { 0, 0, 1, 8, 8, 14 },
393         { -3, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
394         { -6, -8, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
395         { -8, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
396         { -6, -3, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
397         { 0, -6, 5, 3, 12, 5 },       { -6, -13, 5, 3, 12, 5 },     { -13, -6, 5, 12, 5, 5 },     { -6, 0, 5, 12, 3, 5 },
398         { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { -6, -12, -8, 12, 10, 15 },
399         { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },
400         { -12, -6, -8, 10, 12, 15 },  { -12, -6, -8, 10, 12, 15 },  { -12, -6, -8, 10, 12, 15 },  { -6, 0, -8, 12, 10, 15 },
401         { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },
402         { -3, -6, -4, 6, 12, 5 },     { -6, -13, -4, 3, 20, 5 },    { -13, -6, -4, 6, 5, 5 },     { -6, -3, -4, 12, 20, 5 },
403         { -3, -6, 1, 6, 12, 6 },      { -6, -13, -10, 3, 6, 6 },    { -13, -6, -10, 6, 5, 6 },    { -6, -3, 1, 12, 6, 6 },
404         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
405         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
406         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
407         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
408         { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },
409         { -8, -8, 1, 16, 16, 14 },    { -32, -32, 24, 4, 4, 14 },   { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
410         { -10, -6, 1, 20, 12, 14 },   { -9, -6, 1, 18, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -9, 1, 12, 18, 14 },
411         { -6, -10, 1, 12, 20, 14 },   { -6, -9, 1, 12, 18, 14 },    { -8, -8, 1, 16, 16, 14 },    { -9, -6, 1, 18, 12, 14 },
412         { -10, -6, 1, 20, 12, 14 },   { -9, -6, 1, 18, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -9, 1, 12, 18, 14 },
413         { -6, -10, 1, 12, 20, 14 },   { -6, -9, 1, 12, 18, 14 },    { -8, -8, 1, 16, 16, 14 },    { -9, -6, 1, 18, 12, 14 },
414         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
415         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
416         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
417         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
418         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },
419         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
420         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
421         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
422         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
423         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
424         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
425         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
426         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
427         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
428         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
429         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
430         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
431         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
432         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
433         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
434         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
435         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
436         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
437         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
438         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
439     },
440     {
441         // 0x0098EAAC:
442         { -8, -6, 1, 16, 12, 14 },    { -7, -6, 1, 14, 12, 14 },    { -6, -6, 1, 12, 12, 14 },    { -6, -7, 1, 12, 14, 14 },
443         { -6, -8, 1, 12, 16, 14 },    { -6, -7, 1, 12, 14, 14 },    { -6, -6, 1, 12, 12, 14 },    { -7, -6, 1, 14, 12, 14 },
444         { -8, -6, 1, 16, 12, 14 },    { -7, -6, 1, 14, 12, 14 },    { -6, -6, 1, 12, 12, 14 },    { -6, -7, 1, 12, 14, 14 },
445         { -6, -8, 1, 12, 16, 14 },    { -6, -7, 1, 12, 14, 14 },    { -6, -6, 1, 12, 12, 14 },    { -7, -6, 1, 14, 12, 14 },
446         { -8, -6, 1, 16, 12, 14 },    { -7, -6, 1, 14, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -7, 1, 12, 14, 14 },
447         { -6, -8, 2, 12, 16, 14 },    { -6, -7, 1, 12, 14, 14 },    { -8, -8, 1, 16, 16, 14 },    { -7, -6, 1, 14, 12, 14 },
448         { -8, -6, 2, 16, 12, 14 },    { -7, -6, 1, 14, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -7, 1, 12, 14, 14 },
449         { -6, -8, 1, 12, 16, 14 },    { -6, -7, 1, 12, 14, 14 },    { -8, -8, 1, 16, 16, 14 },    { -7, -6, 1, 14, 12, 14 },
450         { -8, -6, 1, 16, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -8, 1, 12, 16, 14 },    { -8, -8, 1, 16, 16, 14 },
451         { -8, -6, 1, 16, 12, 14 },    { -8, -8, 1, 16, 16, 14 },    { -6, -8, 1, 12, 16, 14 },    { 0, 0, 1, 8, 8, 14 },
452         { -3, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
453         { -6, -8, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
454         { -8, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
455         { -6, -3, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
456         { 0, -6, 5, 3, 12, 5 },       { -6, -13, 5, 3, 12, 5 },     { -13, -6, 5, 12, 5, 5 },     { -6, 0, 5, 12, 3, 5 },
457         { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { -6, -12, -8, 6, 6, 15 },
458         { -12, -12, -8, 6, 6, 15 },   { -12, -12, -8, 6, 6, 15 },   { -12, -12, -8, 6, 6, 15 },   { -12, -12, -8, 6, 6, 15 },
459         { -12, -12, -8, 6, 6, 15 },   { -12, -6, -8, 6, 6, 15 },    { -12, -6, -8, 10, 12, 15 },  { -6, 0, -8, 12, 10, 15 },
460         { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },
461         { -3, -6, -4, 6, 12, 5 },     { -6, -13, -4, 3, 20, 5 },    { -13, -6, -4, 6, 5, 5 },     { -6, -3, -4, 12, 20, 5 },
462         { -3, -6, 1, 6, 12, 6 },      { -6, -13, -10, 3, 6, 6 },    { -13, -6, -10, 6, 5, 6 },    { -6, -3, 1, 12, 6, 6 },
463         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
464         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
465         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
466         { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },  { -10, -6, -15, 20, 12, 7 },  { -6, -10, -15, 12, 20, 7 },
467         { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },
468         { -8, -8, 1, 16, 16, 14 },    { -32, -32, 24, 4, 4, 14 },   { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
469         { -8, -6, 1, 16, 12, 14 },    { -7, -6, 1, 14, 12, 14 },    { -6, -6, 1, 12, 12, 14 },    { -6, -7, 1, 12, 14, 14 },
470         { -6, -8, 1, 12, 16, 14 },    { -6, -7, 1, 12, 14, 14 },    { -6, -6, 1, 12, 12, 14 },    { -7, -6, 1, 14, 12, 14 },
471         { -8, -6, 1, 16, 12, 14 },    { -7, -6, 1, 14, 12, 14 },    { -6, -6, 1, 12, 12, 14 },    { -6, -7, 1, 12, 14, 14 },
472         { -6, -8, 1, 12, 16, 14 },    { -6, -7, 1, 12, 14, 14 },    { -6, -6, 1, 12, 12, 14 },    { -7, -6, 1, 14, 12, 14 },
473         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
474         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
475         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
476         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
477         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },
478         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
479         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
480         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
481         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
482         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
483         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
484         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
485         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
486         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
487         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
488         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
489         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
490         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
491         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
492         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
493         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
494         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
495         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
496         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
497         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
498     },
499     {
500         // 0x0098E56C:
501         { -3, -6, 1, 6, 12, 14 },     { -3, -5, 1, 6, 10, 14 },     { -5, -5, 1, 10, 10, 14 },    { -5, -3, 1, 10, 6, 14 },
502         { -6, -3, 1, 12, 6, 14 },     { -5, -3, 1, 10, 6, 14 },     { -5, -5, 1, 10, 10, 14 },    { -3, -5, 1, 6, 10, 14 },
503         { -3, -6, 1, 6, 12, 14 },     { -3, -5, 1, 6, 10, 14 },     { -5, -5, 1, 10, 10, 14 },    { -5, -3, 1, 10, 6, 14 },
504         { -6, -3, 1, 12, 6, 14 },     { -5, -3, 1, 10, 6, 14 },     { -5, -5, 1, 10, 10, 14 },    { -3, -5, 1, 6, 10, 14 },
505         { -3, -6, 1, 6, 12, 14 },     { -3, -6, 1, 6, 12, 14 },     { -8, -8, 1, 16, 16, 14 },    { -6, -3, 1, 12, 6, 14 },
506         { -6, -3, 2, 12, 6, 14 },     { -6, -3, 1, 12, 6, 14 },     { -8, -8, 1, 16, 16, 14 },    { -3, -6, 1, 6, 12, 14 },
507         { -3, -6, 2, 6, 12, 14 },     { -3, -6, 1, 6, 12, 14 },     { -8, -8, 1, 16, 16, 14 },    { -6, -3, 1, 12, 6, 14 },
508         { -6, -3, 1, 12, 6, 14 },     { -6, -3, 1, 12, 6, 14 },     { -8, -8, 1, 16, 16, 14 },    { -3, -6, 1, 6, 12, 14 },
509         { -3, -6, 1, 6, 12, 7 },      { -8, -8, 1, 16, 16, 7 },     { -6, -3, 1, 12, 6, 7 },      { -8, -8, 1, 16, 16, 7 },
510         { -3, -6, 1, 6, 12, 7 },      { -8, -8, 1, 16, 16, 7 },     { -6, -3, 1, 12, 6, 7 },      { 0, 0, 1, 8, 8, 7 },
511         { -3, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
512         { -6, -3, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
513         { -3, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
514         { -6, -3, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
515         { 0, -6, 5, 3, 12, 5 },       { -6, -13, 5, 3, 12, 5 },     { -13, -6, 5, 12, 5, 5 },     { -6, 0, 5, 12, 3, 5 },
516         { 0, -6, -4, 10, 12, 7 },     { 0, -6, -4, 10, 12, 7 },     { 0, -6, -4, 10, 12, 7 },     { -6, -12, -4, 12, 10, 7 },
517         { -6, -12, -4, 12, 10, 7 },   { -6, -12, -4, 12, 10, 7 },   { -6, -12, -4, 12, 10, 7 },   { -6, -12, -4, 12, 10, 7 },
518         { -12, -6, -4, 10, 12, 7 },   { -12, -6, -4, 10, 12, 7 },   { -12, -6, -4, 10, 12, 7 },   { -6, 0, -4, 12, 10, 7 },
519         { -6, 0, -4, 12, 10, 7 },     { -6, 0, -4, 12, 10, 7 },     { -6, 0, -4, 12, 10, 7 },     { -6, 0, -4, 12, 10, 7 },
520         { -3, -6, -4, 6, 12, 5 },     { -6, -13, -4, 3, 20, 5 },    { -13, -6, -4, 6, 5, 5 },     { -6, -3, -4, 12, 20, 5 },
521         { -3, -6, 1, 6, 12, 6 },      { -6, -13, -10, 3, 6, 6 },    { -13, -6, -10, 6, 5, 6 },    { -6, -3, 1, 12, 6, 6 },
522         { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },    { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },
523         { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },    { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },
524         { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },    { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },
525         { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },    { -3, -6, -15, 6, 12, 6 },    { -6, -3, -15, 12, 6, 6 },
526         { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },
527         { -8, -8, 1, 16, 16, 14 },    { -32, -32, 24, 4, 4, 14 },   { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
528         { -3, -6, 1, 6, 12, 14 },     { -3, -5, 1, 6, 10, 14 },     { -5, -5, 1, 10, 10, 14 },    { -5, -3, 1, 10, 6, 14 },
529         { -6, -3, 1, 12, 6, 14 },     { -5, -3, 1, 10, 6, 14 },     { -5, -5, 1, 10, 10, 14 },    { -3, -5, 1, 6, 10, 14 },
530         { -3, -6, 1, 6, 12, 14 },     { -3, -5, 1, 6, 10, 14 },     { -5, -5, 1, 10, 10, 14 },    { -5, -3, 1, 10, 6, 14 },
531         { -6, -3, 1, 12, 6, 14 },     { -5, -3, 1, 10, 6, 14 },     { -5, -5, 1, 10, 10, 14 },    { -3, -5, 1, 6, 10, 14 },
532         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
533         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
534         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
535         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
536         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },
537         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
538         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
539         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
540         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
541         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
542         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
543         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
544         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
545         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
546         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
547         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
548         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
549         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
550         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
551         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
552         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
553         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
554         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
555         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
556         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
557     },
558     {
559         // 0x00990CFC:
560         { -12, -6, 1, 24, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -11, 1, 12, 22, 14 },
561         { -6, -12, 1, 12, 24, 14 },   { -6, -11, 1, 12, 22, 14 },   { -10, -10, 1, 20, 20, 14 },  { -11, -6, 1, 22, 12, 14 },
562         { -12, -6, 1, 24, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -11, 1, 12, 22, 14 },
563         { -6, -12, 1, 12, 24, 14 },   { -6, -11, 1, 12, 22, 14 },   { -10, -10, 1, 20, 20, 14 },  { -11, -6, 1, 22, 12, 14 },
564         { -11, -6, 1, 22, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
565         { -6, -11, 3, 12, 22, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
566         { -11, -6, 3, 22, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
567         { -6, -11, 1, 12, 22, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
568         { -12, -6, 1, 24, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -12, 1, 12, 24, 14 },   { -8, -8, 1, 16, 16, 14 },
569         { -18, -6, 1, 24, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 24, 14 },   { 0, 0, 1, 8, 8, 14 },
570         { -12, -6, 5, 24, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
571         { -6, -12, 5, 12, 24, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
572         { -18, -6, 5, 24, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
573         { -6, -14, 5, 12, 24, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
574         { 0, -6, -10, 14, 12, 24 },   { -6, -17, -10, 3, 14, 24 },  { -17, -6, -10, 14, 5, 24 },  { -6, 0, -10, 12, 14, 24 },
575         { 0, -6, -7, 10, 12, 14 },    { 0, -6, -7, 10, 12, 14 },    { 0, -6, -7, 10, 12, 14 },    { 0, -6, -7, 10, 12, 14 },
576         { -6, -12, -7, 12, 10, 14 },  { -6, -12, -7, 12, 10, 14 },  { -6, -12, -7, 12, 10, 14 },  { -6, -12, -7, 12, 10, 14 },
577         { -12, -6, -7, 10, 12, 14 },  { -12, -6, -7, 10, 12, 14 },  { -12, -6, -7, 10, 12, 14 },  { -12, -6, -7, 10, 12, 14 },
578         { -6, 0, -7, 12, 10, 14 },    { -6, 0, -7, 12, 10, 14 },    { -6, 0, -7, 12, 10, 14 },    { -6, 0, -7, 12, 10, 14 },
579         { -14, -6, -10, 28, 12, 24 }, { -6, -17, -10, 3, 28, 24 },  { -17, -6, -10, 28, 5, 24 },  { -6, -14, -10, 12, 28, 24 },
580         { -14, -6, 1, 28, 12, 14 },   { -6, -17, -10, 3, 28, 24 },  { -17, -6, -10, 28, 5, 24 },  { -6, -14, 1, 12, 28, 14 },
581         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
582         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
583         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
584         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
585         { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },
586         { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
587         { -12, -6, 1, 24, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -11, 1, 12, 22, 14 },
588         { -6, -12, 1, 12, 24, 14 },   { -6, -11, 1, 12, 22, 14 },   { -10, -10, 1, 20, 20, 14 },  { -11, -6, 1, 22, 12, 14 },
589         { -12, -6, 1, 24, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -11, 1, 12, 22, 14 },
590         { -6, -12, 1, 12, 24, 14 },   { -6, -11, 1, 12, 22, 14 },   { -10, -10, 1, 20, 20, 14 },  { -11, -6, 1, 22, 12, 14 },
591         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
592         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
593         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
594         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
595         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },
596         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
597         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
598         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
599         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
600         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
601         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
602         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
603         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
604         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
605         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
606         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
607         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
608         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
609         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
610         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
611         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
612         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
613         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
614         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
615         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
616     },
617     {
618         // 0x0098FA6C:
619         { -18, -6, 1, 36, 12, 11 },   { -17, -6, 1, 34, 12, 11 },   { -15, -15, 1, 30, 30, 11 },  { -6, -17, 1, 12, 34, 11 },
620         { -6, -18, 1, 12, 36, 11 },   { -6, -17, 1, 12, 34, 11 },   { -15, -15, 1, 30, 30, 11 },  { -17, -6, 1, 34, 12, 11 },
621         { -18, -6, 1, 36, 12, 11 },   { -17, -6, 1, 34, 12, 11 },   { -15, -15, 1, 30, 30, 11 },  { -6, -17, 1, 12, 34, 11 },
622         { -6, -18, 1, 12, 36, 11 },   { -6, -17, 1, 12, 34, 11 },   { -15, -15, 1, 30, 30, 11 },  { -17, -6, 1, 34, 12, 11 },
623         { -14, -6, 1, 28, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
624         { -6, -14, 3, 12, 28, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
625         { -14, -6, 3, 28, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
626         { -6, -14, 1, 12, 28, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
627         { -14, -6, 1, 28, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 28, 14 },   { -8, -8, 1, 16, 16, 14 },
628         { -14, -6, 1, 28, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 28, 14 },   { 0, 0, 1, 8, 8, 14 },
629         { -3, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
630         { -6, -8, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
631         { -8, -6, 5, 6, 12, 7 },      { -8, -6, 1, 16, 12, 7 },     { -8, -8, 1, 16, 16, 7 },     { -6, -8, 1, 12, 16, 7 },
632         { -6, -3, 5, 12, 6, 7 },      { -6, -8, 1, 12, 16, 7 },     { -8, -8, 1, 16, 16, 7 },     { -8, -6, 1, 16, 12, 7 },
633         { 0, -6, 5, 3, 12, 5 },       { -6, -13, 5, 3, 12, 5 },     { -13, -6, 5, 12, 5, 5 },     { -6, 0, 5, 12, 3, 5 },
634         { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { 0, -6, -8, 10, 12, 15 },    { -6, -12, -8, 12, 10, 15 },
635         { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },  { -6, -12, -8, 12, 10, 15 },
636         { -12, -6, -8, 10, 12, 15 },  { -12, -6, -8, 10, 12, 15 },  { -12, -6, -8, 10, 12, 15 },  { -6, 0, -8, 12, 10, 15 },
637         { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },    { -6, 0, -8, 12, 10, 15 },
638         { -3, -6, -4, 6, 12, 5 },     { -6, -13, -4, 3, 20, 5 },    { -13, -6, -4, 6, 5, 5 },     { -6, -3, -4, 12, 20, 5 },
639         { -3, -6, 1, 6, 12, 6 },      { -6, -13, -10, 3, 6, 6 },    { -13, -6, -10, 6, 5, 6 },    { -6, -3, 1, 12, 6, 6 },
640         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
641         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
642         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
643         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
644         { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },
645         { -8, -8, 1, 16, 16, 14 },    { -32, -32, 24, 4, 4, 14 },   { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
646         { -14, -6, 1, 28, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
647         { -6, -14, 1, 12, 28, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
648         { -14, -6, 1, 28, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
649         { -6, -14, 1, 12, 28, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
650         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
651         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
652         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
653         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, 10, 12, 12, 14 },   { -6, -6, 10, 12, 12, 14 },
654         { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },   { -6, -6, -12, 12, 12, 2 },
655         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
656         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
657         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
658         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
659         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
660         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
661         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
662         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
663         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
664         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
665         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
666         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
667         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
668         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
669         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
670         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
671         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
672         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
673         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
674         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
675     },
676     {
677         // 0x0099177C:
678         { -16, -6, 1, 32, 12, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
679         { -6, -16, 1, 12, 32, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
680         { -16, -6, 1, 32, 12, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
681         { -6, -16, 1, 12, 32, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
682         { -13, -6, 1, 26, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
683         { -6, -13, 3, 12, 26, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
684         { -13, -6, 3, 26, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
685         { -6, -13, 1, 12, 26, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
686         { -14, -6, 1, 28, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 28, 14 },   { -8, -8, 1, 16, 16, 14 },
687         { -18, -6, 1, 28, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -14, 1, 12, 28, 14 },   { 0, 0, 1, 8, 8, 14 },
688         { -14, -6, 5, 28, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
689         { -6, -14, 5, 12, 28, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
690         { -18, -6, 5, 28, 12, 14 },   { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
691         { -6, -14, 5, 12, 28, 14 },   { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
692         { -14, -6, -10, 28, 12, 24 }, { -6, -17, -10, 3, 28, 24 },  { -17, -6, -10, 28, 5, 24 },  { -6, -14, -10, 12, 28, 24 },
693         { 0, -6, -7, 10, 12, 14 },    { 0, -6, -7, 10, 12, 14 },    { 0, -6, -7, 10, 12, 14 },    { 0, -6, -7, 10, 12, 14 },
694         { -6, -12, -7, 12, 10, 14 },  { -6, -12, -7, 12, 10, 14 },  { -6, -12, -7, 12, 10, 14 },  { -6, -12, -7, 12, 10, 14 },
695         { -12, -6, -7, 10, 12, 14 },  { -12, -6, -7, 10, 12, 14 },  { -12, -6, -7, 10, 12, 14 },  { -12, -6, -7, 10, 12, 14 },
696         { -6, 0, -7, 12, 10, 14 },    { -6, 0, -7, 12, 10, 14 },    { -6, 0, -7, 12, 10, 14 },    { -6, 0, -7, 12, 10, 14 },
697         { -14, -6, -10, 28, 12, 24 }, { -6, -17, -10, 3, 28, 24 },  { -17, -6, -10, 28, 5, 24 },  { -6, -14, -10, 12, 28, 24 },
698         { -14, -6, 1, 28, 12, 14 },   { -6, -17, -10, 3, 28, 24 },  { -17, -6, -10, 28, 5, 24 },  { -6, -14, 1, 12, 28, 14 },
699         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
700         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
701         { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },  { -14, -6, -15, 28, 12, 7 },  { -6, -14, -15, 12, 28, 7 },
702         { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },    { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },
703         { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },  { -10, -10, 1, 20, 20, 14 },
704         { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { -8, -8, 1, 16, 16, 14 },    { 8, 8, 1, 8, 8, 14 },
705         { -16, -6, 1, 32, 12, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
706         { -6, -16, 1, 12, 32, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
707         { -16, -6, 1, 32, 12, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
708         { -6, -16, 1, 12, 32, 8 },    { -5, -5, 1, 10, 10, 8 },     { -4, -4, 1, 8, 8, 8 },       { -5, -5, 1, 10, 10, 8 },
709         { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },    { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },
710         { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },    { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },
711         { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },    { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },
712         { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },    { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },
713         { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },    { -16, -6, 1, 32, 12, 8 },    { -6, -16, 1, 12, 32, 8 },
714         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
715         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
716         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
717         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
718         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
719         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
720         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
721         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
722         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
723         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
724         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
725         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
726         { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 }, { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
727         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
728         { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 }, { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },
729         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },
730         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
731         { -10, -6, 1, 20, 12, 14 },   { -6, -10, 1, 12, 20, 14 },   { -10, -6, 1, 20, 12, 14 },   { -6, -10, -23, 12, 20, 14 },
732         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
733         { -10, -6, -23, 20, 12, 14 }, { -6, -10, 1, 12, 20, 14 },   { -10, -6, -23, 20, 12, 14 }, { -6, -10, -23, 12, 20, 14 },
734     },
735     {
736         // 0x009900FC:
737         { -16, -6, 1, 32, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
738         { -6, -16, 1, 12, 32, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
739         { -16, -6, 1, 32, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
740         { -6, -16, 1, 12, 32, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
741         { -14, -6, 5, 28, 12, 9 },    { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
742         { -6, -14, 5, 12, 28, 9 },    { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
743         { -14, -6, 5, 28, 12, 9 },    { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
744         { -6, -14, 5, 12, 28, 9 },    { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
745         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
746         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
747         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
748         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
749         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
750         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
751         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
752         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
753         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
754         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
755         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
756         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
757         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
758         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
759         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
760         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
761         { -10, -6, -28, 16, 12, 14 }, { -8, -8, -28, 16, 16, 14 },  { -6, -11, -33, 3, 16, 19 },  { -8, -8, -28, 16, 16, 14 },
762         { -11, -6, -33, 16, 5, 19 },  { -8, -8, -28, 16, 16, 14 },  { -6, -10, -28, 12, 16, 14 }, { -8, -8, -28, 16, 16, 14 },
763         { -10, -6, -28, 16, 12, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
764         { -3, -10, -39, 3, 16, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
765         { -10, -6, -39, 16, 3, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
766         { -6, -10, -28, 12, 16, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
767         { -10, -6, -28, 20, 12, 14 }, { -2, -3, -39, 3, 10, 29 },   { -3, -2, -39, 10, 3, 29 },   { -6, -10, -28, 12, 20, 14 },
768         { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },
769         { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },
770         { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },
771         { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 },
772         { -10, -6, -39, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -39, 10, 5, 24 },   { -6, -15, -10, 12, 10, 14 },
773         { -10, -6, -28, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -28, 10, 5, 14 },   { -6, -15, -10, 12, 10, 14 },
774         { -10, -6, -44, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -34, 10, 12, 7 },    { -6, -15, -5, 12, 10, 7 },
775         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },      { -6, -10, 5, 12, 10, 7 },
776         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
777         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
778         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
779         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
780         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },    { -6, -8, 11, 12, 16, 4 },
781         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
782         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
783         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
784         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
785         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
786         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
787         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
788         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
789         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
790         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
791         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
792         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
793     },
794     {
795         // 0x009901BC:
796         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
797         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
798         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
799         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
800         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
801         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
802         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
803         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
804         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
805         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
806         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
807         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
808         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
809         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
810         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
811         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
812         { -10, -6, -28, 16, 12, 14 }, { -8, -8, -28, 16, 16, 14 },  { -6, -11, -33, 3, 16, 19 },  { -8, -8, -28, 16, 16, 14 },
813         { -11, -6, -33, 16, 5, 19 },  { -8, -8, -28, 16, 16, 14 },  { -6, -10, -28, 12, 16, 14 }, { -8, -8, -28, 16, 16, 14 },
814         { -10, -6, -28, 16, 12, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
815         { -3, -10, -39, 3, 16, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
816         { -10, -6, -39, 16, 3, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
817         { -6, -10, -28, 12, 16, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
818         { -10, -6, -28, 20, 12, 14 }, { -2, -3, -39, 3, 10, 29 },   { -3, -2, -39, 10, 3, 29 },   { -6, -10, -28, 12, 20, 14 },
819         { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },
820         { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },
821         { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },
822         { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 },
823         { -10, -6, -39, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -39, 10, 5, 24 },   { -6, -15, -10, 12, 10, 14 },
824         { -10, -6, -28, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -28, 10, 5, 14 },   { -6, -15, -10, 12, 10, 14 },
825         { -10, -6, -44, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -34, 10, 12, 7 },    { -6, -15, -5, 12, 10, 7 },
826         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },      { -6, -10, 5, 12, 10, 7 },
827         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
828         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
829         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
830         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
831         { -8, -6, 11, 16, 12, 4 },    { -8, -6, 11, 16, 12, 4 },    { -8, -8, 11, 16, 16, 4 },    { -6, -8, 11, 12, 16, 4 },
832         { -6, -8, 11, 12, 16, 4 },    { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
833         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
834         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
835         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
836         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
837         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
838         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
839         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
840         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
841         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
842         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 },
843         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
844         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },
845         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
846         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
847         { -10, -6, 11, 20, 12, 14 },  { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
848         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
849         { -10, -6, 11, 20, 12, 14 },  { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },
850         { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 }, { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
851         { -10, -6, -28, 20, 12, 14 }, { -6, -10, 11, 12, 20, 14 },  { -10, -6, -28, 20, 12, 14 }, { -6, -10, -28, 12, 20, 14 },
852     },
853     {
854         // 0x0098FFAC:
855         { -3, -6, -1, 6, 12, 1 },     { -3, -5, -1, 6, 10, 1 },     { -5, -5, -1, 10, 10, 1 },    { -5, -3, -1, 10, 6, 1 },
856         { -6, -3, -1, 12, 6, 1 },     { -5, -3, -1, 10, 6, 1 },     { -5, -5, -1, 10, 10, 1 },    { -3, -5, -1, 6, 10, 1 },
857         { -3, -6, -1, 6, 12, 1 },     { -3, -5, -1, 6, 10, 1 },     { -5, -5, -1, 10, 10, 1 },    { -5, -3, -1, 10, 6, 1 },
858         { -6, -3, -1, 12, 6, 1 },     { -5, -3, -1, 10, 6, 1 },     { -5, -5, -1, 10, 10, 1 },    { -3, -5, -1, 6, 10, 1 },
859         { -3, -6, -8, 6, 12, 1 },     { -3, -6, -1, 6, 12, 1 },     { -8, -8, -1, 16, 16, 1 },    { -6, -3, -1, 12, 6, 1 },
860         { -6, -3, 0, 12, 6, 1 },      { -6, -3, -1, 12, 6, 1 },     { -8, -8, -1, 16, 16, 1 },    { -3, -6, -1, 6, 12, 1 },
861         { -3, -6, 0, 6, 12, 1 },      { -3, -6, -1, 6, 12, 1 },     { -8, -8, -1, 16, 16, 1 },    { -6, -3, -1, 12, 6, 1 },
862         { -6, -3, -8, 12, 6, 1 },     { -6, -3, -1, 12, 6, 1 },     { -8, -8, -1, 16, 16, 1 },    { -3, -6, -1, 6, 12, 1 },
863         { -3, -6, -10, 6, 12, 1 },    { -8, -8, -2, 16, 16, 1 },    { -6, -3, -2, 12, 6, 1 },     { -8, -8, -2, 16, 16, 1 },
864         { -3, -6, -2, 6, 12, 1 },     { -8, -8, -2, 16, 16, 1 },    { -6, -3, -10, 12, 6, 1 },    { 0, 0, -2, 8, 8, 1 },
865         { -3, -6, -12, 6, 12, 1 },    { -8, -6, -6, 16, 12, 1 },    { -8, -8, -6, 16, 16, 1 },    { -6, -8, -6, 12, 16, 1 },
866         { -6, -3, -2, 12, 6, 1 },     { -6, -8, -6, 12, 16, 1 },    { -8, -8, -6, 16, 16, 1 },    { -8, -6, -6, 16, 12, 1 },
867         { -3, -6, -2, 6, 12, 1 },     { -8, -6, -6, 16, 12, 1 },    { -8, -8, -6, 16, 16, 1 },    { -6, -8, -6, 12, 16, 1 },
868         { -6, -3, -12, 12, 6, 1 },    { -6, -8, -6, 12, 16, 1 },    { -8, -8, -6, 16, 16, 1 },    { -8, -6, -6, 16, 12, 1 },
869         { -16, -6, 1, 32, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
870         { -6, -16, 1, 12, 32, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
871         { -16, -6, 1, 32, 12, 14 },   { -12, -6, 1, 24, 12, 14 },   { -10, -10, 1, 20, 20, 14 },  { -6, -12, 1, 12, 24, 14 },
872         { -6, -16, 1, 12, 32, 14 },   { -6, -12, 1, 12, 24, 14 },   { -10, -10, 1, 20, 20, 14 },  { -12, -6, 1, 24, 12, 14 },
873         { -14, -6, 5, 28, 12, 9 },    { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
874         { -6, -14, 5, 12, 28, 9 },    { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
875         { -14, -6, 5, 28, 12, 9 },    { -11, -6, 1, 22, 12, 14 },   { -8, -8, 1, 16, 16, 14 },    { -6, -11, 1, 12, 22, 14 },
876         { -6, -14, 5, 12, 28, 9 },    { -6, -11, 1, 12, 22, 14 },   { -8, -8, 1, 16, 16, 14 },    { -11, -6, 1, 22, 12, 14 },
877         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
878         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
879         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
880         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
881         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
882         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
883         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
884         { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },    { -6, -6, -4, 12, 12, 1 },
885         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
886         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
887         { -8, -6, -28, 16, 12, 14 },  { -8, -6, -28, 16, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -8, -28, 12, 16, 14 },
888         { -6, -8, -28, 12, 16, 14 },  { -6, -8, -28, 12, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -6, -28, 16, 12, 14 },
889         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
890         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
891         { -6, -6, -28, 12, 12, 14 },  { -9, -6, -28, 18, 12, 14 },  { -8, -8, -28, 16, 16, 14 },  { -6, -9, -28, 12, 18, 14 },
892         { -6, -6, -28, 12, 12, 14 },  { -6, -9, -28, 12, 18, 14 },  { -8, -8, -28, 16, 16, 14 },  { -9, -6, -28, 18, 12, 14 },
893         { -10, -6, -28, 16, 12, 14 }, { -8, -8, -28, 16, 16, 14 },  { -6, -11, -33, 3, 16, 19 },  { -8, -8, -28, 16, 16, 14 },
894         { -11, -6, -33, 16, 5, 19 },  { -8, -8, -28, 16, 16, 14 },  { -6, -10, -28, 12, 16, 14 }, { -8, -8, -28, 16, 16, 14 },
895         { -10, -6, -28, 16, 12, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
896         { -3, -10, -39, 3, 16, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
897         { -10, -6, -39, 16, 3, 27 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
898         { -6, -10, -28, 12, 16, 14 }, { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },  { -6, -6, -28, 12, 12, 14 },
899         { -10, -6, -28, 20, 12, 14 }, { -2, -3, -39, 3, 10, 29 },   { -3, -2, -39, 10, 3, 29 },   { -6, -10, -28, 12, 20, 14 },
900         { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },  { -10, -6, -49, 5, 12, 34 },
901         { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },    { -2, 4, -39, 3, 10, 29 },
902         { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },  { -13, -6, -39, 20, 5, 24 },
903         { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 }, { -6, -15, -28, 12, 10, 14 },
904         { -10, -6, -39, 4, 12, 24 },  { -2, 4, -10, 3, 10, 24 },    { -3, -6, -39, 10, 5, 24 },   { -6, -15, -10, 12, 10, 14 },
905         { -10, -6, -28, 3, 12, 14 },  { -6, 0, -10, 3, 10, 24 },    { -3, -6, -28, 10, 5, 14 },   { -6, -15, -10, 12, 10, 14 },
906         { -10, -6, -44, 20, 12, 7 },  { -6, 0, -5, 12, 10, 7 },     { 0, -6, -34, 10, 12, 7 },    { -6, -15, -5, 12, 10, 7 },
907         { -10, -6, 5, 20, 12, 7 },    { -6, 0, 5, 12, 10, 7 },      { 0, -6, 5, 10, 12, 7 },      { -6, -10, 5, 12, 10, 7 },
908         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
909         { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },    { -10, -6, 5, 20, 12, 7 },    { -6, -10, 5, 12, 20, 7 },
910         { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },  { -8, -8, -28, 16, 16, 14 },
911     },
912     {
913         // 0x0099273C:
914         { -6, -6, 0, 12, 12, 31 },
915         { -6, -6, 0, 12, 12, 31 },
916         { -6, -6, 0, 12, 12, 31 },
917         { -6, -6, 0, 12, 12, 31 },
918         { -6, -6, 0, 12, 12, 31 },
919         { -6, -6, 0, 12, 12, 31 },
920         { -6, -6, 0, 12, 12, 31 },
921         { -6, -6, 0, 12, 12, 31 },
922         { -6, -6, 0, 12, 12, 31 },
923         { -6, -6, 0, 12, 12, 31 },
924         { -6, -6, 0, 12, 12, 31 },
925         { -6, -6, 0, 12, 12, 31 },
926         { -6, -6, 0, 12, 12, 31 },
927         { -6, -6, 0, 12, 12, 31 },
928         { -6, -6, 0, 12, 12, 31 },
929         { -6, -6, 0, 12, 12, 31 },
930     }
931 };
932 
933 // 6D5214
vehicle_sprite_paint(paint_session * session,const Vehicle * vehicle,int32_t ebx,int32_t ecx,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)934 static void vehicle_sprite_paint(
935     paint_session* session, const Vehicle* vehicle, int32_t ebx, int32_t ecx, int32_t z,
936     const rct_ride_entry_vehicle* vehicleEntry)
937 {
938     int32_t baseImage_id = ebx;
939     if (vehicleEntry->draw_order >= std::size(VehicleBoundboxes))
940     {
941         return;
942     }
943     vehicle_boundbox bb = VehicleBoundboxes[vehicleEntry->draw_order][ecx];
944 
945     if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES)
946     {
947         baseImage_id += (vehicle->spin_sprite / 8) & 31;
948     }
949     if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_VEHICLE_ANIMATION)
950     {
951         baseImage_id += vehicle->animation_frame;
952     }
953     int32_t image_id = baseImage_id | (vehicle->colours.body_colour << 19) | (vehicle->colours.trim_colour << 24)
954         | IMAGE_TYPE_REMAP_2_PLUS;
955 
956     if (vehicle->IsGhost())
957     {
958         image_id &= 0x7FFFF;
959         image_id |= CONSTRUCTION_MARKER;
960     }
961     paint_struct* ps = PaintAddImageAsParent(
962         session, image_id, { 0, 0, z }, { bb.length_x, bb.length_y, bb.length_z },
963         { bb.offset_x, bb.offset_y, bb.offset_z + z });
964     if (ps != nullptr)
965     {
966         ps->tertiary_colour = vehicle->colours_extended;
967     }
968     rct_drawpixelinfo* dpi = &session->DPI;
969     if (dpi->zoom_level < 2 && vehicle->num_peeps > 0 && vehicleEntry->no_seating_rows > 0)
970     {
971         baseImage_id += vehicleEntry->no_vehicle_images;
972         for (int32_t i = 0; i < 8; i++)
973         {
974             if (vehicle->num_peeps > (i * 2) && vehicleEntry->no_seating_rows > i)
975             {
976                 image_id = baseImage_id
977                     | SPRITE_ID_PALETTE_COLOUR_2(
978                                vehicle->peep_tshirt_colours[i * 2], vehicle->peep_tshirt_colours[(i * 2) + 1]);
979                 if (i == 0 && vehicleEntry->flags & VEHICLE_ENTRY_FLAG_RIDER_ANIMATION)
980                 {
981                     image_id += (vehicleEntry->no_vehicle_images * vehicle->animation_frame);
982                 }
983 
984                 if (vehicle->IsGhost())
985                 {
986                     image_id &= 0x7FFFF;
987                     image_id |= CONSTRUCTION_MARKER;
988                 }
989 
990                 PaintAddImageAsChild(
991                     session, image_id, 0, 0, bb.length_x, bb.length_y, bb.length_z, z, bb.offset_x, bb.offset_y,
992                     bb.offset_z + z);
993                 baseImage_id += vehicleEntry->no_vehicle_images;
994             }
995         }
996     }
997     vehicle_visual_splash_effect(session, z, vehicle, vehicleEntry);
998 }
999 
1000 // 6D520E
vehicle_sprite_paint_6D520E(paint_session * session,const Vehicle * vehicle,int32_t ebx,int32_t ecx,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1001 static void vehicle_sprite_paint_6D520E(
1002     paint_session* session, const Vehicle* vehicle, int32_t ebx, int32_t ecx, int32_t z,
1003     const rct_ride_entry_vehicle* vehicleEntry)
1004 {
1005     vehicle_sprite_paint(session, vehicle, ebx + vehicle->SwingSprite, ecx, z, vehicleEntry);
1006 }
1007 
1008 // 6D51EB
vehicle_sprite_paint_6D51EB(paint_session * session,const Vehicle * vehicle,int32_t ebx,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1009 static void vehicle_sprite_paint_6D51EB(
1010     paint_session* session, const Vehicle* vehicle, int32_t ebx, int32_t z, const rct_ride_entry_vehicle* vehicleEntry)
1011 {
1012     int32_t ecx = ebx / 2;
1013     if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES)
1014     {
1015         ebx = ebx / 2;
1016     }
1017     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_USE_4_ROTATION_FRAMES)
1018     {
1019         ebx = ebx / 8;
1020     }
1021     ebx = (ebx * vehicleEntry->base_num_frames) + vehicle->SwingSprite + vehicleEntry->base_image_id;
1022     vehicle_sprite_paint(session, vehicle, ebx, ecx, z, vehicleEntry);
1023 }
1024 
1025 // 6D51DE
vehicle_sprite_paint_6D51DE(paint_session * session,const Vehicle * vehicle,int32_t ebx,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1026 static void vehicle_sprite_paint_6D51DE(
1027     paint_session* session, const Vehicle* vehicle, int32_t ebx, int32_t z, const rct_ride_entry_vehicle* vehicleEntry)
1028 {
1029     if (vehicle->restraints_position < 64)
1030     {
1031         vehicle_sprite_paint_6D51EB(session, vehicle, ebx, z, vehicleEntry);
1032         return;
1033     }
1034     if (!(vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION))
1035     {
1036         vehicle_sprite_paint_6D51EB(session, vehicle, ebx, z, vehicleEntry);
1037         return;
1038     }
1039     if (ebx & 7)
1040     {
1041         vehicle_sprite_paint_6D51EB(session, vehicle, ebx, z, vehicleEntry);
1042         return;
1043     }
1044     int32_t ecx = ebx / 2;
1045     ebx = ebx / 8;
1046     ebx += ((vehicle->restraints_position - 64) / 64) * 4;
1047     ebx *= vehicleEntry->base_num_frames;
1048     ebx += vehicleEntry->restraint_image_id;
1049     vehicle_sprite_paint(session, vehicle, ebx, ecx, z, vehicleEntry);
1050 }
1051 
1052 // 6D51DE
vehicle_sprite_0_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1053 static void vehicle_sprite_0_0(
1054     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1055     const rct_ride_entry_vehicle* vehicleEntry)
1056 {
1057     vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1058 }
1059 
1060 // 6D4EE7
vehicle_sprite_0_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1061 static void vehicle_sprite_0_1(
1062     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1063     const rct_ride_entry_vehicle* vehicleEntry)
1064 {
1065     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1066     {
1067         int32_t ecx = imageDirection / 2;
1068         int32_t ebx = ((imageDirection / 4) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1069         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1070     }
1071     else
1072     {
1073         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1074     }
1075 }
1076 
1077 // 6D4F34
vehicle_sprite_0_2(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1078 static void vehicle_sprite_0_2(
1079     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1080     const rct_ride_entry_vehicle* vehicleEntry)
1081 {
1082     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1083     {
1084         int32_t ecx = (imageDirection / 2) + 108;
1085         int32_t ebx = ((imageDirection + 16) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1086         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1087     }
1088     else
1089     {
1090         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1091     }
1092 }
1093 
1094 // 6D4F0C
vehicle_sprite_0_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1095 static void vehicle_sprite_0_3(
1096     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1097     const rct_ride_entry_vehicle* vehicleEntry)
1098 {
1099     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1100     {
1101         int32_t ecx = imageDirection / 2;
1102         int32_t ebx = (((imageDirection / 4) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1103         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1104     }
1105     else
1106     {
1107         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1108     }
1109 }
1110 
1111 // 6D4F5C
vehicle_sprite_0_4(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1112 static void vehicle_sprite_0_4(
1113     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1114     const rct_ride_entry_vehicle* vehicleEntry)
1115 {
1116     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1117     {
1118         int32_t ecx = ((imageDirection / 2) ^ 8) + 108;
1119         int32_t ebx = ((imageDirection + 48) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1120         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1121     }
1122     else
1123     {
1124         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1125     }
1126 }
1127 
1128 // 6D4F84
vehicle_sprite_0_5(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1129 static void vehicle_sprite_0_5(
1130     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1131     const rct_ride_entry_vehicle* vehicleEntry)
1132 {
1133     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1134     {
1135         vehicleEntry--;
1136     }
1137     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1138     {
1139         int32_t ecx = (imageDirection / 8) + 124;
1140         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1141         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1142     }
1143     else
1144     {
1145         vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1146     }
1147 }
1148 
1149 // 6D4FE4
vehicle_sprite_0_6(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1150 static void vehicle_sprite_0_6(
1151     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1152     const rct_ride_entry_vehicle* vehicleEntry)
1153 {
1154     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1155     {
1156         vehicleEntry--;
1157     }
1158     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1159     {
1160         int32_t ecx = (imageDirection / 8) + 128;
1161         int32_t ebx = (((imageDirection / 8) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1162         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1163     }
1164     else
1165     {
1166         vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1167     }
1168 }
1169 
1170 // 6D5055
vehicle_sprite_0_7(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1171 static void vehicle_sprite_0_7(
1172     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1173     const rct_ride_entry_vehicle* vehicleEntry)
1174 {
1175     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1176     {
1177         vehicleEntry--;
1178     }
1179     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1180     {
1181         int32_t ecx = (imageDirection / 8) + 132;
1182         int32_t ebx = (((imageDirection / 8) + 16) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1183         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1184     }
1185     else
1186     {
1187         vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1188     }
1189 }
1190 
1191 // 6D50C6
vehicle_sprite_0_8(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1192 static void vehicle_sprite_0_8(
1193     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1194     const rct_ride_entry_vehicle* vehicleEntry)
1195 {
1196     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1197     {
1198         vehicleEntry--;
1199     }
1200     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1201     {
1202         int32_t ecx = (imageDirection / 8) + 136;
1203         int32_t ebx = (((imageDirection / 8) + 24) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1204         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1205     }
1206     else
1207     {
1208         vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1209     }
1210 }
1211 
1212 // 6D5137
vehicle_sprite_0_9(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1213 static void vehicle_sprite_0_9(
1214     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1215     const rct_ride_entry_vehicle* vehicleEntry)
1216 {
1217     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1218     {
1219         vehicleEntry--;
1220     }
1221     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1222     {
1223         int32_t ecx = (imageDirection / 8) + 140;
1224         int32_t ebx = (((imageDirection / 8) + 32) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1225         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1226     }
1227     else
1228     {
1229         vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1230     }
1231 }
1232 
1233 // 6D4FB1
vehicle_sprite_0_10(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1234 static void vehicle_sprite_0_10(
1235     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1236     const rct_ride_entry_vehicle* vehicleEntry)
1237 {
1238     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1239     {
1240         vehicleEntry--;
1241     }
1242     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1243     {
1244         int32_t ecx = ((imageDirection / 8) ^ 2) + 124;
1245         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1246         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1247     }
1248     else
1249     {
1250         vehicle_sprite_0_4(session, vehicle, imageDirection, z, vehicleEntry);
1251     }
1252 }
1253 
1254 // 6D501B
vehicle_sprite_0_11(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1255 static void vehicle_sprite_0_11(
1256     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1257     const rct_ride_entry_vehicle* vehicleEntry)
1258 {
1259     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1260     {
1261         vehicleEntry--;
1262     }
1263     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1264     {
1265         int32_t ecx = ((imageDirection / 8) ^ 2) + 128;
1266         int32_t ebx = (((imageDirection / 8) + 12) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1267         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1268     }
1269     else
1270     {
1271         vehicle_sprite_0_4(session, vehicle, imageDirection, z, vehicleEntry);
1272     }
1273 }
1274 
1275 // 6D508C
vehicle_sprite_0_12(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1276 static void vehicle_sprite_0_12(
1277     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1278     const rct_ride_entry_vehicle* vehicleEntry)
1279 {
1280     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1281     {
1282         vehicleEntry--;
1283     }
1284     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1285     {
1286         int32_t ecx = ((imageDirection / 8) ^ 2) + 132;
1287         int32_t ebx = (((imageDirection / 8) + 20) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1288         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1289     }
1290     else
1291     {
1292         vehicle_sprite_0_4(session, vehicle, imageDirection, z, vehicleEntry);
1293     }
1294 }
1295 
1296 // 6D50FD
vehicle_sprite_0_13(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1297 static void vehicle_sprite_0_13(
1298     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1299     const rct_ride_entry_vehicle* vehicleEntry)
1300 {
1301     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1302     {
1303         vehicleEntry--;
1304     }
1305     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1306     {
1307         int32_t ecx = ((imageDirection / 8) ^ 2) + 136;
1308         int32_t ebx = (((imageDirection / 8) + 28) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1309         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1310     }
1311     else
1312     {
1313         vehicle_sprite_0_4(session, vehicle, imageDirection, z, vehicleEntry);
1314     }
1315 }
1316 
1317 // 6D516E
vehicle_sprite_0_14(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1318 static void vehicle_sprite_0_14(
1319     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1320     const rct_ride_entry_vehicle* vehicleEntry)
1321 {
1322     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
1323     {
1324         vehicleEntry--;
1325     }
1326     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_INLINE_TWISTS)
1327     {
1328         int32_t ecx = ((imageDirection / 8) ^ 2) + 140;
1329         int32_t ebx = (((imageDirection / 8) + 36) * vehicleEntry->base_num_frames) + vehicleEntry->inline_twist_image_id;
1330         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1331     }
1332     else
1333     {
1334         vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1335     }
1336 }
1337 
1338 // 6D4EE4
vehicle_sprite_0_16(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1339 static void vehicle_sprite_0_16(
1340     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1341     const rct_ride_entry_vehicle* vehicleEntry)
1342 {
1343     vehicleEntry--;
1344     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1345     {
1346         int32_t ecx = imageDirection / 2;
1347         int32_t ebx = ((imageDirection / 4) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1348         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1349     }
1350     else
1351     {
1352         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1353     }
1354 }
1355 
1356 // 6D4F31
vehicle_sprite_0_17(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1357 static void vehicle_sprite_0_17(
1358     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1359     const rct_ride_entry_vehicle* vehicleEntry)
1360 {
1361     vehicleEntry--;
1362     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1363     {
1364         int32_t ecx = (imageDirection / 2) + 108;
1365         int32_t ebx = ((imageDirection + 16) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1366         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1367     }
1368     else
1369     {
1370         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1371     }
1372 }
1373 
1374 // 6D4F09
vehicle_sprite_0_18(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1375 static void vehicle_sprite_0_18(
1376     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1377     const rct_ride_entry_vehicle* vehicleEntry)
1378 {
1379     vehicleEntry--;
1380     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1381     {
1382         int32_t ecx = imageDirection / 2;
1383         int32_t ebx = (((imageDirection / 4) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1384         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1385     }
1386     else
1387     {
1388         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1389     }
1390 }
1391 
1392 // 6D4F59
vehicle_sprite_0_19(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1393 static void vehicle_sprite_0_19(
1394     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1395     const rct_ride_entry_vehicle* vehicleEntry)
1396 {
1397     vehicleEntry--;
1398     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_BANKED)
1399     {
1400         int32_t ecx = ((imageDirection / 2) ^ 8) + 108;
1401         int32_t ebx = ((imageDirection + 48) * vehicleEntry->base_num_frames) + vehicleEntry->banked_image_id;
1402         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1403     }
1404     else
1405     {
1406         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
1407     }
1408 }
1409 
1410 // 6D51D7
vehicle_sprite_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1411 static void vehicle_sprite_0(
1412     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1413     const rct_ride_entry_vehicle* vehicleEntry)
1414 {
1415     // 0x009A3DE4:
1416     switch (vehicle->bank_rotation)
1417     {
1418         case 0:
1419             vehicle_sprite_0_0(session, vehicle, imageDirection, z, vehicleEntry);
1420             break;
1421         case 1:
1422             vehicle_sprite_0_1(session, vehicle, imageDirection, z, vehicleEntry);
1423             break;
1424         case 2:
1425             vehicle_sprite_0_2(session, vehicle, imageDirection, z, vehicleEntry);
1426             break;
1427         case 3:
1428             vehicle_sprite_0_3(session, vehicle, imageDirection, z, vehicleEntry);
1429             break;
1430         case 4:
1431             vehicle_sprite_0_4(session, vehicle, imageDirection, z, vehicleEntry);
1432             break;
1433         case 5:
1434             vehicle_sprite_0_5(session, vehicle, imageDirection, z, vehicleEntry);
1435             break;
1436         case 6:
1437             vehicle_sprite_0_6(session, vehicle, imageDirection, z, vehicleEntry);
1438             break;
1439         case 7:
1440             vehicle_sprite_0_7(session, vehicle, imageDirection, z, vehicleEntry);
1441             break;
1442         case 8:
1443             vehicle_sprite_0_8(session, vehicle, imageDirection, z, vehicleEntry);
1444             break;
1445         case 9:
1446             vehicle_sprite_0_9(session, vehicle, imageDirection, z, vehicleEntry);
1447             break;
1448         case 10:
1449             vehicle_sprite_0_10(session, vehicle, imageDirection, z, vehicleEntry);
1450             break;
1451         case 11:
1452             vehicle_sprite_0_11(session, vehicle, imageDirection, z, vehicleEntry);
1453             break;
1454         case 12:
1455             vehicle_sprite_0_12(session, vehicle, imageDirection, z, vehicleEntry);
1456             break;
1457         case 13:
1458             vehicle_sprite_0_13(session, vehicle, imageDirection, z, vehicleEntry);
1459             break;
1460         case 14:
1461             vehicle_sprite_0_14(session, vehicle, imageDirection, z, vehicleEntry);
1462             break;
1463         case 15:
1464             vehicle_sprite_0_0(session, vehicle, imageDirection, z, vehicleEntry);
1465             break;
1466         case 16:
1467             vehicle_sprite_0_16(session, vehicle, imageDirection, z, vehicleEntry);
1468             break;
1469         case 17:
1470             vehicle_sprite_0_17(session, vehicle, imageDirection, z, vehicleEntry);
1471             break;
1472         case 18:
1473             vehicle_sprite_0_18(session, vehicle, imageDirection, z, vehicleEntry);
1474             break;
1475         case 19:
1476             vehicle_sprite_0_19(session, vehicle, imageDirection, z, vehicleEntry);
1477             break;
1478     }
1479 }
1480 
1481 // 6D4614
vehicle_sprite_1_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1482 static void vehicle_sprite_1_0(
1483     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1484     const rct_ride_entry_vehicle* vehicleEntry)
1485 {
1486     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPES)
1487     {
1488         int32_t ecx = imageDirection / 2;
1489         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_image_id;
1490         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1491     }
1492     else
1493     {
1494         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
1495     }
1496 }
1497 
1498 // 6D4662
vehicle_sprite_1_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1499 static void vehicle_sprite_1_1(
1500     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1501     const rct_ride_entry_vehicle* vehicleEntry)
1502 {
1503     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS)
1504     {
1505         int32_t ecx = imageDirection / 2;
1506         int32_t ebx = (imageDirection * vehicleEntry->base_num_frames) + vehicleEntry->flat_to_gentle_bank_image_id;
1507         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1508     }
1509     else
1510     {
1511         vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1512     }
1513 }
1514 
1515 // 6D46DB
vehicle_sprite_1_2(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1516 static void vehicle_sprite_1_2(
1517     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1518     const rct_ride_entry_vehicle* vehicleEntry)
1519 {
1520     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS)
1521     {
1522         int32_t ecx = imageDirection / 2;
1523         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames) + vehicleEntry->flat_bank_to_gentle_slope_image_id;
1524         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1525     }
1526     else
1527     {
1528         vehicle_sprite_1_1(session, vehicle, imageDirection, z, vehicleEntry);
1529     }
1530 }
1531 
1532 // 6D467D
vehicle_sprite_1_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1533 static void vehicle_sprite_1_3(
1534     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1535     const rct_ride_entry_vehicle* vehicleEntry)
1536 {
1537     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS)
1538     {
1539         int32_t ecx = imageDirection / 2;
1540         int32_t ebx = ((imageDirection + 32) * vehicleEntry->base_num_frames) + vehicleEntry->flat_to_gentle_bank_image_id;
1541         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1542     }
1543     else
1544     {
1545         vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1546     }
1547 }
1548 
1549 // 6D46FD
vehicle_sprite_1_4(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1550 static void vehicle_sprite_1_4(
1551     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1552     const rct_ride_entry_vehicle* vehicleEntry)
1553 {
1554     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS)
1555     {
1556         int32_t ecx = imageDirection / 2;
1557         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames)
1558             + vehicleEntry->flat_bank_to_gentle_slope_image_id;
1559         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1560     }
1561     else
1562     {
1563         vehicle_sprite_1_3(session, vehicle, imageDirection, z, vehicleEntry);
1564     }
1565 }
1566 
1567 // 6D460D
vehicle_sprite_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1568 static void vehicle_sprite_1(
1569     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1570     const rct_ride_entry_vehicle* vehicleEntry)
1571 {
1572     // 0x009A3C04:
1573     switch (vehicle->bank_rotation)
1574     {
1575         case 0:
1576             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1577             break;
1578         case 1:
1579             vehicle_sprite_1_1(session, vehicle, imageDirection, z, vehicleEntry);
1580             break;
1581         case 2:
1582             vehicle_sprite_1_2(session, vehicle, imageDirection, z, vehicleEntry);
1583             break;
1584         case 3:
1585             vehicle_sprite_1_3(session, vehicle, imageDirection, z, vehicleEntry);
1586             break;
1587         case 4:
1588             vehicle_sprite_1_4(session, vehicle, imageDirection, z, vehicleEntry);
1589             break;
1590         case 5:
1591             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1592             break;
1593         case 6:
1594             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1595             break;
1596         case 7:
1597             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1598             break;
1599         case 8:
1600             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1601             break;
1602         case 9:
1603             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1604             break;
1605         case 10:
1606             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1607             break;
1608         case 11:
1609             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1610             break;
1611         case 12:
1612             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1613             break;
1614         case 13:
1615             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1616             break;
1617         case 14:
1618             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1619             break;
1620         case 15:
1621             vehicle_sprite_1_0(session, vehicle, imageDirection, z, vehicleEntry);
1622             break;
1623         case 16:
1624             vehicle_sprite_1_1(session, vehicle, imageDirection, z, vehicleEntry);
1625             break;
1626         case 17:
1627             vehicle_sprite_1_2(session, vehicle, imageDirection, z, vehicleEntry);
1628             break;
1629         case 18:
1630             vehicle_sprite_1_3(session, vehicle, imageDirection, z, vehicleEntry);
1631             break;
1632         case 19:
1633             vehicle_sprite_1_4(session, vehicle, imageDirection, z, vehicleEntry);
1634             break;
1635     }
1636 }
1637 
1638 // 6D4791
vehicle_sprite_2_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1639 static void vehicle_sprite_2_0(
1640     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1641     const rct_ride_entry_vehicle* vehicleEntry)
1642 {
1643     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPES)
1644     {
1645         if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES)
1646         {
1647             int32_t ecx = (imageDirection / 2) + 16;
1648             int32_t ebx = (((imageDirection / 8) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_image_id;
1649             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1650         }
1651         else
1652         {
1653             int32_t ecx = (imageDirection / 2) + 16;
1654             int32_t ebx = ((imageDirection + 8) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_image_id;
1655             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1656         }
1657     }
1658     else
1659     {
1660         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
1661     }
1662 }
1663 
1664 // 6D4833
vehicle_sprite_2_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1665 static void vehicle_sprite_2_1(
1666     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1667     const rct_ride_entry_vehicle* vehicleEntry)
1668 {
1669     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS)
1670     {
1671         int32_t ecx = (imageDirection / 2) + 16;
1672         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_to_bank_image_id;
1673         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1674     }
1675     else
1676     {
1677         vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1678     }
1679 }
1680 
1681 // 6D48D6
vehicle_sprite_2_2(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1682 static void vehicle_sprite_2_2(
1683     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1684     const rct_ride_entry_vehicle* vehicleEntry)
1685 {
1686     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS)
1687     {
1688         int32_t ecx = imageDirection / 2;
1689         if (vehicleEntry->draw_order < 5)
1690         {
1691             ecx += 108;
1692             int32_t ebx = (imageDirection * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_bank_turn_image_id;
1693             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1694         }
1695         else
1696         {
1697             ecx += 16;
1698             int32_t ebx = (imageDirection * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_bank_turn_image_id;
1699             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1700         }
1701     }
1702     else
1703     {
1704         vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1705     }
1706 }
1707 
1708 // 6D4858
vehicle_sprite_2_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1709 static void vehicle_sprite_2_3(
1710     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1711     const rct_ride_entry_vehicle* vehicleEntry)
1712 {
1713     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS)
1714     {
1715         int32_t ecx = (imageDirection / 2) + 16;
1716         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames)
1717             + vehicleEntry->gentle_slope_to_bank_image_id;
1718         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1719     }
1720     else
1721     {
1722         vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1723     }
1724 }
1725 
1726 // 6D4910
vehicle_sprite_2_4(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1727 static void vehicle_sprite_2_4(
1728     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1729     const rct_ride_entry_vehicle* vehicleEntry)
1730 {
1731     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS)
1732     {
1733         int32_t ecx = imageDirection / 2;
1734         if (vehicleEntry->draw_order < 5)
1735         {
1736             ecx = (ecx ^ 8) + 108;
1737             int32_t ebx = ((imageDirection + 32) * vehicleEntry->base_num_frames)
1738                 + vehicleEntry->gentle_slope_bank_turn_image_id;
1739             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1740         }
1741         else
1742         {
1743             ecx += 16;
1744             int32_t ebx = ((imageDirection + 32) * vehicleEntry->base_num_frames)
1745                 + vehicleEntry->gentle_slope_bank_turn_image_id;
1746             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1747         }
1748     }
1749     else
1750     {
1751         vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1752     }
1753 }
1754 
1755 // 6D476C
vehicle_sprite_2(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1756 static void vehicle_sprite_2(
1757     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1758     const rct_ride_entry_vehicle* vehicleEntry)
1759 {
1760     // 0x009A3CA4:
1761     switch (vehicle->bank_rotation)
1762     {
1763         case 0:
1764             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1765             break;
1766         case 1:
1767             vehicle_sprite_2_1(session, vehicle, imageDirection, z, vehicleEntry);
1768             break;
1769         case 2:
1770             vehicle_sprite_2_2(session, vehicle, imageDirection, z, vehicleEntry);
1771             break;
1772         case 3:
1773             vehicle_sprite_2_3(session, vehicle, imageDirection, z, vehicleEntry);
1774             break;
1775         case 4:
1776             vehicle_sprite_2_4(session, vehicle, imageDirection, z, vehicleEntry);
1777             break;
1778         case 5:
1779             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1780             break;
1781         case 6:
1782             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1783             break;
1784         case 7:
1785             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1786             break;
1787         case 8:
1788             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1789             break;
1790         case 9:
1791             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1792             break;
1793         case 10:
1794             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1795             break;
1796         case 11:
1797             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1798             break;
1799         case 12:
1800             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1801             break;
1802         case 13:
1803             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1804             break;
1805         case 14:
1806             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1807             break;
1808         case 15:
1809             vehicle_sprite_2_0(session, vehicle, imageDirection, z, vehicleEntry);
1810             break;
1811         case 16:
1812             vehicle_sprite_2_1(session, vehicle, imageDirection, z, vehicleEntry);
1813             break;
1814         case 17:
1815             vehicle_sprite_2_2(session, vehicle, imageDirection, z, vehicleEntry);
1816             break;
1817         case 18:
1818             vehicle_sprite_2_3(session, vehicle, imageDirection, z, vehicleEntry);
1819             break;
1820         case 19:
1821             vehicle_sprite_2_4(session, vehicle, imageDirection, z, vehicleEntry);
1822             break;
1823     }
1824 }
1825 
1826 // 6D49DC
vehicle_sprite_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1827 static void vehicle_sprite_3(
1828     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1829     const rct_ride_entry_vehicle* vehicleEntry)
1830 {
1831     if (!(vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_STEEP_SLOPES))
1832     {
1833         vehicle_sprite_2(session, vehicle, imageDirection, z, vehicleEntry);
1834     }
1835     else
1836     {
1837         int32_t ecx = (imageDirection / 4) + 32;
1838         int32_t ebx = ((imageDirection / 4) * vehicleEntry->base_num_frames) + vehicleEntry->steep_slope_image_id;
1839         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1840     }
1841 }
1842 
1843 // 6D4A31
vehicle_sprite_4(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1844 static void vehicle_sprite_4(
1845     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1846     const rct_ride_entry_vehicle* vehicleEntry)
1847 {
1848     if (!(vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_STEEP_SLOPES))
1849     {
1850         vehicle_sprite_2(session, vehicle, imageDirection, z, vehicleEntry);
1851     }
1852     else
1853     {
1854         int32_t ecx = (imageDirection / 2) + 40;
1855         int32_t ebx = ((imageDirection + 16) * vehicleEntry->base_num_frames) + vehicleEntry->steep_slope_image_id;
1856         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1857     }
1858 }
1859 
1860 // 6D463D
vehicle_sprite_5_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1861 static void vehicle_sprite_5_0(
1862     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1863     const rct_ride_entry_vehicle* vehicleEntry)
1864 {
1865     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPES)
1866     {
1867         int32_t ecx = imageDirection / 2;
1868         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_image_id;
1869         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1870     }
1871     else
1872     {
1873         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
1874     }
1875 }
1876 
1877 // 6D469B
vehicle_sprite_5_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1878 static void vehicle_sprite_5_1(
1879     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1880     const rct_ride_entry_vehicle* vehicleEntry)
1881 {
1882     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS)
1883     {
1884         int32_t ecx = imageDirection / 2;
1885         int32_t ebx = ((imageDirection + 64) * vehicleEntry->base_num_frames) + vehicleEntry->flat_to_gentle_bank_image_id;
1886         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1887     }
1888     else
1889     {
1890         vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1891     }
1892 }
1893 
1894 // 6D4722
vehicle_sprite_5_2(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1895 static void vehicle_sprite_5_2(
1896     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1897     const rct_ride_entry_vehicle* vehicleEntry)
1898 {
1899     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS)
1900     {
1901         int32_t ecx = imageDirection / 2;
1902         int32_t ebx = (((imageDirection / 8) + 8) * vehicleEntry->base_num_frames)
1903             + vehicleEntry->flat_bank_to_gentle_slope_image_id;
1904         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1905     }
1906     else
1907     {
1908         vehicle_sprite_5_1(session, vehicle, imageDirection, z, vehicleEntry);
1909     }
1910 }
1911 
1912 // 6D46B9
vehicle_sprite_5_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1913 static void vehicle_sprite_5_3(
1914     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1915     const rct_ride_entry_vehicle* vehicleEntry)
1916 {
1917     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS)
1918     {
1919         int32_t ecx = imageDirection / 2;
1920         int32_t ebx = ((imageDirection + 96) * vehicleEntry->base_num_frames) + vehicleEntry->flat_to_gentle_bank_image_id;
1921         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1922     }
1923     else
1924     {
1925         vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1926     }
1927 }
1928 
1929 // 6D4747
vehicle_sprite_5_4(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1930 static void vehicle_sprite_5_4(
1931     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1932     const rct_ride_entry_vehicle* vehicleEntry)
1933 {
1934     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS)
1935     {
1936         int32_t ecx = imageDirection / 2;
1937         int32_t ebx = (((imageDirection / 8) + 12) * vehicleEntry->base_num_frames)
1938             + vehicleEntry->flat_bank_to_gentle_slope_image_id;
1939         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
1940     }
1941     else
1942     {
1943         vehicle_sprite_5_3(session, vehicle, imageDirection, z, vehicleEntry);
1944     }
1945 }
1946 
1947 // 6D4636
vehicle_sprite_5(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)1948 static void vehicle_sprite_5(
1949     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
1950     const rct_ride_entry_vehicle* vehicleEntry)
1951 {
1952     // 0x009A3C54:
1953     switch (vehicle->bank_rotation)
1954     {
1955         case 0:
1956             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1957             break;
1958         case 1:
1959             vehicle_sprite_5_1(session, vehicle, imageDirection, z, vehicleEntry);
1960             break;
1961         case 2:
1962             vehicle_sprite_5_2(session, vehicle, imageDirection, z, vehicleEntry);
1963             break;
1964         case 3:
1965             vehicle_sprite_5_3(session, vehicle, imageDirection, z, vehicleEntry);
1966             break;
1967         case 4:
1968             vehicle_sprite_5_4(session, vehicle, imageDirection, z, vehicleEntry);
1969             break;
1970         case 5:
1971             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1972             break;
1973         case 6:
1974             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1975             break;
1976         case 7:
1977             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1978             break;
1979         case 8:
1980             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1981             break;
1982         case 9:
1983             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1984             break;
1985         case 10:
1986             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1987             break;
1988         case 11:
1989             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1990             break;
1991         case 12:
1992             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1993             break;
1994         case 13:
1995             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1996             break;
1997         case 14:
1998             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
1999             break;
2000         case 15:
2001             vehicle_sprite_5_0(session, vehicle, imageDirection, z, vehicleEntry);
2002             break;
2003         case 16:
2004             vehicle_sprite_5_1(session, vehicle, imageDirection, z, vehicleEntry);
2005             break;
2006         case 17:
2007             vehicle_sprite_5_2(session, vehicle, imageDirection, z, vehicleEntry);
2008             break;
2009         case 18:
2010             vehicle_sprite_5_3(session, vehicle, imageDirection, z, vehicleEntry);
2011             break;
2012         case 19:
2013             vehicle_sprite_5_4(session, vehicle, imageDirection, z, vehicleEntry);
2014             break;
2015     }
2016 }
2017 
2018 // 6D47E4
vehicle_sprite_6_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2019 static void vehicle_sprite_6_0(
2020     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2021     const rct_ride_entry_vehicle* vehicleEntry)
2022 {
2023     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPES)
2024     {
2025         if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES)
2026         {
2027             int32_t ecx = ((imageDirection / 2) ^ 8) + 16;
2028             int32_t ebx = (((imageDirection / 8) + 12) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_image_id;
2029             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2030         }
2031         else
2032         {
2033             int32_t ecx = ((imageDirection / 2) ^ 8) + 16;
2034             int32_t ebx = ((imageDirection + 40) * vehicleEntry->base_num_frames) + vehicleEntry->gentle_slope_image_id;
2035             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2036         }
2037     }
2038     else
2039     {
2040         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2041     }
2042 }
2043 
2044 // 6D4880
vehicle_sprite_6_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2045 static void vehicle_sprite_6_1(
2046     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2047     const rct_ride_entry_vehicle* vehicleEntry)
2048 {
2049     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS)
2050     {
2051         int32_t ecx = ((imageDirection / 2) ^ 8) + 16;
2052         int32_t ebx = (((imageDirection / 8) + 8) * vehicleEntry->base_num_frames)
2053             + vehicleEntry->gentle_slope_to_bank_image_id;
2054         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2055     }
2056     else
2057     {
2058         vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2059     }
2060 }
2061 
2062 // 6D4953
vehicle_sprite_6_2(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2063 static void vehicle_sprite_6_2(
2064     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2065     const rct_ride_entry_vehicle* vehicleEntry)
2066 {
2067     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS)
2068     {
2069         int32_t ecx = imageDirection / 2;
2070         if (vehicleEntry->draw_order < 5)
2071         {
2072             ecx += 108;
2073             int32_t ebx = ((imageDirection + 64) * vehicleEntry->base_num_frames)
2074                 + vehicleEntry->gentle_slope_bank_turn_image_id;
2075             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2076         }
2077         else
2078         {
2079             ecx = (ecx ^ 8) + 16;
2080             int32_t ebx = ((imageDirection + 64) * vehicleEntry->base_num_frames)
2081                 + vehicleEntry->gentle_slope_bank_turn_image_id;
2082             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2083         }
2084     }
2085     else
2086     {
2087         vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2088     }
2089 }
2090 
2091 // 6D48AB
vehicle_sprite_6_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2092 static void vehicle_sprite_6_3(
2093     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2094     const rct_ride_entry_vehicle* vehicleEntry)
2095 {
2096     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS)
2097     {
2098         int32_t ecx = ((imageDirection / 2) ^ 8) + 16;
2099         int32_t ebx = (((imageDirection / 8) + 12) * vehicleEntry->base_num_frames)
2100             + vehicleEntry->gentle_slope_to_bank_image_id;
2101         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2102     }
2103     else
2104     {
2105         vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2106     }
2107 }
2108 
2109 // 6D4996
vehicle_sprite_6_4(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2110 static void vehicle_sprite_6_4(
2111     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2112     const rct_ride_entry_vehicle* vehicleEntry)
2113 {
2114     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS)
2115     {
2116         int32_t ecx = imageDirection / 2;
2117         if (vehicleEntry->draw_order < 5)
2118         {
2119             ecx = (ecx ^ 8) + 108;
2120             int32_t ebx = ((imageDirection + 96) * vehicleEntry->base_num_frames)
2121                 + vehicleEntry->gentle_slope_bank_turn_image_id;
2122             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2123         }
2124         else
2125         {
2126             ecx = (ecx ^ 8) + 16;
2127             int32_t ebx = ((imageDirection + 96) * vehicleEntry->base_num_frames)
2128                 + vehicleEntry->gentle_slope_bank_turn_image_id;
2129             vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2130         }
2131     }
2132     else
2133     {
2134         vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2135     }
2136 }
2137 
2138 // 6D47DD
vehicle_sprite_6(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2139 static void vehicle_sprite_6(
2140     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2141     const rct_ride_entry_vehicle* vehicleEntry)
2142 {
2143     // 0x009A3CF4:
2144     switch (vehicle->bank_rotation)
2145     {
2146         case 0:
2147             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2148             break;
2149         case 1:
2150             vehicle_sprite_6_1(session, vehicle, imageDirection, z, vehicleEntry);
2151             break;
2152         case 2:
2153             vehicle_sprite_6_2(session, vehicle, imageDirection, z, vehicleEntry);
2154             break;
2155         case 3:
2156             vehicle_sprite_6_3(session, vehicle, imageDirection, z, vehicleEntry);
2157             break;
2158         case 4:
2159             vehicle_sprite_6_4(session, vehicle, imageDirection, z, vehicleEntry);
2160             break;
2161         case 5:
2162             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2163             break;
2164         case 6:
2165             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2166             break;
2167         case 7:
2168             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2169             break;
2170         case 8:
2171             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2172             break;
2173         case 9:
2174             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2175             break;
2176         case 10:
2177             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2178             break;
2179         case 11:
2180             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2181             break;
2182         case 12:
2183             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2184             break;
2185         case 13:
2186             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2187             break;
2188         case 14:
2189             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2190             break;
2191         case 15:
2192             vehicle_sprite_6_0(session, vehicle, imageDirection, z, vehicleEntry);
2193             break;
2194         case 16:
2195             vehicle_sprite_6_1(session, vehicle, imageDirection, z, vehicleEntry);
2196             break;
2197         case 17:
2198             vehicle_sprite_6_2(session, vehicle, imageDirection, z, vehicleEntry);
2199             break;
2200         case 18:
2201             vehicle_sprite_6_3(session, vehicle, imageDirection, z, vehicleEntry);
2202             break;
2203         case 19:
2204             vehicle_sprite_6_4(session, vehicle, imageDirection, z, vehicleEntry);
2205             break;
2206     }
2207 }
2208 
2209 // 6D4A05
vehicle_sprite_7(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2210 static void vehicle_sprite_7(
2211     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2212     const rct_ride_entry_vehicle* vehicleEntry)
2213 {
2214     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_STEEP_SLOPES)
2215     {
2216         int32_t ecx = ((imageDirection / 4) ^ 4) + 32;
2217         int32_t ebx = (((imageDirection / 4) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->steep_slope_image_id;
2218         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2219     }
2220     else
2221     {
2222         vehicle_sprite_6(session, vehicle, imageDirection, z, vehicleEntry);
2223     }
2224 }
2225 
2226 // 6D4A59
vehicle_sprite_8(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2227 static void vehicle_sprite_8(
2228     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2229     const rct_ride_entry_vehicle* vehicleEntry)
2230 {
2231     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_STEEP_SLOPES)
2232     {
2233         int32_t ecx = ((imageDirection / 2) ^ 8) + 40;
2234         int32_t ebx = ((imageDirection + 48) * vehicleEntry->base_num_frames) + vehicleEntry->steep_slope_image_id;
2235         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2236     }
2237     else
2238     {
2239         vehicle_sprite_6(session, vehicle, imageDirection, z, vehicleEntry);
2240     }
2241 }
2242 
2243 // 6D4A81
vehicle_sprite_9(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2244 static void vehicle_sprite_9(
2245     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2246     const rct_ride_entry_vehicle* vehicleEntry)
2247 {
2248     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2249     {
2250         int32_t ecx = (imageDirection / 8) + 56;
2251         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2252         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2253     }
2254     else
2255     {
2256         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2257     }
2258 }
2259 
2260 // 6D4AE8
vehicle_sprite_10(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2261 static void vehicle_sprite_10(
2262     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2263     const rct_ride_entry_vehicle* vehicleEntry)
2264 {
2265     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2266     {
2267         int32_t ecx = (imageDirection / 2) + 60;
2268         int32_t ebx = ((imageDirection + 8) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2269         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2270     }
2271     else
2272     {
2273         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2274     }
2275 }
2276 
2277 // 6D4B57
vehicle_sprite_11(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2278 static void vehicle_sprite_11(
2279     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2280     const rct_ride_entry_vehicle* vehicleEntry)
2281 {
2282     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2283     {
2284         int32_t ecx = (imageDirection / 8) + 76;
2285         int32_t ebx = (((imageDirection / 8) + 72) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2286         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2287     }
2288     else
2289     {
2290         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2291     }
2292 }
2293 
2294 // 6D4BB7
vehicle_sprite_12(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2295 static void vehicle_sprite_12(
2296     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2297     const rct_ride_entry_vehicle* vehicleEntry)
2298 {
2299     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2300     {
2301         int32_t ecx = (imageDirection / 8) + 80;
2302         int32_t ebx = (((imageDirection / 8) + 80) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2303         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2304     }
2305     else
2306     {
2307         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2308     }
2309 }
2310 
2311 // 6D4C17
vehicle_sprite_13(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2312 static void vehicle_sprite_13(
2313     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2314     const rct_ride_entry_vehicle* vehicleEntry)
2315 {
2316     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2317     {
2318         int32_t ecx = (imageDirection / 8) + 84;
2319         int32_t ebx = (((imageDirection / 8) + 88) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2320         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2321     }
2322     else
2323     {
2324         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2325     }
2326 }
2327 
2328 // 6D4C77
vehicle_sprite_14(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2329 static void vehicle_sprite_14(
2330     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2331     const rct_ride_entry_vehicle* vehicleEntry)
2332 {
2333     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2334     {
2335         int32_t ecx = (imageDirection / 8) + 88;
2336         int32_t ebx = (((imageDirection / 8) + 96) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2337         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2338     }
2339     else
2340     {
2341         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2342     }
2343 }
2344 
2345 // 6D4CD7
vehicle_sprite_15(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2346 static void vehicle_sprite_15(
2347     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2348     const rct_ride_entry_vehicle* vehicleEntry)
2349 {
2350     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2351     {
2352         int32_t ecx = (imageDirection / 8) + 92;
2353         int32_t ebx = (((imageDirection / 8) + 104) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2354         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2355     }
2356     else
2357     {
2358         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2359     }
2360 }
2361 
2362 // 6D4D37
vehicle_sprite_16(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2363 static void vehicle_sprite_16(
2364     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2365     const rct_ride_entry_vehicle* vehicleEntry)
2366 {
2367     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2368     {
2369         int32_t ecx = (imageDirection / 8) + 96;
2370         int32_t ebx = (((imageDirection / 8) + 112) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2371         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2372     }
2373     else
2374     {
2375         vehicle_sprite_4(session, vehicle, imageDirection, z, vehicleEntry);
2376     }
2377 }
2378 
2379 // 6D4AA3
vehicle_sprite_17(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2380 static void vehicle_sprite_17(
2381     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2382     const rct_ride_entry_vehicle* vehicleEntry)
2383 {
2384     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2385     {
2386         if (vehicle->GetTrackType() != TrackElemType::Down90ToDown60
2387             && (vehicle->GetTrackType()) != TrackElemType::Down60ToDown90)
2388         {
2389             vehicleEntry--;
2390         }
2391     }
2392     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2393     {
2394         int32_t ecx = ((imageDirection / 8) ^ 2) + 56;
2395         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2396         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2397     }
2398     else
2399     {
2400         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2401     }
2402 }
2403 
2404 // 6D4B0D
vehicle_sprite_18(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2405 static void vehicle_sprite_18(
2406     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2407     const rct_ride_entry_vehicle* vehicleEntry)
2408 {
2409     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2410     {
2411         if (vehicle->GetTrackType() != TrackElemType::Down90 && (vehicle->GetTrackType()) != TrackElemType::Down90ToDown60
2412             && (vehicle->GetTrackType()) != TrackElemType::Down60ToDown90)
2413         {
2414             vehicleEntry--;
2415         }
2416     }
2417     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2418     {
2419         int32_t ecx = ((imageDirection / 2) ^ 8) + 60;
2420         int32_t ebx = ((imageDirection + 40) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2421         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2422     }
2423     else
2424     {
2425         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2426     }
2427 }
2428 
2429 // 6D4B80
vehicle_sprite_19(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2430 static void vehicle_sprite_19(
2431     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2432     const rct_ride_entry_vehicle* vehicleEntry)
2433 {
2434     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2435     {
2436         vehicleEntry--;
2437     }
2438     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2439     {
2440         int32_t ecx = ((imageDirection / 8) ^ 2) + 76;
2441         int32_t ebx = (((imageDirection / 8) + 76) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2442         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2443     }
2444     else
2445     {
2446         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2447     }
2448 }
2449 
2450 // 6D4BE0
vehicle_sprite_20(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2451 static void vehicle_sprite_20(
2452     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2453     const rct_ride_entry_vehicle* vehicleEntry)
2454 {
2455     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2456     {
2457         vehicleEntry--;
2458     }
2459     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2460     {
2461         int32_t ecx = ((imageDirection / 8) ^ 2) + 80;
2462         int32_t ebx = (((imageDirection / 8) + 84) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2463         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2464     }
2465     else
2466     {
2467         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2468     }
2469 }
2470 
2471 // 6D4C40
vehicle_sprite_21(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2472 static void vehicle_sprite_21(
2473     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2474     const rct_ride_entry_vehicle* vehicleEntry)
2475 {
2476     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2477     {
2478         vehicleEntry--;
2479     }
2480     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2481     {
2482         int32_t ecx = ((imageDirection / 8) ^ 2) + 84;
2483         int32_t ebx = (((imageDirection / 8) + 92) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2484         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2485     }
2486     else
2487     {
2488         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2489     }
2490 }
2491 
2492 // 6D4CA0
vehicle_sprite_22(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2493 static void vehicle_sprite_22(
2494     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2495     const rct_ride_entry_vehicle* vehicleEntry)
2496 {
2497     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2498     {
2499         vehicleEntry--;
2500     }
2501     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2502     {
2503         int32_t ecx = ((imageDirection / 8) ^ 2) + 88;
2504         int32_t ebx = (((imageDirection / 8) + 100) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2505         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2506     }
2507     else
2508     {
2509         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2510     }
2511 }
2512 
2513 // 6D4D00
vehicle_sprite_23(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2514 static void vehicle_sprite_23(
2515     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2516     const rct_ride_entry_vehicle* vehicleEntry)
2517 {
2518     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2519     {
2520         vehicleEntry--;
2521     }
2522     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES)
2523     {
2524         int32_t ecx = ((imageDirection / 8) ^ 2) + 92;
2525         int32_t ebx = (((imageDirection / 8) + 108) * vehicleEntry->base_num_frames) + vehicleEntry->vertical_slope_image_id;
2526         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2527     }
2528     else
2529     {
2530         vehicle_sprite_8(session, vehicle, imageDirection, z, vehicleEntry);
2531     }
2532 }
2533 
2534 // 6D51A5
vehicle_sprite_24(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2535 static void vehicle_sprite_24(
2536     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2537     const rct_ride_entry_vehicle* vehicleEntry)
2538 {
2539     if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
2540     {
2541         vehicleEntry--;
2542     }
2543     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_CORKSCREWS)
2544     {
2545         int32_t eax = ((vehicle->Pitch - 24) * 4);
2546         int32_t ecx = (imageDirection / 8) + eax + 144;
2547         int32_t ebx = (((imageDirection / 8) + eax) * vehicleEntry->base_num_frames) + vehicleEntry->corkscrew_image_id;
2548         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2549     }
2550     else
2551     {
2552         vehicle_sprite_paint_6D51DE(session, vehicle, imageDirection, z, vehicleEntry);
2553     }
2554 }
2555 
2556 // 6D4D67
vehicle_sprite_50_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2557 static void vehicle_sprite_50_0(
2558     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2559     const rct_ride_entry_vehicle* vehicleEntry)
2560 {
2561     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES)
2562     {
2563         int32_t ecx = imageDirection / 2;
2564         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames) + vehicleEntry->diagonal_slope_image_id;
2565         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2566     }
2567     else
2568     {
2569         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2570     }
2571 }
2572 
2573 // 6D4DB5
vehicle_sprite_50_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2574 static void vehicle_sprite_50_1(
2575     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2576     const rct_ride_entry_vehicle* vehicleEntry)
2577 {
2578     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS)
2579     {
2580         int32_t ecx = imageDirection / 2;
2581         int32_t ebx = ((imageDirection / 8) * vehicleEntry->base_num_frames)
2582             + vehicleEntry->diagonal_to_gentle_slope_bank_image_id;
2583         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2584     }
2585     else
2586     {
2587         vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2588     }
2589 }
2590 
2591 // 6D4DD3
vehicle_sprite_50_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2592 static void vehicle_sprite_50_3(
2593     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2594     const rct_ride_entry_vehicle* vehicleEntry)
2595 {
2596     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS)
2597     {
2598         int32_t ecx = imageDirection / 2;
2599         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames)
2600             + vehicleEntry->diagonal_to_gentle_slope_bank_image_id;
2601         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2602     }
2603     else
2604     {
2605         vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2606     }
2607 }
2608 
2609 // 6D4D60
vehicle_sprite_50(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2610 static void vehicle_sprite_50(
2611     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2612     const rct_ride_entry_vehicle* vehicleEntry)
2613 {
2614     // 0x009A3D44:
2615     switch (vehicle->bank_rotation)
2616     {
2617         case 0:
2618             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2619             break;
2620         case 1:
2621             vehicle_sprite_50_1(session, vehicle, imageDirection, z, vehicleEntry);
2622             break;
2623         case 2:
2624             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2625             break;
2626         case 3:
2627             vehicle_sprite_50_3(session, vehicle, imageDirection, z, vehicleEntry);
2628             break;
2629         case 4:
2630             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2631             break;
2632         case 5:
2633             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2634             break;
2635         case 6:
2636             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2637             break;
2638         case 7:
2639             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2640             break;
2641         case 8:
2642             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2643             break;
2644         case 9:
2645             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2646             break;
2647         case 10:
2648             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2649             break;
2650         case 11:
2651             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2652             break;
2653         case 12:
2654             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2655             break;
2656         case 13:
2657             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2658             break;
2659         case 14:
2660             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2661             break;
2662         case 15:
2663             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2664             break;
2665         case 16:
2666             vehicle_sprite_50_1(session, vehicle, imageDirection, z, vehicleEntry);
2667             break;
2668         case 17:
2669             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2670             break;
2671         case 18:
2672             vehicle_sprite_50_3(session, vehicle, imageDirection, z, vehicleEntry);
2673             break;
2674         case 19:
2675             vehicle_sprite_50_0(session, vehicle, imageDirection, z, vehicleEntry);
2676             break;
2677     }
2678 }
2679 
2680 // 6D4E3A
vehicle_sprite_51(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2681 static void vehicle_sprite_51(
2682     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2683     const rct_ride_entry_vehicle* vehicleEntry)
2684 {
2685     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES)
2686     {
2687         int32_t ecx = (imageDirection / 8) + 100;
2688         int32_t ebx = (((imageDirection / 8) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->diagonal_slope_image_id;
2689         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2690     }
2691     else
2692     {
2693         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2694     }
2695 }
2696 
2697 // 6D4E8F
vehicle_sprite_52(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2698 static void vehicle_sprite_52(
2699     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2700     const rct_ride_entry_vehicle* vehicleEntry)
2701 {
2702     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES)
2703     {
2704         int32_t ecx = (imageDirection / 8) + 104;
2705         int32_t ebx = (((imageDirection / 8) + 16) * vehicleEntry->base_num_frames) + vehicleEntry->diagonal_slope_image_id;
2706         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2707     }
2708     else
2709     {
2710         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2711     }
2712 }
2713 
2714 // 6D4D90
vehicle_sprite_53_0(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2715 static void vehicle_sprite_53_0(
2716     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2717     const rct_ride_entry_vehicle* vehicleEntry)
2718 {
2719     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES)
2720     {
2721         int32_t ecx = imageDirection / 2;
2722         int32_t ebx = (((imageDirection / 8) + 4) * vehicleEntry->base_num_frames) + vehicleEntry->diagonal_slope_image_id;
2723         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2724     }
2725     else
2726     {
2727         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2728     }
2729 }
2730 
2731 // 6D4DF4
vehicle_sprite_53_1(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2732 static void vehicle_sprite_53_1(
2733     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2734     const rct_ride_entry_vehicle* vehicleEntry)
2735 {
2736     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS)
2737     {
2738         int32_t ecx = imageDirection / 2;
2739         int32_t ebx = (((imageDirection / 8) + 8) * vehicleEntry->base_num_frames)
2740             + vehicleEntry->diagonal_to_gentle_slope_bank_image_id;
2741         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2742     }
2743     else
2744     {
2745         vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2746     }
2747 }
2748 
2749 // 6D4E15
vehicle_sprite_53_3(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2750 static void vehicle_sprite_53_3(
2751     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2752     const rct_ride_entry_vehicle* vehicleEntry)
2753 {
2754     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS)
2755     {
2756         int32_t ecx = imageDirection / 2;
2757         int32_t ebx = (((imageDirection / 8) + 12) * vehicleEntry->base_num_frames)
2758             + vehicleEntry->diagonal_to_gentle_slope_bank_image_id;
2759         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2760     }
2761     else
2762     {
2763         vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2764     }
2765 }
2766 
2767 // 6D4D89
vehicle_sprite_53(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2768 static void vehicle_sprite_53(
2769     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2770     const rct_ride_entry_vehicle* vehicleEntry)
2771 {
2772     // 0x009A3D94:
2773     switch (vehicle->bank_rotation)
2774     {
2775         case 0:
2776             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2777             break;
2778         case 1:
2779             vehicle_sprite_53_1(session, vehicle, imageDirection, z, vehicleEntry);
2780             break;
2781         case 2:
2782             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2783             break;
2784         case 3:
2785             vehicle_sprite_53_3(session, vehicle, imageDirection, z, vehicleEntry);
2786             break;
2787         case 4:
2788             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2789             break;
2790         case 5:
2791             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2792             break;
2793         case 6:
2794             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2795             break;
2796         case 7:
2797             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2798             break;
2799         case 8:
2800             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2801             break;
2802         case 9:
2803             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2804             break;
2805         case 10:
2806             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2807             break;
2808         case 11:
2809             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2810             break;
2811         case 12:
2812             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2813             break;
2814         case 13:
2815             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2816             break;
2817         case 14:
2818             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2819             break;
2820         case 15:
2821             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2822             break;
2823         case 16:
2824             vehicle_sprite_53_1(session, vehicle, imageDirection, z, vehicleEntry);
2825             break;
2826         case 17:
2827             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2828             break;
2829         case 18:
2830             vehicle_sprite_53_3(session, vehicle, imageDirection, z, vehicleEntry);
2831             break;
2832         case 19:
2833             vehicle_sprite_53_0(session, vehicle, imageDirection, z, vehicleEntry);
2834             break;
2835     }
2836 }
2837 
2838 // 6D4E63
vehicle_sprite_54(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2839 static void vehicle_sprite_54(
2840     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2841     const rct_ride_entry_vehicle* vehicleEntry)
2842 {
2843     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES)
2844     {
2845         int32_t ecx = ((imageDirection / 8) ^ 2) + 100;
2846         int32_t ebx = (((imageDirection / 8) + 12) * vehicleEntry->base_num_frames) + vehicleEntry->diagonal_slope_image_id;
2847         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2848     }
2849     else
2850     {
2851         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2852     }
2853 }
2854 
2855 // 6D4EB8
vehicle_sprite_55(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2856 static void vehicle_sprite_55(
2857     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2858     const rct_ride_entry_vehicle* vehicleEntry)
2859 {
2860     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES)
2861     {
2862         int32_t ecx = ((imageDirection / 8) ^ 2) + 104;
2863         int32_t ebx = (((imageDirection / 8) + 20) * vehicleEntry->base_num_frames) + vehicleEntry->diagonal_slope_image_id;
2864         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2865     }
2866     else
2867     {
2868         vehicle_sprite_0(session, vehicle, imageDirection, z, vehicleEntry);
2869     }
2870 }
2871 
2872 // 6D47DA
vehicle_sprite_56(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2873 static void vehicle_sprite_56(
2874     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2875     const rct_ride_entry_vehicle* vehicleEntry)
2876 {
2877     vehicleEntry--;
2878     vehicle_sprite_6(session, vehicle, imageDirection, z, vehicleEntry);
2879 }
2880 
2881 // 6D4A02
vehicle_sprite_57(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2882 static void vehicle_sprite_57(
2883     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2884     const rct_ride_entry_vehicle* vehicleEntry)
2885 {
2886     vehicleEntry--;
2887     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_STEEP_SLOPES)
2888     {
2889         int32_t ecx = ((imageDirection / 4) ^ 4) + 32;
2890         int32_t ebx = (((imageDirection / 4) + 8) * vehicleEntry->base_num_frames) + vehicleEntry->steep_slope_image_id;
2891         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2892     }
2893     else
2894     {
2895         vehicle_sprite_6(session, vehicle, imageDirection, z, vehicleEntry);
2896     }
2897 }
2898 
2899 // 6D4A56
vehicle_sprite_58(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2900 static void vehicle_sprite_58(
2901     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2902     const rct_ride_entry_vehicle* vehicleEntry)
2903 {
2904     vehicleEntry--;
2905     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_STEEP_SLOPES)
2906     {
2907         int32_t ecx = ((imageDirection / 2) ^ 8) + 40;
2908         int32_t ebx = ((imageDirection + 48) * vehicleEntry->base_num_frames) + vehicleEntry->steep_slope_image_id;
2909         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2910     }
2911     else
2912     {
2913         vehicle_sprite_6(session, vehicle, imageDirection, z, vehicleEntry);
2914     }
2915 }
2916 
2917 // 6D4773
vehicle_sprite_59(paint_session * session,const Vehicle * vehicle,int32_t imageDirection,int32_t z,const rct_ride_entry_vehicle * vehicleEntry)2918 static void vehicle_sprite_59(
2919     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2920     const rct_ride_entry_vehicle* vehicleEntry)
2921 {
2922     if (vehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL)
2923     {
2924         int32_t ecx = (imageDirection / 2) + 16;
2925         int32_t ebx = (imageDirection * vehicleEntry->base_num_frames) + vehicleEntry->curved_lift_hill_image_id;
2926         vehicle_sprite_paint_6D520E(session, vehicle, ebx, ecx, z, vehicleEntry);
2927     }
2928     else
2929     {
2930         vehicle_sprite_2(session, vehicle, imageDirection, z, vehicleEntry);
2931     }
2932 }
2933 
2934 // 0x009A3B14:
2935 using vehicle_sprite_func = void (*)(
2936     paint_session* session, const Vehicle* vehicle, int32_t imageDirection, int32_t z,
2937     const rct_ride_entry_vehicle* vehicleEntry);
2938 
2939 // clang-format off
2940 static constexpr const vehicle_sprite_func vehicle_sprite_funcs[] = {
2941     vehicle_sprite_0,
2942     vehicle_sprite_1,
2943     vehicle_sprite_2,
2944     vehicle_sprite_3,
2945     vehicle_sprite_4,
2946     vehicle_sprite_5,
2947     vehicle_sprite_6,
2948     vehicle_sprite_7,
2949     vehicle_sprite_8,
2950     vehicle_sprite_9,
2951     vehicle_sprite_10,
2952     vehicle_sprite_11,
2953     vehicle_sprite_12,
2954     vehicle_sprite_13,
2955     vehicle_sprite_14,
2956     vehicle_sprite_15,
2957     vehicle_sprite_16,
2958     vehicle_sprite_17,
2959     vehicle_sprite_18,
2960     vehicle_sprite_19,
2961     vehicle_sprite_20,
2962     vehicle_sprite_21,
2963     vehicle_sprite_22,
2964     vehicle_sprite_23,
2965     vehicle_sprite_24,
2966     vehicle_sprite_24,
2967     vehicle_sprite_24,
2968     vehicle_sprite_24,
2969     vehicle_sprite_24,
2970     vehicle_sprite_24,
2971     vehicle_sprite_24,
2972     vehicle_sprite_24,
2973     vehicle_sprite_24,
2974     vehicle_sprite_24,
2975     vehicle_sprite_24,
2976     vehicle_sprite_24,
2977     vehicle_sprite_24,
2978     vehicle_sprite_24,
2979     vehicle_sprite_24,
2980     vehicle_sprite_24,
2981     vehicle_sprite_24,
2982     vehicle_sprite_24,
2983     vehicle_sprite_24,
2984     vehicle_sprite_24,
2985     vehicle_sprite_0,
2986     vehicle_sprite_0,
2987     vehicle_sprite_0,
2988     vehicle_sprite_0,
2989     vehicle_sprite_0,
2990     vehicle_sprite_0,
2991     vehicle_sprite_50,
2992     vehicle_sprite_51,
2993     vehicle_sprite_52,
2994     vehicle_sprite_53,
2995     vehicle_sprite_54,
2996     vehicle_sprite_55,
2997     vehicle_sprite_56,
2998     vehicle_sprite_57,
2999     vehicle_sprite_58,
3000     vehicle_sprite_59,
3001 };
3002 // clang-format on
3003 
3004 /**
3005  *
3006  *  rct2: 0x006D5600
3007  */
vehicle_visual_splash1_effect(paint_session * session,int32_t z,const Vehicle * vehicle)3008 static void vehicle_visual_splash1_effect(paint_session* session, int32_t z, const Vehicle* vehicle)
3009 {
3010     if (vehicle->GetTrackType() != TrackElemType::Watersplash)
3011     {
3012         return;
3013     }
3014     if (vehicle->track_progress < 48)
3015     {
3016         return;
3017     }
3018     if (vehicle->track_progress >= 112)
3019     {
3020         return;
3021     }
3022     if (vehicle->TrainHead()->velocity <= 0x50000)
3023     {
3024         return;
3025     }
3026     int32_t image_id = 29014 + ((((vehicle->sprite_direction / 8) + session->CurrentRotation) & 3) * 8)
3027         + ((gCurrentTicks / 2) & 7);
3028     PaintAddImageAsChild(session, image_id, 0, 0, 0, 0, 0, z, 0, 0, z);
3029 }
3030 
3031 /**
3032  *
3033  *  rct2: 0x006D5696
3034  */
vehicle_visual_splash2_effect(paint_session * session,int32_t z,const Vehicle * vehicle)3035 static void vehicle_visual_splash2_effect(paint_session* session, int32_t z, const Vehicle* vehicle)
3036 {
3037     if (vehicle->sprite_direction & 7)
3038     {
3039         return;
3040     }
3041     if (vehicle->Pitch != 0)
3042     {
3043         return;
3044     }
3045     if (vehicle->velocity <= 0x50000)
3046     {
3047         return;
3048     }
3049     int32_t image_id = 29046 + ((((vehicle->sprite_direction / 8) + session->CurrentRotation) & 3) * 8)
3050         + ((gCurrentTicks / 2) & 7);
3051     PaintAddImageAsChild(session, image_id, 0, 0, 0, 0, 0, z, 0, 0, z);
3052 }
3053 
3054 /**
3055  *
3056  *  rct2: 0x006D57EE
3057  */
vehicle_visual_splash3_effect(paint_session * session,int32_t z,const Vehicle * vehicle)3058 static void vehicle_visual_splash3_effect(paint_session* session, int32_t z, const Vehicle* vehicle)
3059 {
3060     if (vehicle->sprite_direction & 7)
3061     {
3062         return;
3063     }
3064     if (vehicle->Pitch != 0)
3065     {
3066         return;
3067     }
3068     if (vehicle->velocity <= 0x50000)
3069     {
3070         return;
3071     }
3072     int32_t image_id = 29014 + ((((vehicle->sprite_direction / 8) + session->CurrentRotation) & 3) * 8)
3073         + ((gCurrentTicks / 2) & 7);
3074     PaintAddImageAsChild(session, image_id, 0, 0, 0, 0, 0, z, 0, 0, z);
3075 }
3076 
3077 /**
3078  *
3079  *  rct2: 0x006D5783
3080  */
vehicle_visual_splash4_effect(paint_session * session,int32_t z,const Vehicle * vehicle)3081 static void vehicle_visual_splash4_effect(paint_session* session, int32_t z, const Vehicle* vehicle)
3082 {
3083     Vehicle* vehicle2 = GetEntity<Vehicle>(vehicle->prev_vehicle_on_ride);
3084     if (vehicle2 == nullptr)
3085     {
3086         return;
3087     }
3088     if (vehicle2->velocity <= 0x50000)
3089     {
3090         return;
3091     }
3092     if (vehicle->sprite_direction & 7)
3093     {
3094         return;
3095     }
3096     if (vehicle->Pitch != 0)
3097     {
3098         return;
3099     }
3100     int32_t image_id = 29078 + ((((vehicle->sprite_direction / 8) + session->CurrentRotation) & 3) * 8)
3101         + ((gCurrentTicks / 2) & 7);
3102     PaintAddImageAsChild(session, image_id, 0, 0, 1, 1, 0, z, 0, 0, z);
3103 }
3104 
3105 /**
3106  *
3107  *  rct2: 0x006D5701
3108  */
vehicle_visual_splash5_effect(paint_session * session,int32_t z,const Vehicle * vehicle)3109 static void vehicle_visual_splash5_effect(paint_session* session, int32_t z, const Vehicle* vehicle)
3110 {
3111     Vehicle* vehicle2 = GetEntity<Vehicle>(vehicle->prev_vehicle_on_ride);
3112     if (vehicle2 == nullptr)
3113     {
3114         return;
3115     }
3116     if (vehicle2->velocity <= 0x50000)
3117     {
3118         return;
3119     }
3120     if (vehicle->sprite_direction & 7)
3121     {
3122         return;
3123     }
3124     if (vehicle->Pitch != 0)
3125     {
3126         return;
3127     }
3128     if (!track_element_is_covered(vehicle->GetTrackType()))
3129     {
3130         return;
3131     }
3132     int32_t image_id = 29078 + ((((vehicle->sprite_direction / 8) + session->CurrentRotation) & 3) * 8)
3133         + ((gCurrentTicks / 2) & 7);
3134     PaintAddImageAsChild(session, image_id, 0, 0, 1, 1, 0, z, 0, 0, z);
3135 }
3136 
vehicle_visual_splash_effect(paint_session * session,int32_t z,const Vehicle * vehicle,const rct_ride_entry_vehicle * vehicleEntry)3137 void vehicle_visual_splash_effect(
3138     paint_session* session, int32_t z, const Vehicle* vehicle, const rct_ride_entry_vehicle* vehicleEntry)
3139 {
3140     switch (vehicleEntry->effect_visual)
3141     {
3142         case VEHICLE_VISUAL_SPLASH1_EFFECT:
3143             vehicle_visual_splash1_effect(session, z, vehicle);
3144             break;
3145         case VEHICLE_VISUAL_SPLASH2_EFFECT:
3146             vehicle_visual_splash2_effect(session, z, vehicle);
3147             break;
3148         case VEHICLE_VISUAL_SPLASH3_EFFECT:
3149             vehicle_visual_splash3_effect(session, z, vehicle);
3150             break;
3151         case VEHICLE_VISUAL_SPLASH4_EFFECT:
3152             vehicle_visual_splash4_effect(session, z, vehicle);
3153             break;
3154         case VEHICLE_VISUAL_SPLASH5_EFFECT:
3155             vehicle_visual_splash5_effect(session, z, vehicle);
3156             break;
3157     }
3158 }
3159 
3160 /**
3161  *
3162  *  rct2: 0x006D45F8
3163  */
vehicle_visual_default(paint_session * session,int32_t imageDirection,int32_t z,const Vehicle * vehicle,const rct_ride_entry_vehicle * vehicleEntry)3164 void vehicle_visual_default(
3165     paint_session* session, int32_t imageDirection, int32_t z, const Vehicle* vehicle,
3166     const rct_ride_entry_vehicle* vehicleEntry)
3167 {
3168     if (vehicle->Pitch < std::size(vehicle_sprite_funcs))
3169     {
3170         vehicle_sprite_funcs[vehicle->Pitch](session, vehicle, imageDirection, z, vehicleEntry);
3171     }
3172 }
3173 
3174 /**
3175  *
3176  *  rct2: 0x006D4244
3177  */
PaintEntity(paint_session * session,const Vehicle * vehicle,int32_t imageDirection)3178 template<> void PaintEntity(paint_session* session, const Vehicle* vehicle, int32_t imageDirection)
3179 {
3180     const rct_ride_entry_vehicle* vehicleEntry;
3181 
3182     int32_t x = vehicle->x;
3183     int32_t y = vehicle->y;
3184     int32_t z = vehicle->z;
3185 
3186     if (vehicle->IsCrashedVehicle)
3187     {
3188         uint32_t ebx = 22965 + vehicle->animation_frame;
3189         PaintAddImageAsParent(session, ebx, { 0, 0, z }, { 1, 1, 0 }, { 0, 0, z + 2 });
3190         return;
3191     }
3192 
3193     if (vehicle->ride_subtype == OBJECT_ENTRY_INDEX_NULL)
3194     {
3195         vehicleEntry = &CableLiftVehicle;
3196     }
3197     else
3198     {
3199         auto rideEntry = vehicle->GetRideEntry();
3200         if (rideEntry == nullptr)
3201         {
3202             return;
3203         }
3204 
3205         auto vehicleEntryIndex = vehicle->vehicle_type;
3206         if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES))
3207         {
3208             vehicleEntryIndex++;
3209             z += 16;
3210         }
3211 
3212         if (vehicleEntryIndex >= std::size(rideEntry->vehicles))
3213         {
3214             return;
3215         }
3216         vehicleEntry = &rideEntry->vehicles[vehicleEntryIndex];
3217     }
3218 
3219     switch (vehicleEntry->car_visual)
3220     {
3221         case VEHICLE_VISUAL_DEFAULT:
3222             vehicle_visual_default(session, imageDirection, z, vehicle, vehicleEntry);
3223             break;
3224         case VEHICLE_VISUAL_LAUNCHED_FREEFALL:
3225             vehicle_visual_launched_freefall(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3226             break;
3227         case VEHICLE_VISUAL_OBSERVATION_TOWER:
3228             vehicle_visual_observation_tower(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3229             break;
3230         case VEHICLE_VISUAL_RIVER_RAPIDS:
3231             vehicle_visual_river_rapids(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3232             break;
3233         case VEHICLE_VISUAL_MINI_GOLF_PLAYER:
3234             vehicle_visual_mini_golf_player(session, x, imageDirection, y, z, vehicle);
3235             break;
3236         case VEHICLE_VISUAL_MINI_GOLF_BALL:
3237             vehicle_visual_mini_golf_ball(session, x, imageDirection, y, z, vehicle);
3238             break;
3239         case VEHICLE_VISUAL_REVERSER:
3240             vehicle_visual_reverser(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3241             break;
3242         case VEHICLE_VISUAL_SPLASH_BOATS_OR_WATER_COASTER:
3243             vehicle_visual_splash_boats_or_water_coaster(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3244             break;
3245         case VEHICLE_VISUAL_ROTO_DROP:
3246             vehicle_visual_roto_drop(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3247             break;
3248         case VEHICLE_VISUAL_VIRGINIA_REEL:
3249             vehicle_visual_virginia_reel(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3250             break;
3251         case VEHICLE_VISUAL_SUBMARINE:
3252             vehicle_visual_submarine(session, x, imageDirection, y, z, vehicle, vehicleEntry);
3253             break;
3254     }
3255 }
3256