10#define ROP_DPSoon(D,S,P) (~((D)|((P)|(S))))
11#define ROP_DPSona(D,S,P) ((D)&(~((P)|(S))))
12#define ROP_PSon(D,S,P) (~((P)|(S)))
13#define ROP_SDPona(D,S,P) ((S)&(~((D)|(P))))
14#define ROP_DPon(D,S,P) (~((D)|(P)))
15#define ROP_PDSxnon(D,S,P) (~((P)|(~((D)^(S)))))
16#define ROP_PDSaon(D,S,P) (~((P)|((D)&(S))))
17#define ROP_SDPnaa(D,S,P) ((S)&((D)&(~(P))))
18#define ROP_PDSxon(D,S,P) (~((P)|((D)^(S))))
19#define ROP_DPna(D,S,P) ((D)&(~(P)))
20#define ROP_PSDnaon(D,S,P) (~((P)|((S)&(~(D)))))
21#define ROP_SPna(D,S,P) ((S)&(~(P)))
22#define ROP_PDSnaon(D,S,P) (~((P)|((D)&(~(S)))))
23#define ROP_PDSonon(D,S,P) (~((P)|(~((D)|(S)))))
24#define ROP_Pn(D,S,P) (~(P))
25#define ROP_PDSona(D,S,P) ((P)&(~((D)|(S))))
26#define ROP_DSon(D,S,P) (~((D)|(S)))
27#define ROP_SDPxnon(D,S,P) (~((S)|(~((D)^(P)))))
28#define ROP_SDPaon(D,S,P) (~((S)|((D)&(P))))
29#define ROP_DPSxnon(D,S,P) (~((D)|(~((P)^(S)))))
30#define ROP_DPSaon(D,S,P) (~((D)|((P)&(S))))
31#define ROP_PSDPSanaxx(D,S,P) ((P)^((S)^((D)&(~((P)&(S))))))
32#define ROP_SSPxDSxaxn(D,S,P) (~((S)^(((S)^(P))&((D)^(S)))))
33#define ROP_SPxPDxa(D,S,P) (((S)^(P))&((P)^(D)))
34#define ROP_SDPSanaxn(D,S,P) (~((S)^((D)&(~((P)&(S))))))
35#define ROP_PDSPaox(D,S,P) ((P)^((D)|((S)&(P))))
36#define ROP_SDPSxaxn(D,S,P) (~((S)^((D)&((P)^(S)))))
37#define ROP_PSDPaox(D,S,P) ((P)^((S)|((D)&(P))))
38#define ROP_DSPDxaxn(D,S,P) (~((D)^((S)&((P)^(D)))))
39#define ROP_PDSox(D,S,P) ((P)^((D)|(S)))
40#define ROP_PDSoan(D,S,P) (~((P)&((D)|(S))))
41#define ROP_DPSnaa(D,S,P) ((D)&((P)&(~(S))))
42#define ROP_SDPxon(D,S,P) (~((S)|((D)^(P))))
43#define ROP_DSna(D,S,P) ((D)&(~(S)))
44#define ROP_SPDnaon(D,S,P) (~((S)|((P)&(~(D)))))
45#define ROP_SPxDSxa(D,S,P) (((S)^(P))&((D)^(S)))
46#define ROP_PDSPanaxn(D,S,P) (~((P)^((D)&(~((S)&(P))))))
47#define ROP_SDPSaox(D,S,P) ((S)^((D)|((P)&(S))))
48#define ROP_SDPSxnox(D,S,P) ((S)^((D)|(~((P)^(S)))))
49#define ROP_DPSxa(D,S,P) ((D)&((P)^(S)))
50#define ROP_PSDPSaoxxn(D,S,P) (~((P)^((S)^((D)|((P)&(S))))))
51#define ROP_DPSana(D,S,P) ((D)&(~((P)&(S))))
52#define ROP_SSPxPDxaxn(D,S,P) (~((S)^(((S)^(P))&((P)^(D)))))
53#define ROP_SPDSoax(D,S,P) ((S)^((P)&((D)|(S))))
54#define ROP_PSDnox(D,S,P) ((P)^((S)|(~(D))))
55#define ROP_PSDPxox(D,S,P) ((P)^((S)|((D)^(P))))
56#define ROP_PSDnoan(D,S,P) (~((P)&((S)|(~(D)))))
57#define ROP_PSna(D,S,P) ((P)&(~(S)))
58#define ROP_SDPnaon(D,S,P) (~((S)|((D)&(~(P)))))
59#define ROP_SDPSoox(D,S,P) ((S)^((D)|((P)|(S))))
60#define ROP_Sn(D,S,P) (~(S))
61#define ROP_SPDSaox(D,S,P) ((S)^((P)|((D)&(S))))
62#define ROP_SPDSxnox(D,S,P) ((S)^((P)|(~((D)^(S)))))
63#define ROP_SDPox(D,S,P) ((S)^((D)|(P)))
64#define ROP_SDPoan(D,S,P) (~((S)&((D)|(P))))
65#define ROP_PSDPoax(D,S,P) ((P)^((S)&((D)|(P))))
66#define ROP_SPDnox(D,S,P) ((S)^((P)|(~(D))))
67#define ROP_SPDSxox(D,S,P) ((S)^((P)|((D)^(S))))
68#define ROP_SPDnoan(D,S,P) (~((S)&((P)|(~(D)))))
69#define ROP_PSx(D,S,P) ((P)^(S))
70#define ROP_SPDSonox(D,S,P) ((S)^((P)|(~((D)|(S)))))
71#define ROP_SPDSnaox(D,S,P) ((S)^((P)|((D)&(~(S)))))
72#define ROP_PSan(D,S,P) (~((P)&(S)))
73#define ROP_PSDnaa(D,S,P) ((P)&((S)&(~(D))))
74#define ROP_DPSxon(D,S,P) (~((D)|((P)^(S))))
75#define ROP_SDxPDxa(D,S,P) (((S)^(D))&((P)^(D)))
76#define ROP_SPDSanaxn(D,S,P) (~((S)^((P)&(~((D)&(S))))))
77#define ROP_SDna(D,S,P) ((S)&(~(D)))
78#define ROP_DPSnaon(D,S,P) (~((D)|((P)&(~(S)))))
79#define ROP_DSPDaox(D,S,P) ((D)^((S)|((P)&(D))))
80#define ROP_PSDPxaxn(D,S,P) (~((P)^((S)&((D)^(P)))))
81#define ROP_SDPxa(D,S,P) ((S)&((D)^(P)))
82#define ROP_PDSPDaoxxn(D,S,P) (~((P)^((D)^((S)|((P)&(D))))))
83#define ROP_DPSDoax(D,S,P) ((D)^((P)&((S)|(D))))
84#define ROP_PDSnox(D,S,P) ((P)^((D)|(~(S))))
85#define ROP_SDPana(D,S,P) ((S)&(~((D)&(P))))
86#define ROP_SSPxDSxoxn(D,S,P) (~((S)^(((S)^(P))|((D)^(S)))))
87#define ROP_PDSPxox(D,S,P) ((P)^((D)|((S)^(P))))
88#define ROP_PDSnoan(D,S,P) (~((P)&((D)|(~(S)))))
89#define ROP_PDna(D,S,P) ((P)&(~(D)))
90#define ROP_DSPnaon(D,S,P) (~((D)|((S)&(~(P)))))
91#define ROP_DPSDaox(D,S,P) ((D)^((P)|((S)&(D))))
92#define ROP_SPDSxaxn(D,S,P) (~((S)^((P)&((D)^(S)))))
93#define ROP_DPSonon(D,S,P) (~((D)|(~((P)|(S)))))
94#define ROP_Dn(D,S,P) (~(D))
95#define ROP_DPSox(D,S,P) ((D)^((P)|(S)))
96#define ROP_DPSoan(D,S,P) (~((D)&((P)|(S))))
97#define ROP_PDSPoax(D,S,P) ((P)^((D)&((S)|(P))))
98#define ROP_DPSnox(D,S,P) ((D)^((P)|(~(S))))
99#define ROP_DPx(D,S,P) ((D)^(P))
100#define ROP_DPSDonox(D,S,P) ((D)^((P)|(~((S)|(D)))))
101#define ROP_DPSDxox(D,S,P) ((D)^((P)|((S)^(D))))
102#define ROP_DPSnoan(D,S,P) (~((D)&((P)|(~(S)))))
103#define ROP_DPSDnaox(D,S,P) ((D)^((P)|((S)&(~(D)))))
104#define ROP_DPan(D,S,P) (~((D)&(P)))
105#define ROP_PDSxa(D,S,P) ((P)&((D)^(S)))
106#define ROP_DSPDSaoxxn(D,S,P) (~((D)^((S)^((P)|((D)&(S))))))
107#define ROP_DSPDoax(D,S,P) ((D)^((S)&((P)|(D))))
108#define ROP_SDPnox(D,S,P) ((S)^((D)|(~(P))))
109#define ROP_SDPSoax(D,S,P) ((S)^((D)&((P)|(S))))
110#define ROP_DSPnox(D,S,P) ((D)^((S)|(~(P))))
111#define ROP_DSx(D,S,P) ((D)^(S))
112#define ROP_SDPSonox(D,S,P) ((S)^((D)|(~((P)|(S)))))
113#define ROP_DSPDSonoxxn(D,S,P) (~((D)^((S)^((P)|(~((D)|(S)))))))
114#define ROP_PDSxxn(D,S,P) (~((P)^((D)^(S))))
115#define ROP_DPSax(D,S,P) ((D)^((P)&(S)))
116#define ROP_PSDPSoaxxn(D,S,P) (~((P)^((S)^((D)&((P)|(S))))))
117#define ROP_SDPax(D,S,P) ((S)^((D)&(P)))
118#define ROP_PDSPDoaxxn(D,S,P) (~((P)^((D)^((S)&((P)|(D))))))
119#define ROP_SDPSnoax(D,S,P) ((S)^((D)&((P)|(~(S)))))
120#define ROP_PDSxnan(D,S,P) (~((P)&(~((D)^(S)))))
121#define ROP_PDSana(D,S,P) ((P)&(~((D)&(S))))
122#define ROP_SSDxPDxaxn(D,S,P) (~((S)^(((S)^(D))&((P)^(D)))))
123#define ROP_SDPSxox(D,S,P) ((S)^((D)|((P)^(S))))
124#define ROP_SDPnoan(D,S,P) (~((S)&((D)|(~(P)))))
125#define ROP_DSPDxox(D,S,P) ((D)^((S)|((P)^(D))))
126#define ROP_DSPnoan(D,S,P) (~((D)&((S)|(~(P)))))
127#define ROP_SDPSnaox(D,S,P) ((S)^((D)|((P)&(~(S)))))
128#define ROP_DSan(D,S,P) (~((D)&(S)))
129#define ROP_PDSax(D,S,P) ((P)^((D)&(S)))
130#define ROP_DSPDSoaxxn(D,S,P) (~((D)^((S)^((P)&((D)|(S))))))
131#define ROP_DPSDnoax(D,S,P) ((D)^((P)&((S)|(~(D)))))
132#define ROP_SDPxnan(D,S,P) (~((S)&(~((D)^(P)))))
133#define ROP_SPDSnoax(D,S,P) ((S)^((P)&((D)|(~(S)))))
134#define ROP_DPSxnan(D,S,P) (~((D)&(~((P)^(S)))))
135#define ROP_SPxDSxo(D,S,P) (((S)^(P))|((D)^(S)))
136#define ROP_DPSaan(D,S,P) (~((D)&((P)&(S))))
137#define ROP_DPSaa(D,S,P) ((D)&((P)&(S)))
138#define ROP_SPxDSxon(D,S,P) (~(((S)^(P))|((D)^(S))))
139#define ROP_DPSxna(D,S,P) ((D)&(~((P)^(S))))
140#define ROP_SPDSnoaxn(D,S,P) (~((S)^((P)&((D)|(~(S))))))
141#define ROP_SDPxna(D,S,P) ((S)&(~((D)^(P))))
142#define ROP_PDSPnoaxn(D,S,P) (~((P)^((D)&((S)|(~(P))))))
143#define ROP_DSPDSoaxx(D,S,P) ((D)^((S)^((P)&((D)|(S)))))
144#define ROP_PDSaxn(D,S,P) (~((P)^((D)&(S))))
145#define ROP_DSa(D,S,P) ((D)&(S))
146#define ROP_SDPSnaoxn(D,S,P) (~((S)^((D)|((P)&(~(S))))))
147#define ROP_DSPnoa(D,S,P) ((D)&((S)|(~(P))))
148#define ROP_DSPDxoxn(D,S,P) (~((D)^((S)|((P)^(D)))))
149#define ROP_SDPnoa(D,S,P) ((S)&((D)|(~(P))))
150#define ROP_SDPSxoxn(D,S,P) (~((S)^((D)|((P)^(S)))))
151#define ROP_SSDxPDxax(D,S,P) ((S)^(((S)^(D))&((P)^(D))))
152#define ROP_PDSanan(D,S,P) (~((P)&(~((D)&(S)))))
153#define ROP_PDSxna(D,S,P) ((P)&(~((D)^(S))))
154#define ROP_SDPSnoaxn(D,S,P) (~((S)^((D)&((P)|(~(S))))))
155#define ROP_DPSDPoaxx(D,S,P) ((D)^((P)^((S)&((D)|(P)))))
156#define ROP_SPDaxn(D,S,P) (~((S)^((P)&(D))))
157#define ROP_PSDPSoaxx(D,S,P) ((P)^((S)^((D)&((P)|(S)))))
158#define ROP_DPSaxn(D,S,P) (~((D)^((P)&(S))))
159#define ROP_DPSxx(D,S,P) ((D)^((P)^(S)))
160#define ROP_PSDPSonoxx(D,S,P) ((P)^((S)^((D)|(~((P)|(S))))))
161#define ROP_SDPSonoxn(D,S,P) (~((S)^((D)|(~((P)|(S))))))
162#define ROP_DSxn(D,S,P) (~((D)^(S)))
163#define ROP_DPSnax(D,S,P) ((D)^((P)&(~(S))))
164#define ROP_SDPSoaxn(D,S,P) (~((S)^((D)&((P)|(S)))))
165#define ROP_SPDnax(D,S,P) ((S)^((P)&(~(D))))
166#define ROP_DSPDoaxn(D,S,P) (~((D)^((S)&((P)|(D)))))
167#define ROP_DSPDSaoxx(D,S,P) ((D)^((S)^((P)|((D)&(S)))))
168#define ROP_PDSxan(D,S,P) (~((P)&((D)^(S))))
169#define ROP_DPa(D,S,P) ((D)&(P))
170#define ROP_PDSPnaoxn(D,S,P) (~((P)^((D)|((S)&(~(P))))))
171#define ROP_DPSnoa(D,S,P) ((D)&((P)|(~(S))))
172#define ROP_DPSDxoxn(D,S,P) (~((D)^((P)|((S)^(D)))))
173#define ROP_PDSPonoxn(D,S,P) (~((P)^((D)|(~((S)|(P))))))
174#define ROP_PDxn(D,S,P) (~((P)^(D)))
175#define ROP_DSPnax(D,S,P) ((D)^((S)&(~(P))))
176#define ROP_PDSPoaxn(D,S,P) (~((P)^((D)&((S)|(P)))))
177#define ROP_DPSoa(D,S,P) ((D)&((P)|(S)))
178#define ROP_DPSoxn(D,S,P) (~((D)^((P)|(S))))
179#define ROP_D(D,S,P) (D)
180#define ROP_DPSono(D,S,P) ((D)|(~((P)|(S))))
181#define ROP_SPDSxax(D,S,P) ((S)^((P)&((D)^(S))))
182#define ROP_DPSDaoxn(D,S,P) (~((D)^((P)|((S)&(D)))))
183#define ROP_DSPnao(D,S,P) ((D)|((S)&(~(P))))
184#define ROP_DPno(D,S,P) ((D)|(~(P)))
185#define ROP_PDSnoa(D,S,P) ((P)&((D)|(~(S))))
186#define ROP_PDSPxoxn(D,S,P) (~((P)^((D)|((S)^(P)))))
187#define ROP_SSPxDSxox(D,S,P) ((S)^(((S)^(P))|((D)^(S))))
188#define ROP_SDPanan(D,S,P) (~((S)&(~((D)&(P)))))
189#define ROP_PSDnax(D,S,P) ((P)^((S)&(~(D))))
190#define ROP_DPSDoaxn(D,S,P) (~((D)^((P)&((S)|(D)))))
191#define ROP_DPSDPaoxx(D,S,P) ((D)^((P)^((S)|((D)&(P)))))
192#define ROP_SDPxan(D,S,P) (~((S)&((D)^(P))))
193#define ROP_PSDPxax(D,S,P) ((P)^((S)&((D)^(P))))
194#define ROP_DSPDaoxn(D,S,P) (~((D)^((S)|((P)&(D)))))
195#define ROP_DPSnao(D,S,P) ((D)|((P)&(~(S))))
196#define ROP_DSno(D,S,P) ((D)|(~(S)))
197#define ROP_SPDSanax(D,S,P) ((S)^((P)&(~((D)&(S)))))
198#define ROP_SDxPDxan(D,S,P) (~(((S)^(D))&((P)^(D))))
199#define ROP_DPSxo(D,S,P) ((D)|((P)^(S)))
200#define ROP_DPSano(D,S,P) ((D)|(~((P)&(S))))
201#define ROP_PSa(D,S,P) ((P)&(S))
202#define ROP_SPDSnaoxn(D,S,P) (~((S)^((P)|((D)&(~(S))))))
203#define ROP_SPDSonoxn(D,S,P) (~((S)^((P)|(~((D)|(S))))))
204#define ROP_PSxn(D,S,P) (~((P)^(S)))
205#define ROP_SPDnoa(D,S,P) ((S)&((P)|(~(D))))
206#define ROP_SPDSxoxn(D,S,P) (~((S)^((P)|((D)^(S)))))
207#define ROP_SDPnax(D,S,P) ((S)^((D)&(~(P))))
208#define ROP_PSDPoaxn(D,S,P) (~((P)^((S)&((D)|(P)))))
209#define ROP_SDPoa(D,S,P) ((S)&((D)|(P)))
210#define ROP_SPDoxn(D,S,P) (~((S)^((P)|(D))))
211#define ROP_DPSDxax(D,S,P) ((D)^((P)&((S)^(D))))
212#define ROP_SPDSaoxn(D,S,P) (~((S)^((P)|((D)&(S)))))
213#define ROP_S(D,S,P) (S)
214#define ROP_SDPono(D,S,P) ((S)|(~((D)|(P))))
215#define ROP_SDPnao(D,S,P) ((S)|((D)&(~(P))))
216#define ROP_SPno(D,S,P) ((S)|(~(P)))
217#define ROP_PSDnoa(D,S,P) ((P)&((S)|(~(D))))
218#define ROP_PSDPxoxn(D,S,P) (~((P)^((S)|((D)^(P)))))
219#define ROP_PDSnax(D,S,P) ((P)^((D)&(~(S))))
220#define ROP_SPDSoaxn(D,S,P) (~((S)^((P)&((D)|(S)))))
221#define ROP_SSPxPDxax(D,S,P) ((S)^(((S)^(P))&((P)^(D))))
222#define ROP_DPSanan(D,S,P) (~((D)&(~((P)&(S)))))
223#define ROP_PSDPSaoxx(D,S,P) ((P)^((S)^((D)|((P)&(S)))))
224#define ROP_DPSxan(D,S,P) (~((D)&((P)^(S))))
225#define ROP_PDSPxax(D,S,P) ((P)^((D)&((S)^(P))))
226#define ROP_SDPSaoxn(D,S,P) (~((S)^((D)|((P)&(S)))))
227#define ROP_DPSDanax(D,S,P) ((D)^((P)&(~((S)&(D)))))
228#define ROP_SPxDSxan(D,S,P) (~(((S)^(P))&((D)^(S))))
229#define ROP_SPDnao(D,S,P) ((S)|((P)&(~(D))))
230#define ROP_SDno(D,S,P) ((S)|(~(D)))
231#define ROP_SDPxo(D,S,P) ((S)|((D)^(P)))
232#define ROP_SDPano(D,S,P) ((S)|(~((D)&(P))))
233#define ROP_PDSoa(D,S,P) ((P)&((D)|(S)))
234#define ROP_PDSoxn(D,S,P) (~((P)^((D)|(S))))
235#define ROP_DSPDxax(D,S,P) ((D)^((S)&((P)^(D))))
236#define ROP_PSDPaoxn(D,S,P) (~((P)^((S)|((D)&(P)))))
237#define ROP_SDPSxax(D,S,P) ((S)^((D)&((P)^(S))))
238#define ROP_PDSPaoxn(D,S,P) (~((P)^((D)|((S)&(P)))))
239#define ROP_SDPSanax(D,S,P) ((S)^((D)&(~((P)&(S)))))
240#define ROP_SPxPDxan(D,S,P) (~(((S)^(P))&((P)^(D))))
241#define ROP_SSPxDSxax(D,S,P) ((S)^(((S)^(P))&((D)^(S))))
242#define ROP_DSPDSanaxxn(D,S,P) (~((D)^((S)^((P)&(~((D)&(S)))))))
243#define ROP_DPSao(D,S,P) ((D)|((P)&(S)))
244#define ROP_DPSxno(D,S,P) ((D)|(~((P)^(S))))
245#define ROP_SDPao(D,S,P) ((S)|((D)&(P)))
246#define ROP_SDPxno(D,S,P) ((S)|(~((D)^(P))))
247#define ROP_DSo(D,S,P) ((D)|(S))
248#define ROP_SDPnoo(D,S,P) ((S)|((D)|(~(P))))
249#define ROP_P(D,S,P) (P)
250#define ROP_PDSono(D,S,P) ((P)|(~((D)|(S))))
251#define ROP_PDSnao(D,S,P) ((P)|((D)&(~(S))))
252#define ROP_PSno(D,S,P) ((P)|(~(S)))
253#define ROP_PSDnao(D,S,P) ((P)|((S)&(~(D))))
254#define ROP_PDno(D,S,P) ((P)|(~(D)))
255#define ROP_PDSxo(D,S,P) ((P)|((D)^(S)))
256#define ROP_PDSano(D,S,P) ((P)|(~((D)&(S))))
257#define ROP_PDSao(D,S,P) ((P)|((D)&(S)))
258#define ROP_PDSxno(D,S,P) ((P)|(~((D)^(S))))
259#define ROP_DPo(D,S,P) ((D)|(P))
260#define ROP_DPSnoo(D,S,P) ((D)|((P)|(~(S))))
261#define ROP_PSo(D,S,P) ((P)|(S))
262#define ROP_PSDnoo(D,S,P) ((P)|((S)|(~(D))))
263#define ROP_DPSoo(D,S,P) ((D)|((P)|(S)))
264#define ROP_1(D,S,P) 1
266#define ROP_BLACKNESS ROP_0
267#define ROP_NOTSRCERASE ROP_DSon
268#define ROP_NOTSRCCOPY ROP_Sn
269#define ROP_SRCERASE ROP_SDna
270#define ROP_DSTINVERT ROP_Dn
271#define ROP_PATINVERT ROP_DPx
272#define ROP_SRCINVERT ROP_DSx
273#define ROP_SRCAND ROP_DSa
274#define ROP_MERGEPAINT ROP_DSno
275#define ROP_MERGECOPY ROP_PSa
276#define ROP_SRCCOPY ROP_S
277#define ROP_SRCPAINT ROP_DSo
278#define ROP_PATCOPY ROP_P
279#define ROP_PATPAINT ROP_DPSnoo
280#define ROP_WHITENESS ROP_1
ULONG(__fastcall * PFN_DOROP)(ULONG D, ULONG S, ULONG P)
const PFN_DOROP gapfnRop[256]