typedef struct _KPRCB
{
    unsigned long MxCsr;
    unsigned char LegacyNumber;
    unsigned char ReservedMustBeZero;
    unsigned char InterruptRequest;
    unsigned char IdleHalt;
    KTHREAD *CurrentThread;
    KTHREAD *NextThread;
    KTHREAD *IdleThread;
    unsigned char NestingLevel;
    unsigned char PrcbPad00[3];
    unsigned long Number;
    unsigned __int64 RspBase;
    unsigned __int64 PrcbLock;
    unsigned __int64 PrcbPad01;
    KPROCESSOR_STATE ProcessorState;
    char CpuType;
    char CpuID;
    union
    {
        unsigned short CpuStep;
        struct
        {
            unsigned char CpuStepping;
            unsigned char CpuModel;
        };
    };
    unsigned long MHz;
    unsigned __int64 HalReserved[8];
    unsigned short MinorVersion;
    unsigned short MajorVersion;
    unsigned char BuildType;
    unsigned char CpuVendor;
    unsigned char CoresPerPhysicalProcessor;
    unsigned char LogicalProcessorsPerCore;
    unsigned long ApicMask;
    unsigned long CFlushSize;
    void *AcpiReserved;
    unsigned long InitialApicId;
    unsigned long Stride;
    unsigned short Group;
    unsigned __int64 GroupSetMember;
    unsigned char GroupIndex;
    KSPIN_LOCK_QUEUE LockQueue[17];
    PP_LOOKASIDE_LIST PPLookasideList[16];
    GENERAL_LOOKASIDE_POOL PPNPagedLookasideList[32];
    GENERAL_LOOKASIDE_POOL PPPagedLookasideList[32];
    volatile long PacketBarrier;
    SINGLE_LIST_ENTRY DeferredReadyListHead;
    volatile long MmPageFaultCount;
    volatile long MmCopyOnWriteCount;
    volatile long MmTransitionCount;
    volatile long MmDemandZeroCount;
    volatile long MmPageReadCount;
    volatile long MmPageReadIoCount;
    volatile long MmDirtyPagesWriteCount;
    volatile long MmDirtyWriteIoCount;
    volatile long MmMappedPagesWriteCount;
    volatile long MmMappedWriteIoCount;
    unsigned long KeSystemCalls;
    unsigned long KeContextSwitches;
    unsigned long CcFastReadNoWait;
    unsigned long CcFastReadWait;
    unsigned long CcFastReadNotPossible;
    unsigned long CcCopyReadNoWait;
    unsigned long CcCopyReadWait;
    unsigned long CcCopyReadNoWaitMiss;
    long LookasideIrpFloat;
    volatile long IoReadOperationCount;
    volatile long IoWriteOperationCount;
    volatile long IoOtherOperationCount;
    LARGE_INTEGER IoReadTransferCount;
    LARGE_INTEGER IoWriteTransferCount;
    LARGE_INTEGER IoOtherTransferCount;
    volatile long TargetCount;
    volatile unsigned long IpiFrozen;
    KDPC_DATA DpcData[2];
    void *DpcStack;
    long MaximumDpcQueueDepth;
    unsigned long DpcRequestRate;
    unsigned long MinimumDpcRate;
    unsigned long DpcLastCount;
    unsigned char ThreadDpcEnable;
    volatile unsigned char QuantumEnd;
    volatile unsigned char DpcRoutineActive;
    volatile unsigned char IdleSchedule;
    union
    {
        volatile long DpcRequestSummary;
        short DpcRequestSlot[2];
        struct
        {
            short NormalDpcState;
            union
            {
                volatile unsigned short DpcThreadActive : 1;
                short ThreadDpcState;
            };
        };
    };
    volatile unsigned long TimerHand;
    long MasterOffset;
    unsigned long LastTick;
    unsigned long UnusedPad;
    unsigned __int64 PrcbPad50[2];
    KTIMER_TABLE TimerTable;
    KGATE DpcGate;
    void *PrcbPad52;
    KDPC CallDpc;
    long ClockKeepAlive;
    unsigned char ClockCheckSlot;
    unsigned char ClockPollCycle;
    unsigned short NmiActive;
    long DpcWatchdogPeriod;
    long DpcWatchdogCount;
    unsigned __int64 TickOffset;
    volatile long KeSpinLockOrdering;
    unsigned long PrcbPad70;
    LIST_ENTRY WaitListHead;
    unsigned __int64 WaitLock;
    unsigned long ReadySummary;
    unsigned long QueueIndex;
    KDPC TimerExpirationDpc;
    unsigned __int64 PrcbPad72[4];
    LIST_ENTRY DispatcherReadyListHead[32];
    unsigned long InterruptCount;
    unsigned long KernelTime;
    unsigned long UserTime;
    unsigned long DpcTime;
    unsigned long InterruptTime;
    unsigned long AdjustDpcThreshold;
    unsigned char DebuggerSavedIRQL;
    unsigned char PrcbPad80[7];
    unsigned long DpcTimeCount;
    unsigned long DpcTimeLimit;
    unsigned long PeriodicCount;
    unsigned long PeriodicBias;
    unsigned long AvailableTime;
    unsigned long KeExceptionDispatchCount;
    KNODE *ParentNode;
    unsigned __int64 StartCycles;
    unsigned __int64 PrcbPad82[3];
    volatile long MmSpinLockOrdering;
    unsigned long PageColor;
    unsigned long NodeColor;
    unsigned long NodeShiftedColor;
    unsigned long SecondaryColorMask;
    unsigned long PrcbPad83;
    unsigned __int64 CycleTime;
    unsigned long CcFastMdlReadNoWait;
    unsigned long CcFastMdlReadWait;
    unsigned long CcFastMdlReadNotPossible;
    unsigned long CcMapDataNoWait;
    unsigned long CcMapDataWait;
    unsigned long CcPinMappedDataCount;
    unsigned long CcPinReadNoWait;
    unsigned long CcPinReadWait;
    unsigned long CcMdlReadNoWait;
    unsigned long CcMdlReadWait;
    unsigned long CcLazyWriteHotSpots;
    unsigned long CcLazyWriteIos;
    unsigned long CcLazyWritePages;
    unsigned long CcDataFlushes;
    unsigned long CcDataPages;
    unsigned long CcLostDelayedWrites;
    unsigned long CcFastReadResourceMiss;
    unsigned long CcCopyReadWaitMiss;
    unsigned long CcFastMdlReadResourceMiss;
    unsigned long CcMapDataNoWaitMiss;
    unsigned long CcMapDataWaitMiss;
    unsigned long CcPinReadNoWaitMiss;
    unsigned long CcPinReadWaitMiss;
    unsigned long CcMdlReadNoWaitMiss;
    unsigned long CcMdlReadWaitMiss;
    unsigned long CcReadAheadIos;
    volatile long MmCacheTransitionCount;
    volatile long MmCacheReadCount;
    volatile long MmCacheIoCount;
    unsigned long PrcbPad91[1];
    unsigned __int64 RuntimeAccumulation;
    PROCESSOR_POWER_STATE PowerState;
    unsigned char PrcbPad92[16];
    unsigned long KeAlignmentFixupCount;
    KDPC DpcWatchdogDpc;
    KTIMER DpcWatchdogTimer;
    CACHE_DESCRIPTOR Cache[5];
    unsigned long CacheCount;
    volatile unsigned long CachedCommit;
    volatile unsigned long CachedResidentAvailable;
    void *HyperPte;
    void *WheaInfo;
    void *EtwSupport;
    SLIST_HEADER InterruptObjectPool;
    SLIST_HEADER HypercallPageList;
    void *HypercallPageVirtual;
    void *VirtualApicAssist;
    unsigned __int64 *StatisticsPage;
    void *RateControl;
    unsigned __int64 CacheProcessorMask[5];
    KAFFINITY_EX PackageProcessorSet;
    unsigned __int64 CoreProcessorSet;
    void *PebsIndexAddress;
    unsigned __int64 PrcbPad93[12];
    unsigned long SpinLockAcquireCount;
    unsigned long SpinLockContentionCount;
    unsigned long SpinLockSpinCount;
    unsigned long IpiSendRequestBroadcastCount;
    unsigned long IpiSendRequestRoutineCount;
    unsigned long IpiSendSoftwareInterruptCount;
    unsigned long ExInitializeResourceCount;
    unsigned long ExReInitializeResourceCount;
    unsigned long ExDeleteResourceCount;
    unsigned long ExecutiveResourceAcquiresCount;
    unsigned long ExecutiveResourceContentionsCount;
    unsigned long ExecutiveResourceReleaseExclusiveCount;
    unsigned long ExecutiveResourceReleaseSharedCount;
    unsigned long ExecutiveResourceConvertsCount;
    unsigned long ExAcqResExclusiveAttempts;
    unsigned long ExAcqResExclusiveAcquiresExclusive;
    unsigned long ExAcqResExclusiveAcquiresExclusiveRecursive;
    unsigned long ExAcqResExclusiveWaits;
    unsigned long ExAcqResExclusiveNotAcquires;
    unsigned long ExAcqResSharedAttempts;
    unsigned long ExAcqResSharedAcquiresExclusive;
    unsigned long ExAcqResSharedAcquiresShared;
    unsigned long ExAcqResSharedAcquiresSharedRecursive;
    unsigned long ExAcqResSharedWaits;
    unsigned long ExAcqResSharedNotAcquires;
    unsigned long ExAcqResSharedStarveExclusiveAttempts;
    unsigned long ExAcqResSharedStarveExclusiveAcquiresExclusive;
    unsigned long ExAcqResSharedStarveExclusiveAcquiresShared;
    unsigned long ExAcqResSharedStarveExclusiveAcquiresSharedRecursive;
    unsigned long ExAcqResSharedStarveExclusiveWaits;
    unsigned long ExAcqResSharedStarveExclusiveNotAcquires;
    unsigned long ExAcqResSharedWaitForExclusiveAttempts;
    unsigned long ExAcqResSharedWaitForExclusiveAcquiresExclusive;
    unsigned long ExAcqResSharedWaitForExclusiveAcquiresShared;
    unsigned long ExAcqResSharedWaitForExclusiveAcquiresSharedRecursive;
    unsigned long ExAcqResSharedWaitForExclusiveWaits;
    unsigned long ExAcqResSharedWaitForExclusiveNotAcquires;
    unsigned long ExSetResOwnerPointerExclusive;
    unsigned long ExSetResOwnerPointerSharedNew;
    unsigned long ExSetResOwnerPointerSharedOld;
    unsigned long ExTryToAcqExclusiveAttempts;
    unsigned long ExTryToAcqExclusiveAcquires;
    unsigned long ExBoostExclusiveOwner;
    unsigned long ExBoostSharedOwners;
    unsigned long ExEtwSynchTrackingNotificationsCount;
    unsigned long ExEtwSynchTrackingNotificationsAccountedCount;
    unsigned char VendorString[13];
    unsigned char PrcbPad10[3];
    unsigned long FeatureBits;
    LARGE_INTEGER UpdateSignature;
    CONTEXT *Context;
    unsigned long ContextFlags;
    XSAVE_AREA *ExtendedState;
    REQUEST_MAILBOX *Mailbox;
    REQUEST_MAILBOX RequestMailbox[1];
} KPRCB, *PKPRCB;