40 Fast486ExtOpcodeGroup0F00,
41 Fast486ExtOpcodeGroup0F01,
44 Fast486ExtOpcodeInvalid,
45 Fast486ExtOpcodeInvalid,
47 Fast486ExtOpcodeInvalid,
48 Fast486ExtOpcodeUnimplemented,
49 Fast486ExtOpcodeUnimplemented,
50 Fast486ExtOpcodeInvalid,
52 Fast486ExtOpcodeInvalid,
53 Fast486ExtOpcodeInvalid,
54 Fast486ExtOpcodeInvalid,
55 Fast486ExtOpcodeInvalid,
56 Fast486ExtOpcodeInvalid,
57 Fast486ExtOpcodeInvalid,
58 Fast486ExtOpcodeInvalid,
59 Fast486ExtOpcodeInvalid,
60 Fast486ExtOpcodeInvalid,
61 Fast486ExtOpcodeInvalid,
62 Fast486ExtOpcodeInvalid,
63 Fast486ExtOpcodeInvalid,
64 Fast486ExtOpcodeInvalid,
65 Fast486ExtOpcodeInvalid,
66 Fast486ExtOpcodeInvalid,
67 Fast486ExtOpcodeInvalid,
68 Fast486ExtOpcodeInvalid,
69 Fast486ExtOpcodeInvalid,
70 Fast486ExtOpcodeInvalid,
71 Fast486ExtOpcodeInvalid,
72 Fast486ExtOpcodeStoreControlReg,
73 Fast486ExtOpcodeStoreDebugReg,
74 Fast486ExtOpcodeLoadControlReg,
75 Fast486ExtOpcodeLoadDebugReg,
76 Fast486ExtOpcodeUnimplemented,
77 Fast486ExtOpcodeInvalid,
78 Fast486ExtOpcodeUnimplemented,
79 Fast486ExtOpcodeInvalid,
80 Fast486ExtOpcodeInvalid,
81 Fast486ExtOpcodeInvalid,
82 Fast486ExtOpcodeInvalid,
83 Fast486ExtOpcodeInvalid,
84 Fast486ExtOpcodeInvalid,
85 Fast486ExtOpcodeInvalid,
86 Fast486ExtOpcodeInvalid,
87 Fast486ExtOpcodeInvalid,
88 Fast486ExtOpcodeInvalid,
89 Fast486ExtOpcodeInvalid,
90 Fast486ExtOpcodeInvalid,
91 Fast486ExtOpcodeInvalid,
92 Fast486ExtOpcodeInvalid,
93 Fast486ExtOpcodeInvalid,
94 Fast486ExtOpcodeInvalid,
95 Fast486ExtOpcodeInvalid,
96 Fast486ExtOpcodeInvalid,
97 Fast486ExtOpcodeInvalid,
98 Fast486ExtOpcodeInvalid,
99 Fast486ExtOpcodeInvalid,
100 Fast486ExtOpcodeInvalid,
101 Fast486ExtOpcodeInvalid,
102 Fast486ExtOpcodeInvalid,
103 Fast486ExtOpcodeInvalid,
104 Fast486ExtOpcodeInvalid,
105 Fast486ExtOpcodeInvalid,
106 Fast486ExtOpcodeInvalid,
107 Fast486ExtOpcodeInvalid,
108 Fast486ExtOpcodeInvalid,
109 Fast486ExtOpcodeInvalid,
110 Fast486ExtOpcodeInvalid,
111 Fast486ExtOpcodeInvalid,
112 Fast486ExtOpcodeInvalid,
113 Fast486ExtOpcodeInvalid,
114 Fast486ExtOpcodeInvalid,
115 Fast486ExtOpcodeInvalid,
116 Fast486ExtOpcodeInvalid,
117 Fast486ExtOpcodeInvalid,
118 Fast486ExtOpcodeInvalid,
119 Fast486ExtOpcodeInvalid,
120 Fast486ExtOpcodeInvalid,
121 Fast486ExtOpcodeInvalid,
122 Fast486ExtOpcodeInvalid,
123 Fast486ExtOpcodeInvalid,
124 Fast486ExtOpcodeInvalid,
125 Fast486ExtOpcodeInvalid,
126 Fast486ExtOpcodeInvalid,
127 Fast486ExtOpcodeInvalid,
128 Fast486ExtOpcodeInvalid,
129 Fast486ExtOpcodeInvalid,
130 Fast486ExtOpcodeInvalid,
131 Fast486ExtOpcodeInvalid,
132 Fast486ExtOpcodeInvalid,
133 Fast486ExtOpcodeInvalid,
134 Fast486ExtOpcodeInvalid,
135 Fast486ExtOpcodeInvalid,
136 Fast486ExtOpcodeInvalid,
137 Fast486ExtOpcodeInvalid,
138 Fast486ExtOpcodeInvalid,
139 Fast486ExtOpcodeInvalid,
140 Fast486ExtOpcodeInvalid,
141 Fast486ExtOpcodeInvalid,
142 Fast486ExtOpcodeInvalid,
143 Fast486ExtOpcodeInvalid,
144 Fast486ExtOpcodeInvalid,
145 Fast486ExtOpcodeInvalid,
146 Fast486ExtOpcodeInvalid,
147 Fast486ExtOpcodeInvalid,
148 Fast486ExtOpcodeInvalid,
149 Fast486ExtOpcodeInvalid,
150 Fast486ExtOpcodeInvalid,
151 Fast486ExtOpcodeInvalid,
152 Fast486ExtOpcodeInvalid,
153 Fast486ExtOpcodeInvalid,
154 Fast486ExtOpcodeInvalid,
155 Fast486ExtOpcodeInvalid,
156 Fast486ExtOpcodeInvalid,
157 Fast486ExtOpcodeInvalid,
158 Fast486ExtOpcodeInvalid,
159 Fast486ExtOpcodeInvalid,
160 Fast486ExtOpcodeInvalid,
161 Fast486ExtOpcodeInvalid,
162 Fast486ExtOpcodeInvalid,
163 Fast486ExtOpcodeInvalid,
164 Fast486ExtOpcodeInvalid,
165 Fast486ExtOpcodeInvalid,
166 Fast486ExtOpcodeInvalid,
167 Fast486ExtOpcodeInvalid,
168 Fast486ExtOpcodeConditionalJmp,
169 Fast486ExtOpcodeConditionalJmp,
170 Fast486ExtOpcodeConditionalJmp,
171 Fast486ExtOpcodeConditionalJmp,
172 Fast486ExtOpcodeConditionalJmp,
173 Fast486ExtOpcodeConditionalJmp,
174 Fast486ExtOpcodeConditionalJmp,
175 Fast486ExtOpcodeConditionalJmp,
176 Fast486ExtOpcodeConditionalJmp,
177 Fast486ExtOpcodeConditionalJmp,
178 Fast486ExtOpcodeConditionalJmp,
179 Fast486ExtOpcodeConditionalJmp,
180 Fast486ExtOpcodeConditionalJmp,
181 Fast486ExtOpcodeConditionalJmp,
182 Fast486ExtOpcodeConditionalJmp,
183 Fast486ExtOpcodeConditionalJmp,
184 Fast486ExtOpcodeConditionalSet,
185 Fast486ExtOpcodeConditionalSet,
186 Fast486ExtOpcodeConditionalSet,
187 Fast486ExtOpcodeConditionalSet,
188 Fast486ExtOpcodeConditionalSet,
189 Fast486ExtOpcodeConditionalSet,
190 Fast486ExtOpcodeConditionalSet,
191 Fast486ExtOpcodeConditionalSet,
192 Fast486ExtOpcodeConditionalSet,
193 Fast486ExtOpcodeConditionalSet,
194 Fast486ExtOpcodeConditionalSet,
195 Fast486ExtOpcodeConditionalSet,
196 Fast486ExtOpcodeConditionalSet,
197 Fast486ExtOpcodeConditionalSet,
198 Fast486ExtOpcodeConditionalSet,
199 Fast486ExtOpcodeConditionalSet,
200 Fast486ExtOpcodePushFs,
201 Fast486ExtOpcodePopFs,
202 Fast486ExtOpcodeInvalid,
203 Fast486ExtOpcodeBitTest,
204 Fast486ExtOpcodeShld,
205 Fast486ExtOpcodeShld,
206 Fast486ExtOpcodeInvalid,
207 Fast486ExtOpcodeInvalid,
208 Fast486ExtOpcodePushGs,
209 Fast486ExtOpcodePopGs,
210 Fast486ExtOpcodeInvalid,
212 Fast486ExtOpcodeShrd,
213 Fast486ExtOpcodeShrd,
214 Fast486ExtOpcodeInvalid,
215 Fast486ExtOpcodeImul,
216 Fast486ExtOpcodeCmpXchgByte,
217 Fast486ExtOpcodeCmpXchg,
220 Fast486ExtOpcodeLfsLgs,
221 Fast486ExtOpcodeLfsLgs,
222 Fast486ExtOpcodeMovzxByte,
223 Fast486ExtOpcodeMovzxWord,
224 Fast486ExtOpcodeInvalid,
225 Fast486ExtOpcodeGroup0FB9,
226 Fast486ExtOpcodeGroup0FBA,
230 Fast486ExtOpcodeMovsxByte,
231 Fast486ExtOpcodeMovsxWord,
232 Fast486ExtOpcodeXaddByte,
233 Fast486ExtOpcodeXadd,
234 Fast486ExtOpcodeInvalid,
235 Fast486ExtOpcodeInvalid,
236 Fast486ExtOpcodeInvalid,
237 Fast486ExtOpcodeInvalid,
238 Fast486ExtOpcodeInvalid,
239 Fast486ExtOpcodeInvalid,
240 Fast486ExtOpcodeBswap,
241 Fast486ExtOpcodeBswap,
242 Fast486ExtOpcodeBswap,
243 Fast486ExtOpcodeBswap,
244 Fast486ExtOpcodeBswap,
245 Fast486ExtOpcodeBswap,
246 Fast486ExtOpcodeBswap,
247 Fast486ExtOpcodeBswap,
248 Fast486ExtOpcodeInvalid,
249 Fast486ExtOpcodeInvalid,
250 Fast486ExtOpcodeInvalid,
251 Fast486ExtOpcodeInvalid,
252 Fast486ExtOpcodeInvalid,
253 Fast486ExtOpcodeInvalid,
254 Fast486ExtOpcodeInvalid,
255 Fast486ExtOpcodeInvalid,
256 Fast486ExtOpcodeInvalid,
257 Fast486ExtOpcodeInvalid,
258 Fast486ExtOpcodeInvalid,
259 Fast486ExtOpcodeInvalid,
260 Fast486ExtOpcodeInvalid,
261 Fast486ExtOpcodeInvalid,
262 Fast486ExtOpcodeInvalid,
263 Fast486ExtOpcodeInvalid,
264 Fast486ExtOpcodeInvalid,
265 Fast486ExtOpcodeInvalid,
266 Fast486ExtOpcodeInvalid,
267 Fast486ExtOpcodeInvalid,
268 Fast486ExtOpcodeInvalid,
269 Fast486ExtOpcodeInvalid,
270 Fast486ExtOpcodeInvalid,
271 Fast486ExtOpcodeInvalid,
272 Fast486ExtOpcodeInvalid,
273 Fast486ExtOpcodeInvalid,
274 Fast486ExtOpcodeInvalid,
275 Fast486ExtOpcodeInvalid,
276 Fast486ExtOpcodeInvalid,
277 Fast486ExtOpcodeInvalid,
278 Fast486ExtOpcodeInvalid,
279 Fast486ExtOpcodeInvalid,
280 Fast486ExtOpcodeInvalid,
281 Fast486ExtOpcodeInvalid,
282 Fast486ExtOpcodeInvalid,
283 Fast486ExtOpcodeInvalid,
284 Fast486ExtOpcodeInvalid,
285 Fast486ExtOpcodeInvalid,
286 Fast486ExtOpcodeInvalid,
287 Fast486ExtOpcodeInvalid,
288 Fast486ExtOpcodeInvalid,
289 Fast486ExtOpcodeInvalid,
290 Fast486ExtOpcodeInvalid,
291 Fast486ExtOpcodeInvalid,
292 Fast486ExtOpcodeInvalid,
293 Fast486ExtOpcodeInvalid,
294 Fast486ExtOpcodeInvalid,
295 Fast486ExtOpcodeInvalid,
302 DPRINT1(
"FAST486 -- Extended opcode 0x%02X is INVALID!\n",
Opcode);
303 Fast486Exception(
State, FAST486_EXCEPTION_UD);
309 DPRINT1(
"FAST486 -- Extended opcode 0x%02X is UNIMPLEMENTED\n",
Opcode);
316 Fast486Exception(
State, FAST486_EXCEPTION_UD);
321 BOOLEAN OperandSize, AddressSize;
325 FAST486_GDT_ENTRY GdtEntry;
328 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
334 Fast486Exception(
State, FAST486_EXCEPTION_UD);
343 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
354 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
365 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &Selector))
372 if (!Fast486ReadDescriptorEntry(
State, Selector, &Valid, &GdtEntry))
386 || (Fast486GetCurrentPrivLevel(
State) > GdtEntry.Dpl))
396 AccessRights = ((
PDWORD)&GdtEntry)[1] & 0x00F0FF00;
399 if (OperandSize) Fast486WriteModrmDwordOperands(
State, &ModRegRm,
TRUE, AccessRights);
400 else Fast486WriteModrmWordOperands(
State, &ModRegRm,
TRUE,
LOWORD(AccessRights));
405 BOOLEAN OperandSize, AddressSize;
410 FAST486_GDT_ENTRY GdtEntry;
412 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
418 Fast486Exception(
State, FAST486_EXCEPTION_UD);
427 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
438 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
449 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &Selector))
456 if (!Fast486ReadDescriptorEntry(
State, Selector, &Valid, &GdtEntry))
470 || (Fast486GetCurrentPrivLevel(
State) > GdtEntry.Dpl))
477 Limit = GdtEntry.Limit | (GdtEntry.LimitHigh << 16);
479 if (GdtEntry.Granularity)
489 if (OperandSize) Fast486WriteModrmDwordOperands(
State, &ModRegRm,
TRUE,
Limit);
498 if (Fast486GetCurrentPrivLevel(
State) != 0)
500 Fast486Exception(
State, FAST486_EXCEPTION_GP);
505 State->ControlRegisters[FAST486_REG_CR0] &= ~FAST486_CR0_TS;
510 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
517 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
524 if (Fast486GetCurrentPrivLevel(
State) != 0)
526 Fast486Exception(
State, FAST486_EXCEPTION_GP);
533 Fast486Exception(
State, FAST486_EXCEPTION_UD);
549 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
556 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
563 if (Fast486GetCurrentPrivLevel(
State) != 0)
565 Fast486Exception(
State, FAST486_EXCEPTION_GP);
578 Fast486Exception(
State, FAST486_EXCEPTION_GP);
589 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
596 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
603 if (Fast486GetCurrentPrivLevel(
State) != 0)
605 Fast486Exception(
State, FAST486_EXCEPTION_GP);
612 Fast486Exception(
State, FAST486_EXCEPTION_UD);
633 Fast486Exception(
State, FAST486_EXCEPTION_GP);
638#ifndef FAST486_NO_PREFETCH
646 Fast486FlushTlb(
State);
655 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
662 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
669 if (Fast486GetCurrentPrivLevel(
State) != 0)
671 Fast486Exception(
State, FAST486_EXCEPTION_GP);
684 Fast486Exception(
State, FAST486_EXCEPTION_GP);
696 else if (ModRegRm.
Register == (
INT)FAST486_REG_DR5)
699 State->DebugRegisters[ModRegRm.
Register] &= ~FAST486_DR5_RESERVED;
706 Fast486StackPush(
State,
State->SegmentRegs[FAST486_REG_FS].Selector);
713 if (!Fast486StackPop(
State, &NewSelector))
720 Fast486LoadSegment(
State, FAST486_REG_FS,
LOWORD(NewSelector));
725 BOOLEAN OperandSize, AddressSize;
730 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
739 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
746 BitNumber = OperandSize ?
State->GeneralRegs[ModRegRm.
Register].Long
766 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
780 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &
Value))
793 BOOLEAN OperandSize, AddressSize;
797 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
805 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
823 Count =
State->GeneralRegs[FAST486_REG_ECX].LowByte;
830 if (
Count == 0)
return;
890 Fast486StackPush(
State,
State->SegmentRegs[FAST486_REG_GS].Selector);
897 if (!Fast486StackPop(
State, &NewSelector))
904 Fast486LoadSegment(
State, FAST486_REG_GS,
LOWORD(NewSelector));
909 BOOLEAN OperandSize, AddressSize;
914 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
923 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
930 BitNumber = OperandSize ?
State->GeneralRegs[ModRegRm.
Register].Long
950 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
960 Value |= 1 << BitNumber;
970 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &
Value))
980 Value |= 1 << BitNumber;
989 BOOLEAN OperandSize, AddressSize;
993 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1001 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1019 Count =
State->GeneralRegs[FAST486_REG_ECX].LowByte;
1026 if (
Count == 0)
return;
1084 BOOLEAN OperandSize, AddressSize;
1087 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1093 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1105 if (!Fast486ReadModrmDwordOperands(
State,
1129 if (!Fast486ReadModrmWordOperands(
State,
1152 UCHAR Accumulator =
State->GeneralRegs[FAST486_REG_EAX].LowByte;
1154 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1159 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1184 if (
State->Flags.Zf)
1199 BOOLEAN OperandSize, AddressSize;
1201 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1207 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1216 ULONG Accumulator =
State->GeneralRegs[FAST486_REG_EAX].Long;
1237 if (
State->Flags.Zf)
1251 USHORT Accumulator =
State->GeneralRegs[FAST486_REG_EAX].LowWord;
1272 if (
State->Flags.Zf)
1287 UCHAR FarPointer[6];
1288 BOOLEAN OperandSize, AddressSize;
1294 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1300 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1309 Fast486Exception(
State, FAST486_EXCEPTION_UD);
1315 ?
State->SegmentOverride : FAST486_REG_DS,
1319 OperandSize ? 6 : 4))
1351 BOOLEAN OperandSize, AddressSize;
1356 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1365 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1372 BitNumber = OperandSize ?
State->GeneralRegs[ModRegRm.
Register].Long
1392 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
1402 Value &= ~(1 << BitNumber);
1412 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &
Value))
1422 Value &= ~(1 << BitNumber);
1431 UCHAR FarPointer[6];
1432 BOOLEAN OperandSize, AddressSize;
1438 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1444 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1453 Fast486Exception(
State, FAST486_EXCEPTION_UD);
1459 ?
State->SegmentOverride : FAST486_REG_DS,
1463 OperandSize ? 6 : 4))
1478 Fast486LoadSegment(
State,
1480 ? FAST486_REG_FS : FAST486_REG_GS,
1492 Fast486LoadSegment(
State,
1494 ? FAST486_REG_FS : FAST486_REG_GS,
1502 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1511 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1518 if (!Fast486ReadModrmByteOperands(
State, &ModRegRm,
NULL, &
Value))
1525 Fast486WriteModrmDwordOperands(
State,
1534 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1543 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1550 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &
Value))
1557 Fast486WriteModrmDwordOperands(
State,
1565 BOOLEAN OperandSize, AddressSize;
1570 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1579 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1586 BitNumber = OperandSize ?
State->GeneralRegs[ModRegRm.
Register].Long
1606 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
1616 Value ^= 1 << BitNumber;
1626 if (!Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &
Value))
1636 Value ^= 1 << BitNumber;
1647 BOOLEAN OperandSize, AddressSize;
1652 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1664 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1673 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
1681 if (!Fast486ReadModrmWordOperands(
State,
1693 if (
State->Flags.Zf)
return;
1708 if (OperandSize) Fast486WriteModrmDwordOperands(
State, &ModRegRm,
TRUE, BitNumber);
1709 else Fast486WriteModrmWordOperands(
State, &ModRegRm,
TRUE,
LOWORD(BitNumber));
1716 BOOLEAN OperandSize, AddressSize;
1721 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1733 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1742 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
1750 if (!Fast486ReadModrmWordOperands(
State,
1762 if (
State->Flags.Zf)
return;
1777 if (OperandSize) Fast486WriteModrmDwordOperands(
State, &ModRegRm,
TRUE, BitNumber);
1778 else Fast486WriteModrmWordOperands(
State, &ModRegRm,
TRUE,
LOWORD(BitNumber));
1784 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1793 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1807 Fast486WriteModrmDwordOperands(
State,
1816 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1825 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1839 Fast486WriteModrmDwordOperands(
State,
1880 switch ((
Opcode & 0x0F) >> 1)
1885 Jump =
State->Flags.Of;
1892 Jump =
State->Flags.Cf;
1899 Jump =
State->Flags.Zf;
1913 Jump =
State->Flags.Sf;
1920 Jump =
State->Flags.Pf;
1955 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1961 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1970 switch ((
Opcode & 0x0F) >> 1)
2043 BOOLEAN AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
2051 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
2057 if (!Fast486ReadModrmByteOperands(
State,
2092 BOOLEAN OperandSize, AddressSize;
2097 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
2103 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
2114 if (!Fast486ReadModrmDwordOperands(
State,
2149 if (!Fast486ReadModrmWordOperands(
State,
2192 SWAP(Pointer[0], Pointer[3]);
2193 SWAP(Pointer[1], Pointer[2]);
2201 if (!Fast486FetchByte(
State, &SecondOpcode))
#define FAST486_DR4_RESERVED
#define FAST486_PREFIX_SEG
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_In_ PVOID _In_ ULONG Opcode
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
_In_ ULONG _In_ ULONG Offset
#define FAST486_NUM_OPCODE_HANDLERS
VOID(FASTCALL * FAST486_OPCODE_HANDLER_PROC)(PFAST486_STATE, UCHAR)
#define FAST486_OPCODE_HANDLER(x)
BOOLEAN FASTCALL Fast486ReadMemory(PFAST486_STATE State, FAST486_SEG_REGS SegmentReg, ULONG Offset, BOOLEAN InstFetch, PVOID Buffer, ULONG Size)
#define GET_SEGMENT_RPL(s)
FAST486_GEN_REGS SecondRegister
FAST486_GEN_REGS Register
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_In_ LONG _In_ LONG Limit