1900 BOOLEAN OperandSize, AddressSize;
1902 OperandSize = AddressSize =
State->SegmentRegs[FAST486_REG_CS].Size;
1907 if (!Fast486ParseModRegRm(
State, AddressSize, &ModRegRm))
1915 #ifndef FAST486_NO_FPU 1925 FAST486_FPU_DATA_REG MemoryData;
1927 Fast486FpuExceptionCheck(
State);
1931 if (!Fast486ReadModrmDwordOperands(
State, &ModRegRm,
NULL, &
Value))
1938 Fast486FpuPush(
State, &MemoryData);
1950 Fast486FpuExceptionCheck(
State);
1959 if (!
State->FpuControl.Im)
1985 ?
State->SegmentOverride : FAST486_REG_DS,
1994 Fast486ReadModrmWordOperands(
State, &ModRegRm,
NULL, &
State->FpuControl.Value);
2003 ?
State->SegmentOverride : FAST486_REG_DS,
2012 Fast486WriteModrmWordOperands(
State, &ModRegRm,
FALSE,
State->FpuControl.Value);
2019 Fast486Exception(
State, FAST486_EXCEPTION_UD);
2038 Fast486FpuExceptionCheck(
State);
2046 if (!
State->FpuControl.Im)
2066 FAST486_FPU_DATA_REG Temp;
2068 Fast486FpuExceptionCheck(
State);
2106 Fast486FpuExceptionCheck(
State);
2112 Fast486FpuPop(
State);
2119 Fast486FpuExceptionCheck(
State);
2137 Fast486FpuExceptionCheck(
State);
2155 Fast486FpuExceptionCheck(
State);
2165 Fast486FpuExceptionCheck(
State);
2173 State->FpuStatus.Code0 = 1;
2174 State->FpuStatus.Code2 = 0;
2175 State->FpuStatus.Code3 = 1;
2181 State->FpuStatus.Code0 = 1;
2182 State->FpuStatus.Code2 = 1;
2183 State->FpuStatus.Code3 = 0;
2187 State->FpuStatus.Code0 = 1;
2188 State->FpuStatus.Code2 = 0;
2189 State->FpuStatus.Code3 = 0;
2194 State->FpuStatus.Code0 = 0;
2195 State->FpuStatus.Code2 = 0;
2196 State->FpuStatus.Code3 = 1;
2202 State->FpuStatus.Code0 = 0;
2203 State->FpuStatus.Code2 = 1;
2204 State->FpuStatus.Code3 = 0;
2208 State->FpuStatus.Code0 = 0;
2209 State->FpuStatus.Code2 = 1;
2210 State->FpuStatus.Code3 = 1;
2232 PCFAST486_FPU_DATA_REG Constants[] =
2243 Fast486FpuExceptionCheck(
State);
2253 Fast486FpuExceptionCheck(
State);
2266 if (!
State->FpuControl.Dm)
2281 FAST486_FPU_DATA_REG Logarithm;
2283 Fast486FpuExceptionCheck(
State);
2305 Fast486FpuPop(
State);
2314 FAST486_FPU_DATA_REG Sine;
2315 FAST486_FPU_DATA_REG Cosine;
2318 Fast486FpuExceptionCheck(
State);
2344 if (Quadrant == 1 || Quadrant == 2) Cosine.Sign =
TRUE;
2358 Fast486FpuExceptionCheck(
State);
2371 Fast486FpuPop(
State);
2380 Fast486FpuExceptionCheck(
State);
2426 Fast486FpuExceptionCheck(
State);
2445 State->FpuStatus.Code1 = Quotient & 1;
2446 State->FpuStatus.Code3 = (Quotient >> 1) & 1;
2447 State->FpuStatus.Code0 = (Quotient >> 2) & 1;
2456 State->FpuStatus.Top--;
2463 State->FpuStatus.Top++;
2470 FAST486_FPU_DATA_REG
Value, Logarithm;
2472 Fast486FpuExceptionCheck(
State);
2500 Fast486FpuPop(
State);
2509 Fast486FpuExceptionCheck(
State);
2523 Fast486FpuExceptionCheck(
State);
2536 if (!
State->FpuControl.Dm)
2558 Fast486FpuExceptionCheck(
State);
2571 if (!
State->FpuControl.Dm)
2593 INT OldRoundingMode =
State->FpuControl.Rc;
2595 Fast486FpuExceptionCheck(
State);
2608 if (!
State->FpuControl.Dm)
2619 State->FpuControl.Rc = OldRoundingMode;
2623 State->FpuControl.Rc = OldRoundingMode;
2626 UnbiasedExp += Scale;
2629 if (UnbiasedExp < -1023)
2634 if (
State->FpuControl.Um)
2645 if (UnbiasedExp > 1023)
2650 if (
State->FpuControl.Om)
2670 Fast486FpuExceptionCheck(
State);
2683 if (!
State->FpuControl.Dm)
2698 Fast486FpuExceptionCheck(
State);
2711 if (!
State->FpuControl.Dm)
2726 Fast486Exception(
State, FAST486_EXCEPTION_UD);
static const FAST486_FPU_DATA_REG FpuL2Ten
#define FPU_IS_NORMALIZED(x)
static BOOLEAN FASTCALL Fast486FpuSaveEnvironment(PFAST486_STATE State, INT Segment, ULONG Address, BOOLEAN Size)
static VOID FASTCALL Fast486FpuFromSingleReal(PFAST486_STATE State, ULONG Value, PFAST486_FPU_DATA_REG Result)
#define FPU_IS_INDEFINITE(x)
static const FAST486_FPU_DATA_REG FpuLgTwo
static const FAST486_FPU_DATA_REG FpuZero
static VOID FASTCALL Fast486FpuCalculateTwoPowerMinusOne(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Operand, PFAST486_FPU_DATA_REG Result)
FAST486_GEN_REGS Register
#define FPU_UPDATE_TAG(i)
static VOID FASTCALL Fast486FpuCompare(PFAST486_STATE State, PCFAST486_FPU_DATA_REG FirstOperand, PCFAST486_FPU_DATA_REG SecondOperand)
__GNU_EXTENSION typedef __int64 * PLONGLONG
static BOOLEAN FASTCALL Fast486FpuCalculateLogBase2(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Operand, PFAST486_FPU_DATA_REG Result)
static BOOLEAN FASTCALL Fast486FpuDivide(PFAST486_STATE State, PCFAST486_FPU_DATA_REG FirstOperand, PCFAST486_FPU_DATA_REG SecondOperand, PFAST486_FPU_DATA_REG Result)
static BOOLEAN FASTCALL Fast486FpuToSingleReal(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Value, PULONG Result)
static BOOLEAN FASTCALL Fast486FpuToInteger(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Value, PLONGLONG Result)
_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
#define FPU_SAVE_LAST_INST()
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
static BOOLEAN FASTCALL Fast486FpuRemainder(PFAST486_STATE State, PCFAST486_FPU_DATA_REG FirstOperand, PCFAST486_FPU_DATA_REG SecondOperand, BOOLEAN RoundToNearest, PFAST486_FPU_DATA_REG Result OPTIONAL, PLONGLONG Quotient OPTIONAL)
static BOOLEAN FASTCALL Fast486FpuSubtract(PFAST486_STATE State, PCFAST486_FPU_DATA_REG FirstOperand, PCFAST486_FPU_DATA_REG SecondOperand, PFAST486_FPU_DATA_REG Result)
static BOOLEAN FASTCALL Fast486FpuMultiply(PFAST486_STATE State, PCFAST486_FPU_DATA_REG FirstOperand, PCFAST486_FPU_DATA_REG SecondOperand, PFAST486_FPU_DATA_REG Result)
#define FPU_IS_INFINITY(x)
FAST486_GEN_REGS SecondRegister
#define FPU_MANTISSA_HIGH_BIT
#define FPU_REAL4_INDEFINITE
static BOOLEAN FASTCALL Fast486FpuAdd(PFAST486_STATE State, PCFAST486_FPU_DATA_REG FirstOperand, PCFAST486_FPU_DATA_REG SecondOperand, PFAST486_FPU_DATA_REG Result)
static VOID FASTCALL Fast486FpuFromInteger(PFAST486_STATE State, LONGLONG Value, PFAST486_FPU_DATA_REG Result)
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
static const FAST486_FPU_DATA_REG FpuLnTwo
static BOOLEAN FASTCALL Fast486FpuCalculateArcTangent(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Numerator, PCFAST486_FPU_DATA_REG Denominator, PFAST486_FPU_DATA_REG Result)
#define FAST486_PREFIX_SEG
static const FAST486_FPU_DATA_REG FpuPi
#define FPU_SAVE_LAST_OPERAND()
static const FAST486_FPU_DATA_REG FpuOne
static BOOLEAN FASTCALL Fast486FpuCalculateSquareRoot(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Operand, PFAST486_FPU_DATA_REG Result)
static BOOLEAN FASTCALL Fast486FpuCalculateCosine(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Operand, PFAST486_FPU_DATA_REG Result)
static BOOLEAN FASTCALL Fast486FpuLoadEnvironment(PFAST486_STATE State, INT Segment, ULONG Address, BOOLEAN Size)
static BOOLEAN FASTCALL Fast486FpuCalculateSine(PFAST486_STATE State, PCFAST486_FPU_DATA_REG Operand, PFAST486_FPU_DATA_REG Result)
static const FAST486_FPU_DATA_REG FpuL2E
static const FAST486_FPU_DATA_REG FpuHalfPi