typedef struct _TEB32
{
    NT_TIB32 NtTib;
    unsigned long EnvironmentPointer;
    CLIENT_ID32 ClientId;
    unsigned long ActiveRpcHandle;
    unsigned long ThreadLocalStoragePointer;
    unsigned long ProcessEnvironmentBlock;
    unsigned long LastErrorValue;
    unsigned long CountOfOwnedCriticalSections;
    unsigned long CsrClientThread;
    unsigned long Win32ThreadInfo;
    unsigned long User32Reserved[26];
    unsigned long UserReserved[5];
    unsigned long WOW32Reserved;
    unsigned long CurrentLocale;
    unsigned long FpSoftwareStatusRegister;
    unsigned long SystemReserved1[54];
    long ExceptionCode;
    unsigned long ActivationContextStackPointer;
    unsigned char SpareBytes[36];
    unsigned long TxFsContext;
    GDI_TEB_BATCH32 GdiTebBatch;
    CLIENT_ID32 RealClientId;
    unsigned long GdiCachedProcessHandle;
    unsigned long GdiClientPID;
    unsigned long GdiClientTID;
    unsigned long GdiThreadLocalInfo;
    unsigned long Win32ClientInfo[62];
    unsigned long glDispatchTable[233];
    unsigned long glReserved1[29];
    unsigned long glReserved2;
    unsigned long glSectionInfo;
    unsigned long glSection;
    unsigned long glTable;
    unsigned long glCurrentRC;
    unsigned long glContext;
    unsigned long LastStatusValue;
    STRING32 StaticUnicodeString;
    wchar_t StaticUnicodeBuffer[261];
    unsigned long DeallocationStack;
    unsigned long TlsSlots[64];
    LIST_ENTRY32 TlsLinks;
    unsigned long Vdm;
    unsigned long ReservedForNtRpc;
    unsigned long DbgSsReserved[2];
    unsigned long HardErrorMode;
    unsigned long Instrumentation[9];
    GUID ActivityId;
    unsigned long SubProcessTag;
    unsigned long EtwLocalData;
    unsigned long EtwTraceData;
    unsigned long WinSockData;
    unsigned long GdiBatchCount;
    union
    {
        PROCESSOR_NUMBER CurrentIdealProcessor;
        unsigned long IdealProcessorValue;
        struct
        {
            unsigned char ReservedPad0;
            unsigned char ReservedPad1;
            unsigned char ReservedPad2;
            unsigned char IdealProcessor;
        };
    };
    unsigned long GuaranteedStackBytes;
    unsigned long ReservedForPerf;
    unsigned long ReservedForOle;
    unsigned long WaitingOnLoaderLock;
    unsigned long SavedPriorityState;
    unsigned long SoftPatchPtr1;
    unsigned long ThreadPoolData;
    unsigned long TlsExpansionSlots;
    unsigned long MuiGeneration;
    unsigned long IsImpersonating;
    unsigned long NlsCache;
    unsigned long pShimData;
    unsigned long HeapVirtualAffinity;
    unsigned long CurrentTransactionHandle;
    unsigned long ActiveFrame;
    unsigned long FlsData;
    unsigned long PreferredLanguages;
    unsigned long UserPrefLanguages;
    unsigned long MergedPrefLanguages;
    unsigned long MuiImpersonation;
    union
    {
        volatile unsigned short CrossTebFlags;
        unsigned short SpareCrossTebBits : 16;
    };
    union
    {
        unsigned short SameTebFlags;
        struct
        {
            unsigned short SafeThunkCall : 1;
            unsigned short InDebugPrint : 1;
            unsigned short HasFiberData : 1;
            unsigned short SkipThreadAttach : 1;
            unsigned short WerInShipAssertCode : 1;
            unsigned short RanProcessInit : 1;
            unsigned short ClonedThread : 1;
            unsigned short SuppressDebugMsg : 1;
            unsigned short DisableUserStackWalk : 1;
            unsigned short RtlExceptionAttached : 1;
            unsigned short InitialThread : 1;
            unsigned short SpareSameTebBits : 5;
        };
    };
    unsigned long TxnScopeEnterCallback;
    unsigned long TxnScopeExitCallback;
    unsigned long TxnScopeContext;
    unsigned long LockCount;
    unsigned long SpareUlong0;
    unsigned long ResourceRetValue;
} TEB32, *PTEB32;