#ifndef GH_GENERATED_STRUCTS_H
#define GH_GENERATED_STRUCTS_H

// AUTO-GENERATED FILE 
#include <r3/binders/type.h>
typedef struct _CPOINT _CPOINT, *P_CPOINT;

typedef long LONG;

typedef unsigned long    ulong;
typedef ulong DWORD;

struct _CPOINT {
    LONG lP;
    DWORD dwLog;
};

typedef struct _DIACTIONA _DIACTIONA, *P_DIACTIONA;

typedef unsigned int    uint;
typedef uint UINT_PTR;

typedef union _union_2416 _union_2416, *P_union_2416;

typedef struct _GUID GUID;

typedef char CHAR;

typedef CHAR *LPCSTR;

typedef uint UINT;

union _union_2416 {
    LPCSTR lptszActionName;
    UINT uResIdString;
};

struct _DIACTIONA {
    UINT_PTR uAppData;
    DWORD dwSemantic;
    DWORD dwFlags;
    union _union_2416 field3_0xc;
    GUID guidInstance;
    DWORD dwObjID;
    DWORD dwHow;
};

typedef struct _DIACTIONFORMATA _DIACTIONFORMATA, *P_DIACTIONFORMATA;

typedef struct _DIACTIONA *LPDIACTIONA;

typedef struct _FILETIME FILETIME;

struct _DIACTIONFORMATA {
    DWORD dwSize;
    DWORD dwActionSize;
    DWORD dwDataSize;
    DWORD dwNumActions;
    LPDIACTIONA rgoAction;
    GUID guidActionMap;
    DWORD dwGenre;
    DWORD dwBufferSize;
    LONG lAxisMin;
    LONG lAxisMax;
    HINSTANCE hInstString;
    FILETIME ftTimeStamp;
    DWORD dwCRC;
    CHAR tszActionMap[260];
};

typedef struct _DIACTIONFORMATW _DIACTIONFORMATW, *P_DIACTIONFORMATW;

typedef struct _DIACTIONW _DIACTIONW, *P_DIACTIONW;

typedef struct _DIACTIONW *LPDIACTIONW;

typedef short    wchar_t;
typedef wchar_t WCHAR;

typedef union _union_2418 _union_2418, *P_union_2418;

typedef WCHAR *LPCWSTR;

union _union_2418 {
    LPCWSTR lptszActionName;
    UINT uResIdString;
};

struct _DIACTIONFORMATW {
    DWORD dwSize;
    DWORD dwActionSize;
    DWORD dwDataSize;
    DWORD dwNumActions;
    LPDIACTIONW rgoAction;
    GUID guidActionMap;
    DWORD dwGenre;
    DWORD dwBufferSize;
    LONG lAxisMin;
    LONG lAxisMax;
    HINSTANCE hInstString;
    FILETIME ftTimeStamp;
    DWORD dwCRC;
    WCHAR tszActionMap[260];
};

struct _DIACTIONW {
    UINT_PTR uAppData;
    DWORD dwSemantic;
    DWORD dwFlags;
    union _union_2418 field3_0xc;
    GUID guidInstance;
    DWORD dwObjID;
    DWORD dwHow;
};

typedef struct _DICOLORSET _DICOLORSET, *P_DICOLORSET;

typedef DWORD D3DCOLOR;

struct _DICOLORSET {
    DWORD dwSize;
    D3DCOLOR cTextFore;
    D3DCOLOR cTextHighlight;
    D3DCOLOR cCalloutLine;
    D3DCOLOR cCalloutHighlight;
    D3DCOLOR cBorder;
    D3DCOLOR cControlFill;
    D3DCOLOR cHighlightFill;
    D3DCOLOR cAreaFill;
};

typedef struct _DICONFIGUREDEVICESPARAMSA _DICONFIGUREDEVICESPARAMSA, *P_DICONFIGUREDEVICESPARAMSA;

typedef CHAR *LPSTR;

typedef struct _DIACTIONFORMATA *LPDIACTIONFORMATA;

typedef struct _DICOLORSET DICOLORSET;

struct _DICONFIGUREDEVICESPARAMSA {
    DWORD dwSize;
    DWORD dwcUsers;
    LPSTR lptszUserNames;
    DWORD dwcFormats;
    LPDIACTIONFORMATA lprgFormats;
    HWND hwnd;
    DICOLORSET dics;
    struct IUnknown *lpUnkDDSTarget;
};

typedef struct _DICONFIGUREDEVICESPARAMSW _DICONFIGUREDEVICESPARAMSW, *P_DICONFIGUREDEVICESPARAMSW;

typedef WCHAR *LPWSTR;

typedef struct _DIACTIONFORMATW *LPDIACTIONFORMATW;

struct _DICONFIGUREDEVICESPARAMSW {
    DWORD dwSize;
    DWORD dwcUsers;
    LPWSTR lptszUserNames;
    DWORD dwcFormats;
    LPDIACTIONFORMATW lprgFormats;
    HWND hwnd;
    DICOLORSET dics;
    struct IUnknown *lpUnkDDSTarget;
};

typedef struct _DIDATAFORMAT _DIDATAFORMAT, *P_DIDATAFORMAT;

typedef struct _DIOBJECTDATAFORMAT _DIOBJECTDATAFORMAT, *P_DIOBJECTDATAFORMAT;

typedef struct _DIOBJECTDATAFORMAT *LPDIOBJECTDATAFORMAT;

struct _DIDATAFORMAT {
    DWORD dwSize;
    DWORD dwObjSize;
    DWORD dwFlags;
    DWORD dwDataSize;
    DWORD dwNumObjs;
    LPDIOBJECTDATAFORMAT rgodf;
};

struct _DIOBJECTDATAFORMAT {
    GUID *pguid;
    DWORD dwOfs;
    DWORD dwType;
    DWORD dwFlags;
};

typedef struct _DIDEVICEIMAGEINFOA _DIDEVICEIMAGEINFOA, *P_DIDEVICEIMAGEINFOA;

typedef struct tagRECT RECT;

typedef struct tagPOINT POINT;

struct _DIDEVICEIMAGEINFOA {
    CHAR tszImagePath[260];
    DWORD dwFlags;
    DWORD dwViewID;
    RECT rcOverlay;
    DWORD dwObjID;
    DWORD dwcValidPts;
    POINT rgptCalloutLine[5];
    RECT rcCalloutRect;
    DWORD dwTextAlign;
};

typedef struct _DIDEVICEIMAGEINFOHEADERA _DIDEVICEIMAGEINFOHEADERA, *P_DIDEVICEIMAGEINFOHEADERA;

typedef struct _DIDEVICEIMAGEINFOA *LPDIDEVICEIMAGEINFOA;

struct _DIDEVICEIMAGEINFOHEADERA {
    DWORD dwSize;
    DWORD dwSizeImageInfo;
    DWORD dwcViews;
    DWORD dwcButtons;
    DWORD dwcAxes;
    DWORD dwcPOVs;
    DWORD dwBufferSize;
    DWORD dwBufferUsed;
    LPDIDEVICEIMAGEINFOA lprgImageInfoArray;
};

typedef struct _DIDEVICEIMAGEINFOHEADERW _DIDEVICEIMAGEINFOHEADERW, *P_DIDEVICEIMAGEINFOHEADERW;

typedef struct _DIDEVICEIMAGEINFOW _DIDEVICEIMAGEINFOW, *P_DIDEVICEIMAGEINFOW;

typedef struct _DIDEVICEIMAGEINFOW *LPDIDEVICEIMAGEINFOW;

struct _DIDEVICEIMAGEINFOHEADERW {
    DWORD dwSize;
    DWORD dwSizeImageInfo;
    DWORD dwcViews;
    DWORD dwcButtons;
    DWORD dwcAxes;
    DWORD dwcPOVs;
    DWORD dwBufferSize;
    DWORD dwBufferUsed;
    LPDIDEVICEIMAGEINFOW lprgImageInfoArray;
};

struct _DIDEVICEIMAGEINFOW {
    WCHAR tszImagePath[260];
    DWORD dwFlags;
    DWORD dwViewID;
    RECT rcOverlay;
    DWORD dwObjID;
    DWORD dwcValidPts;
    POINT rgptCalloutLine[5];
    RECT rcCalloutRect;
    DWORD dwTextAlign;
};

typedef struct _DIMOUSESTATE _DIMOUSESTATE, *P_DIMOUSESTATE;

typedef unsigned char    uchar;
typedef uchar BYTE;

struct _DIMOUSESTATE {
    LONG lX;
    LONG lY;
    LONG lZ;
    BYTE rgbButtons[4];
};

typedef struct _DIMOUSESTATE2 _DIMOUSESTATE2, *P_DIMOUSESTATE2;

struct _DIMOUSESTATE2 {
    LONG lX;
    LONG lY;
    LONG lZ;
    BYTE rgbButtons[8];
};

typedef struct _ExtraSoundParam _ExtraSoundParam, *P_ExtraSoundParam;

typedef struct _RollOffParam _RollOffParam, *P_RollOffParam;

typedef struct _RollOffParam RollOffParam;

typedef struct _SwitchParam _SwitchParam, *P_SwitchParam;

typedef struct _SwitchParam SwitchParam;

typedef long SndReal;

struct _SwitchParam {
    long lObjectType;
    long lObjectId;
};

struct _RollOffParam {
    SndReal rDistSatur;
    SndReal rDistBackGround;
};

struct _ExtraSoundParam {
    RollOffParam stRollOff;
    SwitchParam stSwitch;
};

typedef struct _MicroLink _MicroLink, *P_MicroLink;

typedef int SndBool;

struct _MicroLink {
    long lId;
    SndBool bLinked;
};

typedef struct _MicroParam _MicroParam, *P_MicroParam;

typedef struct _SndVector _SndVector, *P_SndVector;

typedef struct _SndVector SndVector;

struct _SndVector {
    SndReal x;
    SndReal y;
    SndReal z;
};

struct _MicroParam {
    SndVector pos;
    SndVector vit;
    SndVector dirnor;
    SndVector dirtan;
};

typedef struct _SampleParam _SampleParam, *P_SampleParam;

struct _SampleParam {
    SndReal Freq;
    uchar ucVol;
    uchar ucPan;
    uchar ucSpace;
    uchar ucReverb;
};

typedef struct _SND_tdstBlockEvent _SND_tdstBlockEvent, *P_SND_tdstBlockEvent;

struct _SND_tdstBlockEvent {
};

typedef struct _SND_tdstCallback _SND_tdstCallback, *P_SND_tdstCallback;

enum _SND_tdstTypeCallback {
    BUFFER_ASYNCHRONE=0,
    BUFFER_SYNCHRONE=1,
    BUFFER_STACK=2,
    ALIGN_FOR_BUFFER_CLIENT=305419896
};

typedef enum _SND_tdstTypeCallback SND_tduTypeCallback;

typedef union _union_2482 _union_2482, *P_union_2482;

typedef union _union_2483 _union_2483, *P_union_2483;

typedef void (*td_pfn_vRefreshBufferClient)(long, ulong, ulong, void *);

typedef void (*td_pfn_vBufferClientPoped)(long, long);

union _union_2483 {
    SndReal rCallbackPeriod;
    long lNbSampleToPush;
};

union _union_2482 {
    td_pfn_vRefreshBufferClient CallbackASynchrone;
    td_pfn_vRefreshBufferClient CallbackSynchrone;
    td_pfn_vBufferClientPoped CallbackStack;
};

struct _SND_tdstCallback {
    SND_tduTypeCallback eType;
    union _union_2482 uCallback;
    union _union_2483 uInfo;
};

typedef struct _SND_tdstFormat _SND_tdstFormat, *P_SND_tdstFormat;

enum enum_2474 {
    SAMPLE_INVALID=0,
    SAMPLE_PCM=1,
    SAMPLE_MPEG=2,
    SAMPLE_AIFF=3,
    SAMPLE_ADPCM=4,
    SAMPLE_ADPCM_TO_CONVERT=5,
    SAMPLE_FOR_ALIGNEMENT=321148536
};

typedef enum enum_2474 tdeTypeZip;

typedef union _union_2479 _union_2479, *P_union_2479;

typedef struct _tdstFormatPCM _tdstFormatPCM, *P_tdstFormatPCM;

typedef struct _tdstFormatPCM tdstFormatPCM;

typedef struct _tdstFormatPCM tdstFormatMPEG;

typedef struct _tdstFormatPCM tdstFormatADPCM;

typedef unsigned short    ushort;
struct _tdstFormatPCM {
    ulong ulNbSamples;
    ushort uwResolution;
    ushort uwNbChannels;
    ulong ulFreq;
};

union _union_2479 {
    tdstFormatPCM stPCM;
    tdstFormatMPEG stMPEG;
    tdstFormatADPCM stADPCM;
};

struct _SND_tdstFormat {
    tdeTypeZip eZip;
    union _union_2479 uFormat;
};

typedef struct _SND_tdstStackBuffer _SND_tdstStackBuffer, *P_SND_tdstStackBuffer;

struct _SND_tdstStackBuffer {
    ulong ulNbSamples;
    void *ptrData;
};

typedef struct _SoundParam _SoundParam, *P_SoundParam;

typedef struct _MicroLink MicroLink;

typedef struct _ExtraSoundParam ExtraSoundParam;

struct _SoundParam {
    SndReal Freq;
    uchar ucVol;
    uchar ucPan;
    uchar ucSpace;
    uchar ucReverb;
    SndVector Pos;
    SndVector Vit;
    int iFlags;
    int iNbLinks;
    MicroLink astMicro[2];
    ExtraSoundParam xExtra;
};

typedef struct _tdstAllRetChannelSound _tdstAllRetChannelSound, *P_tdstAllRetChannelSound;

typedef SndReal (*td_pfn_rRetChannelCoord)(long, long);

typedef SndBool (*td_pfn_bRetChannelActive)(long, long);

struct _tdstAllRetChannelSound {
    td_pfn_rRetChannelCoord X;
    td_pfn_rRetChannelCoord Y;
    td_pfn_rRetChannelCoord Z;
    td_pfn_rRetChannelCoord VX;
    td_pfn_rRetChannelCoord VY;
    td_pfn_rRetChannelCoord VZ;
    td_pfn_bRetChannelActive Active;
    SndBool bAbsCoord;
};

typedef struct _tdstAllRetMicroSound _tdstAllRetMicroSound, *P_tdstAllRetMicroSound;

typedef SndReal (*td_pfn_rRetSoundCoord)(long);

typedef long (*td_pfn_lRetSoundLong)(long);

struct _tdstAllRetMicroSound {
    td_pfn_rRetSoundCoord X;
    td_pfn_rRetSoundCoord Y;
    td_pfn_rRetSoundCoord Z;
    td_pfn_rRetSoundCoord VX;
    td_pfn_rRetSoundCoord VY;
    td_pfn_rRetSoundCoord VZ;
    td_pfn_rRetSoundCoord DNX;
    td_pfn_rRetSoundCoord DNY;
    td_pfn_rRetSoundCoord DNZ;
    td_pfn_rRetSoundCoord DTX;
    td_pfn_rRetSoundCoord DTY;
    td_pfn_rRetSoundCoord DTZ;
    td_pfn_lRetSoundLong Filtre;
};

typedef struct _tdstAllRetObjectSound _tdstAllRetObjectSound, *P_tdstAllRetObjectSound;

typedef uchar (*td_pfn_ucRetSoundMidi)(long);

typedef union _SND_tduRefEvt _SND_tduRefEvt, *P_SND_tduRefEvt;

typedef union _SND_tduRefEvt SND_tduRefEvt;

typedef void (*td_pfn_vRetSoundExtraCoef)(long, SND_tduRefEvt, SndReal *, SndReal *, SndReal *);

typedef long SND_tdxHandleToSoundInfo;

typedef SND_tdxHandleToSoundInfo (*td_pfn_lRetSoundSwitch)(long, long);

typedef SndBool (*td_pfn_bRetSoundLink)(long, long);

typedef void (*td_pfn_vRetSoundVector)(long, SndVector *);

typedef ulong tdxId;

typedef struct _SND_tdstBlockEvent SND_tdstBlockEvent;

struct _tdstAllRetObjectSound {
    td_pfn_rRetSoundCoord X;
    td_pfn_rRetSoundCoord Y;
    td_pfn_rRetSoundCoord Z;
    td_pfn_rRetSoundCoord VX;
    td_pfn_rRetSoundCoord VY;
    td_pfn_rRetSoundCoord VZ;
    td_pfn_ucRetSoundMidi REVERB;
    td_pfn_vRetSoundExtraCoef ExtraCoef;
    td_pfn_lRetSoundSwitch Switch;
    td_pfn_bRetSoundLink MicroLink;
    td_pfn_vRetSoundVector VectorI;
    td_pfn_vRetSoundVector VectorJ;
    td_pfn_vRetSoundVector VectorK;
    void *Unk0;
    void *InfoType;
};

union _SND_tduRefEvt {
    tdxId Id;
    SND_tdstBlockEvent *pstPtr;
};

typedef struct _tdstBlockResourceDisk _tdstBlockResourceDisk, *P_tdstBlockResourceDisk;

struct _tdstBlockResourceDisk {
};

typedef struct _tdstBlockResourceMem _tdstBlockResourceMem, *P_tdstBlockResourceMem;

struct _tdstBlockResourceMem {
};

typedef struct _tdstInfoTrackDisk _tdstInfoTrackDisk, *P_tdstInfoTrackDisk;

struct _tdstInfoTrackDisk {
};

typedef struct _tdstInfoTrackList _tdstInfoTrackList, *P_tdstInfoTrackList;

struct _tdstInfoTrackList {
};

typedef struct _tdstInfoTrackMem _tdstInfoTrackMem, *P_tdstInfoTrackMem;

struct _tdstInfoTrackMem {
};

typedef struct _tdstMidiMemory _tdstMidiMemory, *P_tdstMidiMemory;

struct _tdstMidiMemory {
};

typedef struct _tdstMidiStreaming _tdstMidiStreaming, *P_tdstMidiStreaming;

struct _tdstMidiStreaming {
};

typedef struct _tdstRandomElement _tdstRandomElement, *P_tdstRandomElement;

struct _tdstRandomElement {
};

typedef struct _tdstRangeSplitDisk _tdstRangeSplitDisk, *P_tdstRangeSplitDisk;

struct _tdstRangeSplitDisk {
};

typedef struct _tdstRangeSplitListDisk _tdstRangeSplitListDisk, *P_tdstRangeSplitListDisk;

struct _tdstRangeSplitListDisk {
};

typedef struct _tdstRangeSplitListMem _tdstRangeSplitListMem, *P_tdstRangeSplitListMem;

struct _tdstRangeSplitListMem {
};

typedef struct _tdstRangeSplitMem _tdstRangeSplitMem, *P_tdstRangeSplitMem;

struct _tdstRangeSplitMem {
};

typedef struct _tdstRefRes _tdstRefRes, *P_tdstRefRes;

struct _tdstRefRes {
};

typedef struct _tdstRefResList _tdstRefResList, *P_tdstRefResList;

struct _tdstRefResList {
};

typedef struct _tdstSampleMemory _tdstSampleMemory, *P_tdstSampleMemory;

struct _tdstSampleMemory {
};

typedef struct _tdstSampleStreaming _tdstSampleStreaming, *P_tdstSampleStreaming;

struct _tdstSampleStreaming {
};

typedef struct _tdstSndBankDescriptor _tdstSndBankDescriptor, *P_tdstSndBankDescriptor;

struct _tdstSndBankDescriptor {
};

typedef struct _tdstSndBankHead _tdstSndBankHead, *P_tdstSndBankHead;

struct _tdstSndBankHead {
};

typedef struct _tdstSndBankHeader _tdstSndBankHeader, *P_tdstSndBankHeader;

struct _tdstSndBankHeader {
};

typedef struct _tdstSndPolyEvent _tdstSndPolyEvent, *P_tdstSndPolyEvent;

struct _tdstSndPolyEvent {
};

typedef struct _tdstSndPolyResource _tdstSndPolyResource, *P_tdstSndPolyResource;

struct _tdstSndPolyResource {
};

typedef struct _tdstSwitchElement _tdstSwitchElement, *P_tdstSwitchElement;

struct _tdstSwitchElement {
};

typedef struct _tdstSwitchList _tdstSwitchList, *P_tdstSwitchList;

struct _tdstSwitchList {
};

typedef struct _tdstThemeBridge _tdstThemeBridge, *P_tdstThemeBridge;

struct _tdstThemeBridge {
};

typedef struct _tdstThemePart _tdstThemePart, *P_tdstThemePart;

struct _tdstThemePart {
};

typedef struct _tdstThemePartOutro _tdstThemePartOutro, *P_tdstThemePartOutro;

struct _tdstThemePartOutro {
};

typedef struct _tdstTimer _tdstTimer, *P_tdstTimer;

typedef struct TMR_tdstTimerCount TMR_tdstTimerCount, *PTMR_tdstTimerCount;

typedef void (td_fn_vTimerEventCallback)(void);

typedef td_fn_vTimerEventCallback *td_p_fn_vTimerEventCallback;

struct TMR_tdstTimerCount {
    ulong ulLowPart;
    ulong ulHighPart;
};

struct _tdstTimer {
    short m_wTimerType;
    short m_wTimerState;
    struct TMR_tdstTimerCount m_stTimerCount_InitValue;
    struct TMR_tdstTimerCount m_stTimerCount_LastValue;
    struct TMR_tdstTimerCount m_stTimerCount_TotalValue;
    ulong m_ulEventId;
    td_p_fn_vTimerEventCallback m_p_fn_vEventCallback;
};

typedef struct _tdstTypeCD _tdstTypeCD, *P_tdstTypeCD;

struct _tdstTypeCD {
};

typedef struct _tdstTypeMidiDisk _tdstTypeMidiDisk, *P_tdstTypeMidiDisk;

struct _tdstTypeMidiDisk {
};

typedef struct _tdstTypeMidiMem _tdstTypeMidiMem, *P_tdstTypeMidiMem;

struct _tdstTypeMidiMem {
};

typedef struct _tdstTypeRandomDisk _tdstTypeRandomDisk, *P_tdstTypeRandomDisk;

struct _tdstTypeRandomDisk {
};

typedef struct _tdstTypeRandomMem _tdstTypeRandomMem, *P_tdstTypeRandomMem;

struct _tdstTypeRandomMem {
};

typedef struct _tdstTypeSampleDisk _tdstTypeSampleDisk, *P_tdstTypeSampleDisk;

struct _tdstTypeSampleDisk {
};

typedef struct _tdstTypeSampleMem _tdstTypeSampleMem, *P_tdstTypeSampleMem;

struct _tdstTypeSampleMem {
};

typedef struct _tdstTypeSequenceDisk _tdstTypeSequenceDisk, *P_tdstTypeSequenceDisk;

struct _tdstTypeSequenceDisk {
};

typedef struct _tdstTypeSequenceMem _tdstTypeSequenceMem, *P_tdstTypeSequenceMem;

struct _tdstTypeSequenceMem {
};

typedef struct _tdstTypeSplitDisk _tdstTypeSplitDisk, *P_tdstTypeSplitDisk;

struct _tdstTypeSplitDisk {
};

typedef struct _tdstTypeSplitMem _tdstTypeSplitMem, *P_tdstTypeSplitMem;

struct _tdstTypeSplitMem {
};

typedef struct _tdstTypeSwitchDisk _tdstTypeSwitchDisk, *P_tdstTypeSwitchDisk;

struct _tdstTypeSwitchDisk {
};

typedef struct _tdstTypeSwitchMem _tdstTypeSwitchMem, *P_tdstTypeSwitchMem;

struct _tdstTypeSwitchMem {
};

typedef struct _tdstTypeThemeDisk _tdstTypeThemeDisk, *P_tdstTypeThemeDisk;

struct _tdstTypeThemeDisk {
};

typedef struct _tdstTypeThemeMem _tdstTypeThemeMem, *P_tdstTypeThemeMem;

struct _tdstTypeThemeMem {
};

typedef ulong ACP_tdxAddress;

typedef uchar ACP_tdxBool;

typedef short ACP_tdxIndex;

typedef struct AI_tdstMind_ AI_tdstMind_, *PAI_tdstMind_;

struct AI_tdstMind_ {
};

typedef struct tdstAlwaysModelList_ tdstAlwaysModelList_, *PtdstAlwaysModelList_;

typedef struct tdstAlwaysModelList_ *ALW_tdxHandleToModelList;

struct tdstAlwaysModelList_ {
};

typedef struct Anim3d Anim3d, *PAnim3d;

typedef struct Frame3d Frame3d, *PFrame3d;

typedef struct Event Event, *PEvent;

typedef struct POS_stCompletePosition POS_stCompletePosition, *PPOS_stCompletePosition;

typedef struct AnimLights AnimLights, *PAnimLights;

typedef struct Element3d Element3d, *PElement3d;

typedef struct MTH3D_Matrix MTH3D_Matrix, *PMTH3D_Matrix;

typedef struct MTH3_Vector MTH3_Vector, *PMTH3_Vector;

typedef struct tdstPLA_Hierarchy_ tdstPLA_Hierarchy_, *PtdstPLA_Hierarchy_;

typedef struct tdstPLA_Hierarchy_ tdstPLA_Hierarchy;

typedef struct EventInTable EventInTable, *PEventInTable;

typedef struct POS_stCompletePosition *POS_tdxHandleToPosition;

typedef struct Couple Couple, *PCouple;

struct EventInTable {
    void *p_xEvent;
    uchar ucTypeOfEvent;
    uchar ucPriority;
    uchar ucFirstCall;
    uchar ucPeriod;
    ulong ulBinaryEventId;
};

struct tdstPLA_Hierarchy_ {
    ulong ulNbOfCouples;
    struct Couple *d_stCouples;
};

struct Element3d {
    POS_tdxHandleToPosition stMatrix;
    uchar ucElement;
    uchar ucChannelNumber;
    uchar bActiveStatus;
    ulong eTypeOfElement;
};

struct AnimLights {
    void **a_p_stLights;
    ushort uwNumberOfLights;
    void *a_hLightsInSector;
};

struct Couple {
    ushort wChild;
    ushort wFather;
};

struct MTH3_Vector {
    float xX;
    float xY;
    float xZ;
};

struct MTH3D_Matrix {
    struct MTH3_Vector stCol_0;
    struct MTH3_Vector stCol_1;
    struct MTH3_Vector stCol_2;
};

struct POS_stCompletePosition {
    ulong ulType;
    struct MTH3_Vector stTranslationVector;
    struct MTH3D_Matrix stRotationMatrix;
    struct MTH3D_Matrix stTransformMatrix;
};

struct Anim3d {
    struct Frame3d *d_stFrame3d;
    uchar ucNumberOfFrames;
    uchar ucFrameRate;
    uchar ucMaxNumberOfElements;
    struct Event *d_stAnimEvent;
    uchar ucNumberOfEvents;
    struct POS_stCompletePosition stOffsetMatrix;
    uchar bCompressedAnim;
    struct AnimLights *p_stLights;
    struct stMorphData *d_stMorphDataArray;
    ushort uwNumOfA3dGENERAL;
};

struct Frame3d {
    struct Element3d *p_stArrayOfElts3d;
    struct MTH3D_Matrix *p_stAngularSpeedMatrix;
    struct MTH3_Vector *p_stLinearSpeedVector;
    tdstPLA_Hierarchy *p_stHierarchy;
};

struct Event {
    struct EventInTable *p_stfEventInTBL;
    ushort usEventNumberInTBL;
    ushort uwFrameNumber;
    ushort uwChannelNumber;
};

typedef struct astruct_2 astruct_2, *Pastruct_2;

typedef unsigned int    dword;
typedef dword color_rgba8_t;

typedef unsigned char    byte;
struct astruct_2 {
    uint *field0_0x0;
    uint *field1_0x4;
    uint *field2_0x8;
    undefined field3_0xc;
    undefined field4_0xd;
    undefined field5_0xe;
    undefined field6_0xf;
    undefined field7_0x10;
    undefined field8_0x11;
    undefined field9_0x12;
    undefined field10_0x13;
    color_rgba8_t unkColor;
    byte field12_0x18;
    undefined field13_0x19;
    byte field14_0x1a;
};

typedef struct astruct_3 astruct_3, *Pastruct_3;

struct astruct_3 {
    undefined field0_0x0;
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined field4_0x4;
    undefined field5_0x5;
    undefined field6_0x6;
    undefined field7_0x7;
    undefined field8_0x8;
    undefined field9_0x9;
    undefined field10_0xa;
    undefined field11_0xb;
    undefined field12_0xc;
    undefined field13_0xd;
    undefined field14_0xe;
    undefined field15_0xf;
    int *binkFrameMemory;
};

typedef struct BinkInner0 BinkInner0, *PBinkInner0;

struct BinkInner0 {
    int unk_neg1;
    undefined *field1_0x4;
    float field2_0x8;
    float field3_0xc;
    undefined field4_0x10;
    undefined field5_0x11;
    undefined field6_0x12;
    undefined field7_0x13;
    float field8_0x14;
    float field9_0x18;
    float field10_0x1c;
    undefined field11_0x20;
    undefined field12_0x21;
    undefined field13_0x22;
    undefined field14_0x23;
    undefined field15_0x24;
    undefined field16_0x25;
    undefined field17_0x26;
    undefined field18_0x27;
    undefined field19_0x28;
    undefined field20_0x29;
    undefined field21_0x2a;
    undefined field22_0x2b;
    undefined field23_0x2c;
    undefined field24_0x2d;
    undefined field25_0x2e;
    undefined field26_0x2f;
    undefined field27_0x30;
    undefined field28_0x31;
    undefined field29_0x32;
    undefined field30_0x33;
    undefined field31_0x34;
    undefined field32_0x35;
    undefined field33_0x36;
    undefined field34_0x37;
    undefined field35_0x38;
    undefined field36_0x39;
    undefined field37_0x3a;
    undefined field38_0x3b;
    undefined field39_0x3c;
    undefined field40_0x3d;
    undefined field41_0x3e;
    undefined field42_0x3f;
    undefined field43_0x40;
    undefined field44_0x41;
    undefined field45_0x42;
    undefined field46_0x43;
    undefined field47_0x44;
    undefined field48_0x45;
    undefined field49_0x46;
    undefined field50_0x47;
    undefined field51_0x48;
    undefined field52_0x49;
    undefined field53_0x4a;
    undefined field54_0x4b;
    undefined field55_0x4c;
    undefined field56_0x4d;
    undefined field57_0x4e;
    undefined field58_0x4f;
    undefined field59_0x50;
    undefined field60_0x51;
    undefined field61_0x52;
    undefined field62_0x53;
    undefined field63_0x54;
    undefined field64_0x55;
    undefined field65_0x56;
    undefined field66_0x57;
    undefined field67_0x58;
    undefined field68_0x59;
    undefined field69_0x5a;
    undefined field70_0x5b;
    undefined field71_0x5c;
    undefined field72_0x5d;
    undefined field73_0x5e;
    undefined field74_0x5f;
    undefined field75_0x60;
    undefined field76_0x61;
    undefined field77_0x62;
    undefined field78_0x63;
    undefined field79_0x64;
    undefined field80_0x65;
    undefined field81_0x66;
    undefined field82_0x67;
    undefined field83_0x68;
    undefined field84_0x69;
    undefined field85_0x6a;
    undefined field86_0x6b;
    undefined field87_0x6c;
    undefined field88_0x6d;
    undefined field89_0x6e;
    undefined field90_0x6f;
    undefined field91_0x70;
    undefined field92_0x71;
    undefined field93_0x72;
    undefined field94_0x73;
    undefined field95_0x74;
    undefined field96_0x75;
    undefined field97_0x76;
    undefined field98_0x77;
    undefined field99_0x78;
    undefined field100_0x79;
    undefined field101_0x7a;
    undefined field102_0x7b;
    undefined field103_0x7c;
    undefined field104_0x7d;
    undefined field105_0x7e;
    undefined field106_0x7f;
    undefined field107_0x80;
    undefined field108_0x81;
    undefined field109_0x82;
    undefined field110_0x83;
    undefined field111_0x84;
    undefined field112_0x85;
    undefined field113_0x86;
    undefined field114_0x87;
    undefined field115_0x88;
    undefined field116_0x89;
    undefined field117_0x8a;
    undefined field118_0x8b;
    undefined field119_0x8c;
    undefined field120_0x8d;
    undefined field121_0x8e;
    undefined field122_0x8f;
    undefined field123_0x90;
    undefined field124_0x91;
    undefined field125_0x92;
    undefined field126_0x93;
    undefined field127_0x94;
    undefined field128_0x95;
    undefined field129_0x96;
    undefined field130_0x97;
    undefined field131_0x98;
    undefined field132_0x99;
    undefined field133_0x9a;
    undefined field134_0x9b;
    undefined field135_0x9c;
    undefined field136_0x9d;
    undefined field137_0x9e;
    undefined field138_0x9f;
    undefined field139_0xa0;
    undefined field140_0xa1;
    undefined field141_0xa2;
    undefined field142_0xa3;
    undefined field143_0xa4;
    undefined field144_0xa5;
    undefined field145_0xa6;
    undefined field146_0xa7;
    undefined field147_0xa8;
    undefined field148_0xa9;
    undefined field149_0xaa;
    undefined field150_0xab;
    undefined field151_0xac;
    undefined field152_0xad;
    undefined field153_0xae;
    undefined field154_0xaf;
    undefined field155_0xb0;
    undefined field156_0xb1;
    undefined field157_0xb2;
    undefined field158_0xb3;
    undefined field159_0xb4;
    undefined field160_0xb5;
    undefined field161_0xb6;
    undefined field162_0xb7;
    undefined field163_0xb8;
    undefined field164_0xb9;
    undefined field165_0xba;
    undefined field166_0xbb;
    undefined field167_0xbc;
    undefined field168_0xbd;
    undefined field169_0xbe;
    undefined field170_0xbf;
    undefined field171_0xc0;
    undefined field172_0xc1;
    undefined field173_0xc2;
    undefined field174_0xc3;
    undefined field175_0xc4;
    undefined field176_0xc5;
    undefined field177_0xc6;
    undefined field178_0xc7;
    undefined field179_0xc8;
    undefined field180_0xc9;
    undefined field181_0xca;
    undefined field182_0xcb;
    undefined field183_0xcc;
    undefined field184_0xcd;
    undefined field185_0xce;
    undefined field186_0xcf;
    undefined field187_0xd0;
    undefined field188_0xd1;
    undefined field189_0xd2;
    undefined field190_0xd3;
    undefined field191_0xd4;
    undefined field192_0xd5;
    undefined field193_0xd6;
    undefined field194_0xd7;
    undefined field195_0xd8;
    undefined field196_0xd9;
    undefined field197_0xda;
    undefined field198_0xdb;
    undefined field199_0xdc;
    undefined field200_0xdd;
    undefined field201_0xde;
    undefined field202_0xdf;
    undefined field203_0xe0;
    undefined field204_0xe1;
    undefined field205_0xe2;
    undefined field206_0xe3;
    undefined field207_0xe4;
    undefined field208_0xe5;
    undefined field209_0xe6;
    undefined field210_0xe7;
    undefined field211_0xe8;
    undefined field212_0xe9;
    undefined field213_0xea;
    undefined field214_0xeb;
    undefined field215_0xec;
    undefined field216_0xed;
    undefined field217_0xee;
    undefined field218_0xef;
    undefined field219_0xf0;
    undefined field220_0xf1;
    undefined field221_0xf2;
    undefined field222_0xf3;
    undefined field223_0xf4;
    undefined field224_0xf5;
    undefined field225_0xf6;
    undefined field226_0xf7;
    undefined field227_0xf8;
    undefined field228_0xf9;
    undefined field229_0xfa;
    undefined field230_0xfb;
    undefined field231_0xfc;
    undefined field232_0xfd;
    undefined field233_0xfe;
    undefined field234_0xff;
    undefined field235_0x100;
    undefined field236_0x101;
    undefined field237_0x102;
    undefined field238_0x103;
    undefined field239_0x104;
    undefined field240_0x105;
    undefined field241_0x106;
    undefined field242_0x107;
    undefined field243_0x108;
    undefined field244_0x109;
    undefined field245_0x10a;
    undefined field246_0x10b;
    undefined field247_0x10c;
    undefined field248_0x10d;
    undefined field249_0x10e;
    undefined field250_0x10f;
    undefined field251_0x110;
    undefined field252_0x111;
    undefined field253_0x112;
    undefined field254_0x113;
    undefined field255_0x114;
    undefined field256_0x115;
    undefined field257_0x116;
    undefined field258_0x117;
    undefined field259_0x118;
    undefined field260_0x119;
    undefined field261_0x11a;
    undefined field262_0x11b;
    undefined field263_0x11c;
    undefined field264_0x11d;
    undefined field265_0x11e;
    undefined field266_0x11f;
    undefined field267_0x120;
    undefined field268_0x121;
    undefined field269_0x122;
    undefined field270_0x123;
    undefined field271_0x124;
    undefined field272_0x125;
    undefined field273_0x126;
    undefined field274_0x127;
    undefined field275_0x128;
    undefined field276_0x129;
    undefined field277_0x12a;
    undefined field278_0x12b;
    undefined field279_0x12c;
    undefined field280_0x12d;
    undefined field281_0x12e;
    undefined field282_0x12f;
    undefined field283_0x130;
    undefined field284_0x131;
    undefined field285_0x132;
    undefined field286_0x133;
    undefined field287_0x134;
    undefined field288_0x135;
    undefined field289_0x136;
    undefined field290_0x137;
    undefined field291_0x138;
    undefined field292_0x139;
    undefined field293_0x13a;
    undefined field294_0x13b;
    undefined field295_0x13c;
    undefined field296_0x13d;
    undefined field297_0x13e;
    undefined field298_0x13f;
    undefined field299_0x140;
    undefined field300_0x141;
    undefined field301_0x142;
    undefined field302_0x143;
    undefined field303_0x144;
    undefined field304_0x145;
    undefined field305_0x146;
    undefined field306_0x147;
    undefined field307_0x148;
    undefined field308_0x149;
    undefined field309_0x14a;
    undefined field310_0x14b;
    undefined field311_0x14c;
    undefined field312_0x14d;
    undefined field313_0x14e;
    undefined field314_0x14f;
    undefined field315_0x150;
    undefined field316_0x151;
    undefined field317_0x152;
    undefined field318_0x153;
    undefined field319_0x154;
    undefined field320_0x155;
    undefined field321_0x156;
    undefined field322_0x157;
    undefined field323_0x158;
    undefined field324_0x159;
    undefined field325_0x15a;
    undefined field326_0x15b;
    undefined field327_0x15c;
    undefined field328_0x15d;
    undefined field329_0x15e;
    undefined field330_0x15f;
    undefined field331_0x160;
    undefined field332_0x161;
    undefined field333_0x162;
    undefined field334_0x163;
    undefined field335_0x164;
    undefined field336_0x165;
    undefined field337_0x166;
    undefined field338_0x167;
    undefined field339_0x168;
    undefined field340_0x169;
    undefined field341_0x16a;
    undefined field342_0x16b;
    undefined field343_0x16c;
    undefined field344_0x16d;
    undefined field345_0x16e;
    undefined field346_0x16f;
    undefined field347_0x170;
    undefined field348_0x171;
    undefined field349_0x172;
    undefined field350_0x173;
    undefined field351_0x174;
    undefined field352_0x175;
    undefined field353_0x176;
    undefined field354_0x177;
    undefined field355_0x178;
    undefined field356_0x179;
    undefined field357_0x17a;
    undefined field358_0x17b;
    undefined field359_0x17c;
    undefined field360_0x17d;
    undefined field361_0x17e;
    undefined field362_0x17f;
    undefined field363_0x180;
    undefined field364_0x181;
    undefined field365_0x182;
    undefined field366_0x183;
    undefined field367_0x184;
    undefined field368_0x185;
    undefined field369_0x186;
    undefined field370_0x187;
};

typedef struct tdstChannelActivationStateList_ tdstChannelActivationStateList_, *PtdstChannelActivationStateList_;

typedef struct tdstChannelActivationStateList_ *CHN_tdxHandleToCASElement;

struct tdstChannelActivationStateList_ {
};

typedef struct tdstAChannel_ tdstAChannel_, *PtdstAChannel_;

typedef struct tdstAChannel_ *CHN_tdxHandleToChannel;

struct tdstAChannel_ {
};

typedef struct tdstMorphChannelList_ tdstMorphChannelList_, *PtdstMorphChannelList_;

typedef struct tdstMorphChannelList_ *CHN_tdxHandleToMorphElement;

struct tdstMorphChannelList_ {
};

typedef GUID CLSID;

typedef struct _CPOINT CPOINT;

typedef struct _DIACTIONA DIACTIONA;

typedef DIACTIONA DIACTION;

typedef struct _DIACTIONFORMATA DIACTIONFORMATA;

typedef DIACTIONFORMATA DIACTIONFORMAT;

typedef struct _DIACTIONFORMATW DIACTIONFORMATW;

typedef struct _DIACTIONW DIACTIONW;

typedef struct DICONDITION DICONDITION, *PDICONDITION;

struct DICONDITION {
    LONG lOffset;
    LONG lPositiveCoefficient;
    LONG lNegativeCoefficient;
    DWORD dwPositiveSaturation;
    DWORD dwNegativeSaturation;
    LONG lDeadBand;
};

typedef struct _DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMSA;

typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS;

typedef struct _DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMSW;

typedef struct DICONSTANTFORCE DICONSTANTFORCE, *PDICONSTANTFORCE;

struct DICONSTANTFORCE {
    LONG lMagnitude;
};

typedef struct DICUSTOMFORCE DICUSTOMFORCE, *PDICUSTOMFORCE;

typedef long *LPLONG;

struct DICUSTOMFORCE {
    DWORD cChannels;
    DWORD dwSamplePeriod;
    DWORD cSamples;
    LPLONG rglForceData;
};

typedef struct _DIDATAFORMAT DIDATAFORMAT;

typedef struct DIDEVCAPS DIDEVCAPS, *PDIDEVCAPS;

struct DIDEVCAPS {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwDevType;
    DWORD dwAxes;
    DWORD dwButtons;
    DWORD dwPOVs;
    DWORD dwFFSamplePeriod;
    DWORD dwFFMinTimeResolution;
    DWORD dwFirmwareRevision;
    DWORD dwHardwareRevision;
    DWORD dwFFDriverVersion;
};

typedef struct DIDEVCAPS_DX3 DIDEVCAPS_DX3, *PDIDEVCAPS_DX3;

struct DIDEVCAPS_DX3 {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwDevType;
    DWORD dwAxes;
    DWORD dwButtons;
    DWORD dwPOVs;
};

typedef struct _DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFOA;

typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO;

typedef struct _DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADERA;

typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER;

typedef struct _DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADERW;

typedef struct _DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFOW;

typedef struct DIDEVICEINSTANCEA DIDEVICEINSTANCEA, *PDIDEVICEINSTANCEA;

typedef struct DIDEVICEINSTANCEA DIDEVICEINSTANCE;

typedef ushort WORD;

struct DIDEVICEINSTANCEA {
    DWORD dwSize;
    GUID guidInstance;
    GUID guidProduct;
    DWORD dwDevType;
    CHAR tszInstanceName[260];
    CHAR tszProductName[260];
    GUID guidFFDriver;
    WORD wUsagePage;
    WORD wUsage;
};

typedef struct DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3A, *PDIDEVICEINSTANCE_DX3A;

typedef struct DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;

struct DIDEVICEINSTANCE_DX3A {
    DWORD dwSize;
    GUID guidInstance;
    GUID guidProduct;
    DWORD dwDevType;
    CHAR tszInstanceName[260];
    CHAR tszProductName[260];
};

typedef struct DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3W, *PDIDEVICEINSTANCE_DX3W;

struct DIDEVICEINSTANCE_DX3W {
    DWORD dwSize;
    GUID guidInstance;
    GUID guidProduct;
    DWORD dwDevType;
    WCHAR tszInstanceName[260];
    WCHAR tszProductName[260];
};

typedef struct DIDEVICEINSTANCEW DIDEVICEINSTANCEW, *PDIDEVICEINSTANCEW;

struct DIDEVICEINSTANCEW {
    DWORD dwSize;
    GUID guidInstance;
    GUID guidProduct;
    DWORD dwDevType;
    WCHAR tszInstanceName[260];
    WCHAR tszProductName[260];
    GUID guidFFDriver;
    WORD wUsagePage;
    WORD wUsage;
};

typedef struct DIDEVICEOBJECTDATA DIDEVICEOBJECTDATA, *PDIDEVICEOBJECTDATA;

struct DIDEVICEOBJECTDATA {
    DWORD dwOfs;
    DWORD dwData;
    DWORD dwTimeStamp;
    DWORD dwSequence;
    UINT_PTR uAppData;
};

typedef struct DIDEVICEOBJECTDATA_DX3 DIDEVICEOBJECTDATA_DX3, *PDIDEVICEOBJECTDATA_DX3;

struct DIDEVICEOBJECTDATA_DX3 {
    DWORD dwOfs;
    DWORD dwData;
    DWORD dwTimeStamp;
    DWORD dwSequence;
};

typedef struct DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCEA, *PDIDEVICEOBJECTINSTANCEA;

typedef struct DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;

struct DIDEVICEOBJECTINSTANCEA {
    DWORD dwSize;
    GUID guidType;
    DWORD dwOfs;
    DWORD dwType;
    DWORD dwFlags;
    CHAR tszName[260];
    DWORD dwFFMaxForce;
    DWORD dwFFForceResolution;
    WORD wCollectionNumber;
    WORD wDesignatorIndex;
    WORD wUsagePage;
    WORD wUsage;
    DWORD dwDimension;
    WORD wExponent;
    WORD wReportId;
};

typedef struct DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3A, *PDIDEVICEOBJECTINSTANCE_DX3A;

typedef struct DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;

struct DIDEVICEOBJECTINSTANCE_DX3A {
    DWORD dwSize;
    GUID guidType;
    DWORD dwOfs;
    DWORD dwType;
    DWORD dwFlags;
    CHAR tszName[260];
};

typedef struct DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3W, *PDIDEVICEOBJECTINSTANCE_DX3W;

struct DIDEVICEOBJECTINSTANCE_DX3W {
    DWORD dwSize;
    GUID guidType;
    DWORD dwOfs;
    DWORD dwType;
    DWORD dwFlags;
    WCHAR tszName[260];
};

typedef struct DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCEW, *PDIDEVICEOBJECTINSTANCEW;

struct DIDEVICEOBJECTINSTANCEW {
    DWORD dwSize;
    GUID guidType;
    DWORD dwOfs;
    DWORD dwType;
    DWORD dwFlags;
    WCHAR tszName[260];
    DWORD dwFFMaxForce;
    DWORD dwFFForceResolution;
    WORD wCollectionNumber;
    WORD wDesignatorIndex;
    WORD wUsagePage;
    WORD wUsage;
    DWORD dwDimension;
    WORD wExponent;
    WORD wReportId;
};

typedef struct DIEFFECT DIEFFECT, *PDIEFFECT;

typedef DWORD *LPDWORD;

typedef struct DIENVELOPE DIENVELOPE, *PDIENVELOPE;

typedef struct DIENVELOPE *LPDIENVELOPE;

typedef void *LPVOID;

struct DIEFFECT {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwDuration;
    DWORD dwSamplePeriod;
    DWORD dwGain;
    DWORD dwTriggerButton;
    DWORD dwTriggerRepeatInterval;
    DWORD cAxes;
    LPDWORD rgdwAxes;
    LPLONG rglDirection;
    LPDIENVELOPE lpEnvelope;
    DWORD cbTypeSpecificParams;
    LPVOID lpvTypeSpecificParams;
    DWORD dwStartDelay;
};

struct DIENVELOPE {
    DWORD dwSize;
    DWORD dwAttackLevel;
    DWORD dwAttackTime;
    DWORD dwFadeLevel;
    DWORD dwFadeTime;
};

typedef struct DIEFFECT_DX5 DIEFFECT_DX5, *PDIEFFECT_DX5;

struct DIEFFECT_DX5 {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwDuration;
    DWORD dwSamplePeriod;
    DWORD dwGain;
    DWORD dwTriggerButton;
    DWORD dwTriggerRepeatInterval;
    DWORD cAxes;
    LPDWORD rgdwAxes;
    LPLONG rglDirection;
    LPDIENVELOPE lpEnvelope;
    DWORD cbTypeSpecificParams;
    LPVOID lpvTypeSpecificParams;
};

typedef struct DIEFFECT DIEFFECT_DX6;

typedef struct DIEFFECTINFOA DIEFFECTINFOA, *PDIEFFECTINFOA;

typedef struct DIEFFECTINFOA DIEFFECTINFO;

struct DIEFFECTINFOA {
    DWORD dwSize;
    GUID guid;
    DWORD dwEffType;
    DWORD dwStaticParams;
    DWORD dwDynamicParams;
    CHAR tszName[260];
};

typedef struct DIEFFECTINFOW DIEFFECTINFOW, *PDIEFFECTINFOW;

struct DIEFFECTINFOW {
    DWORD dwSize;
    GUID guid;
    DWORD dwEffType;
    DWORD dwStaticParams;
    DWORD dwDynamicParams;
    WCHAR tszName[260];
};

typedef struct DIEFFESCAPE DIEFFESCAPE, *PDIEFFESCAPE;

struct DIEFFESCAPE {
    DWORD dwSize;
    DWORD dwCommand;
    LPVOID lpvInBuffer;
    DWORD cbInBuffer;
    LPVOID lpvOutBuffer;
    DWORD cbOutBuffer;
};

typedef struct DIFILEEFFECT DIFILEEFFECT, *PDIFILEEFFECT;

typedef struct DIEFFECT *LPCDIEFFECT;

struct DIFILEEFFECT {
    DWORD dwSize;
    GUID GuidEffect;
    LPCDIEFFECT lpDiEffect;
    CHAR szFriendlyName[260];
};

typedef struct DIJOYSTATE DIJOYSTATE, *PDIJOYSTATE;

struct DIJOYSTATE {
    LONG lX;
    LONG lY;
    LONG lZ;
    LONG lRx;
    LONG lRy;
    LONG lRz;
    LONG rglSlider[2];
    DWORD rgdwPOV[4];
    BYTE rgbButtons[32];
};

typedef struct DIJOYSTATE2 DIJOYSTATE2, *PDIJOYSTATE2;

struct DIJOYSTATE2 {
    LONG lX;
    LONG lY;
    LONG lZ;
    LONG lRx;
    LONG lRy;
    LONG lRz;
    LONG rglSlider[2];
    DWORD rgdwPOV[4];
    BYTE rgbButtons[128];
    LONG lVX;
    LONG lVY;
    LONG lVZ;
    LONG lVRx;
    LONG lVRy;
    LONG lVRz;
    LONG rglVSlider[2];
    LONG lAX;
    LONG lAY;
    LONG lAZ;
    LONG lARx;
    LONG lARy;
    LONG lARz;
    LONG rglASlider[2];
    LONG lFX;
    LONG lFY;
    LONG lFZ;
    LONG lFRx;
    LONG lFRy;
    LONG lFRz;
    LONG rglFSlider[2];
};

typedef struct _DIMOUSESTATE DIMOUSESTATE;

typedef struct _DIMOUSESTATE2 DIMOUSESTATE2;

typedef struct _DIOBJECTDATAFORMAT DIOBJECTDATAFORMAT;

typedef struct DIPERIODIC DIPERIODIC, *PDIPERIODIC;

struct DIPERIODIC {
    DWORD dwMagnitude;
    LONG lOffset;
    DWORD dwPhase;
    DWORD dwPeriod;
};

typedef struct DIPROPCAL DIPROPCAL, *PDIPROPCAL;

typedef struct DIPROPHEADER DIPROPHEADER, *PDIPROPHEADER;

struct DIPROPHEADER {
    DWORD dwSize;
    DWORD dwHeaderSize;
    DWORD dwObj;
    DWORD dwHow;
};

struct DIPROPCAL {
    struct DIPROPHEADER diph;
    LONG lMin;
    LONG lCenter;
    LONG lMax;
};

typedef struct DIPROPCPOINTS DIPROPCPOINTS, *PDIPROPCPOINTS;

struct DIPROPCPOINTS {
    struct DIPROPHEADER diph;
    DWORD dwCPointsNum;
    CPOINT cp[8];
};

typedef struct DIPROPDWORD DIPROPDWORD, *PDIPROPDWORD;

struct DIPROPDWORD {
    struct DIPROPHEADER diph;
    DWORD dwData;
};

typedef struct DIPROPGUIDANDPATH DIPROPGUIDANDPATH, *PDIPROPGUIDANDPATH;

struct DIPROPGUIDANDPATH {
    struct DIPROPHEADER diph;
    GUID guidClass;
    WCHAR wszPath[260];
};

typedef struct DIPROPPOINTER DIPROPPOINTER, *PDIPROPPOINTER;

struct DIPROPPOINTER {
    struct DIPROPHEADER diph;
    UINT_PTR uData;
};

typedef struct DIPROPRANGE DIPROPRANGE, *PDIPROPRANGE;

struct DIPROPRANGE {
    struct DIPROPHEADER diph;
    LONG lMin;
    LONG lMax;
};

typedef struct DIPROPSTRING DIPROPSTRING, *PDIPROPSTRING;

struct DIPROPSTRING {
    struct DIPROPHEADER diph;
    WCHAR wsz[260];
};

typedef struct DIRAMPFORCE DIRAMPFORCE, *PDIRAMPFORCE;

struct DIRAMPFORCE {
    LONG lStart;
    LONG lEnd;
};

typedef struct FIL_tdstConcatFile_ FIL_tdstConcatFile_, *PFIL_tdstConcatFile_;

typedef struct FIL_tdstConcatFile_ FIL_tdstConcatFile;

typedef struct _iobuf FILE;

typedef struct FIL_tdstConcatFileElement_ FIL_tdstConcatFileElement_, *PFIL_tdstConcatFileElement_;

typedef struct FIL_tdstConcatFileElement_ FIL_tdstConcatFileElement;

struct FIL_tdstConcatFileElement_ {
    char *p_szFileName;
    long lPathNumber;
    long lOffset;
    ulong ulFileLength;
    ulong ulXorCode;
    ulong ulCheckSum;
};

struct FIL_tdstConcatFile_ {
    FILE *p_stFile;
    ulong ulNumberOfPath;
    ulong ulNumberOfFile;
    uchar bUseXorCode;
    uchar bUseCheckSum;
    uchar ucPathXorCode;
    uchar ucPathCheckSum;
    char **d_szPathList;
    FIL_tdstConcatFileElement *d_stConcatFileElement;
};

typedef struct FIL_tdstFileHeader_ FIL_tdstFileHeader_, *PFIL_tdstFileHeader_;

typedef struct FIL_tdstFileHeader_ FIL_tdstFileHeader;

struct FIL_tdstFileHeader_ {
    ulong ulWidth;
    ulong ulHeight;
    ulong ulImageSize;
    long lChromakeyIndex;
    ushort uwNbColorInPalette;
    uchar ucBpcInPalette;
    uchar ucBpp;
    uchar ucRLECode;
    uchar ucRed;
    uchar ucGreen;
    uchar ucBlue;
    uchar ucFormat;
    uchar ucVersion;
};

typedef struct FIL_tdstFileInConcatFile_ FIL_tdstFileInConcatFile_, *PFIL_tdstFileInConcatFile_;

typedef struct FIL_tdstFileInConcatFile_ FIL_tdstFileInConcatFile;

struct FIL_tdstFileInConcatFile_ {
    uchar bUseConcatFile;
    FILE *p_stFile;
    ulong ulFileActualSeek;
    ulong ulFileEndSeek;
    ulong ulFileXorCode;
    ulong ulFileCheckSum;
    ulong ulCacheSeek;
    ulong ulCacheSize;
    ulong ulCacheCheckSum;
    uchar *p_ucCache;
};

typedef struct FIL_tdstFileNameList_ FIL_tdstFileNameList_, *PFIL_tdstFileNameList_;

typedef struct FIL_tdstFileNameList_ FIL_tdstFileNameList;

typedef struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn, *PLST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn;

typedef struct FIL_tdstFileNameListElement_ FIL_tdstFileNameListElement_, *PFIL_tdstFileNameListElement_;

typedef struct FIL_tdstFileNameListElement_ *FIL_tdxHandleToFileNameListElement;

struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn {
    FIL_tdxHandleToFileNameListElement hFirstElementDyn;
    FIL_tdxHandleToFileNameListElement hLastElementDyn;
    long lNumberOfElementsDyn;
};

struct FIL_tdstFileNameList_ {
    struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn hFileNameListAnchor;
};

struct FIL_tdstFileNameListElement_ {
    FIL_tdxHandleToFileNameListElement hNextBrotherDyn;
    FIL_tdxHandleToFileNameListElement hPrevBrotherDyn;
    struct LST2_tdstAnchorToFIL_tdxHandleToFileNameListElementDyn *hFatherDyn;
    char *szFileName;
};


/* WARNING! conflicting data type names: /file.h/FIL_tdstFileNameListElement_ - /engine.h/FIL_tdstFileNameListElement_ */

typedef struct FIL_tdstGF_ FIL_tdstGF_, *PFIL_tdstGF_;

typedef struct FIL_tdstGF_ FIL_tdstGF;

struct FIL_tdstGF_ {
    struct FIL_tdstFileHeader_ stFileHeader;
    uchar *p_ucBitMap;
    uchar *p_ucPalette;
};

typedef struct FIL_tdstRealGFFileHeader_ FIL_tdstRealGFFileHeader_, *PFIL_tdstRealGFFileHeader_;

typedef struct FIL_tdstRealGFFileHeader_ FIL_tdstRealGFFileHeader;

struct FIL_tdstRealGFFileHeader_ {
    ulong ulFormat;
    ulong ulWidth;
    ulong ulHeight;
    uchar ucBpp;
    uchar ucRLECode;
};

typedef struct FIL_tdstConcatFile_ *FIL_tdxHandleToConcatFile;

typedef struct FIL_tdstConcatFileElement_ *FIL_tdxHandleToConcatFileElement;

typedef struct FIL_tdstFileInConcatFile_ *FIL_tdxHandleToFileInConcatFile;

typedef struct FIL_tdstFileNameList_ *FIL_tdxHandleToFileNameList;

typedef struct FileInner1 FileInner1, *PFileInner1;

struct FileInner1 {
    undefined field0_0x0;
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined field4_0x4;
    undefined field5_0x5;
    undefined field6_0x6;
    undefined field7_0x7;
    undefined field8_0x8;
    undefined field9_0x9;
    undefined field10_0xa;
    undefined field11_0xb;
    undefined field12_0xc;
    undefined field13_0xd;
    undefined field14_0xe;
    undefined field15_0xf;
    undefined field16_0x10;
    undefined field17_0x11;
    undefined field18_0x12;
    undefined field19_0x13;
    undefined field20_0x14;
    undefined field21_0x15;
    undefined field22_0x16;
    undefined field23_0x17;
};

typedef struct Float2 Float2, *PFloat2;

struct Float2 { /* Vector (r3) */
    float x;
    float y;
};

typedef struct Float3 Float3, *PFloat3;

struct Float3 { /* Vector (r3) */
    float x;
    float y;
    float z;
};

typedef struct Float4 Float4, *PFloat4;

struct Float4 { /* Vector (r3) */
    float x;
    float y;
    float z;
    float w;
};

typedef struct Float4x4 Float4x4, *PFloat4x4;

struct Float4x4 { /* Matrix (row major?) math type */
    struct Float4 x;
    struct Float4 y;
    struct Float4 z;
    struct Float4 w;
};

typedef GUID FMTID;

typedef struct _s_FuncInfo FuncInfo;

typedef struct GAM_as4_inner GAM_as4_inner, *PGAM_as4_inner;

struct GAM_as4_inner {
    dword unk;
    byte tag; /* Created by retype action */
    undefined field2_0x5;
    undefined field3_0x6;
    undefined field4_0x7;
    undefined field5_0x8;
    undefined field6_0x9;
    undefined field7_0xa;
    undefined field8_0xb;
    undefined field9_0xc;
    undefined field10_0xd;
    undefined field11_0xe;
    undefined field12_0xf;
    undefined field13_0x10;
    undefined field14_0x11;
    undefined field15_0x12;
    undefined field16_0x13;
    undefined field17_0x14;
    undefined field18_0x15;
    undefined field19_0x16;
    undefined field20_0x17;
    undefined field21_0x18;
    undefined field22_0x19;
    undefined field23_0x1a;
    undefined field24_0x1b;
    float field25_0x1c;
    undefined field26_0x20;
    undefined field27_0x21;
    undefined field28_0x22;
    undefined field29_0x23;
    float field30_0x24;
    undefined field31_0x28;
    undefined field32_0x29;
    undefined field33_0x2a;
    undefined field34_0x2b;
    undefined field35_0x2c;
    undefined field36_0x2d;
    undefined field37_0x2e;
    undefined field38_0x2f;
    undefined field39_0x30;
    undefined field40_0x31;
    undefined field41_0x32;
    undefined field42_0x33;
    float field43_0x34;
    undefined field44_0x38;
    undefined field45_0x39;
    undefined field46_0x3a;
    undefined field47_0x3b;
    float field48_0x3c;
    float field49_0x40;
    dword counter;
};

typedef struct GAM_astruct_4 GAM_astruct_4, *PGAM_astruct_4;

struct GAM_astruct_4 {
    undefined field0_0x0;
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined field4_0x4;
    undefined field5_0x5;
    undefined field6_0x6;
    undefined field7_0x7;
    undefined field8_0x8;
    undefined field9_0x9;
    undefined field10_0xa;
    undefined field11_0xb;
    undefined field12_0xc;
    undefined field13_0xd;
    undefined field14_0xe;
    undefined field15_0xf;
    undefined field16_0x10;
    undefined field17_0x11;
    undefined field18_0x12;
    undefined field19_0x13;
    undefined field20_0x14;
    undefined field21_0x15;
    undefined field22_0x16;
    undefined field23_0x17;
    undefined field24_0x18;
    undefined field25_0x19;
    undefined field26_0x1a;
    undefined field27_0x1b;
    undefined field28_0x1c;
    undefined field29_0x1d;
    undefined field30_0x1e;
    undefined field31_0x1f;
    undefined field32_0x20;
    undefined field33_0x21;
    undefined field34_0x22;
    undefined field35_0x23;
    undefined field36_0x24;
    undefined field37_0x25;
    undefined field38_0x26;
    undefined field39_0x27;
    undefined field40_0x28;
    undefined field41_0x29;
    undefined field42_0x2a;
    undefined field43_0x2b;
    undefined field44_0x2c;
    undefined field45_0x2d;
    undefined field46_0x2e;
    undefined field47_0x2f;
    undefined field48_0x30;
    undefined field49_0x31;
    undefined field50_0x32;
    undefined field51_0x33;
    undefined field52_0x34;
    undefined field53_0x35;
    undefined field54_0x36;
    undefined field55_0x37;
    undefined field56_0x38;
    undefined field57_0x39;
    undefined field58_0x3a;
    undefined field59_0x3b;
    undefined field60_0x3c;
    undefined field61_0x3d;
    undefined field62_0x3e;
    undefined field63_0x3f;
    undefined field64_0x40;
    undefined field65_0x41;
    undefined field66_0x42;
    undefined field67_0x43;
    undefined field68_0x44;
    undefined field69_0x45;
    undefined field70_0x46;
    undefined field71_0x47;
    undefined field72_0x48;
    undefined field73_0x49;
    undefined field74_0x4a;
    undefined field75_0x4b;
    undefined field76_0x4c;
    undefined field77_0x4d;
    undefined field78_0x4e;
    undefined field79_0x4f;
    undefined field80_0x50;
    undefined field81_0x51;
    undefined field82_0x52;
    undefined field83_0x53;
    undefined field84_0x54;
    undefined field85_0x55;
    undefined field86_0x56;
    undefined field87_0x57;
    undefined field88_0x58;
    undefined field89_0x59;
    undefined field90_0x5a;
    undefined field91_0x5b;
    undefined field92_0x5c;
    undefined field93_0x5d;
    undefined field94_0x5e;
    undefined field95_0x5f;
    undefined field96_0x60;
    undefined field97_0x61;
    undefined field98_0x62;
    undefined field99_0x63;
    undefined field100_0x64;
    undefined field101_0x65;
    undefined field102_0x66;
    undefined field103_0x67;
    struct GAM_as4_inner field104_0x68[4];
    undefined field105_0x188;
    undefined field106_0x189;
    undefined field107_0x18a;
    undefined field108_0x18b;
    undefined field109_0x18c;
    undefined field110_0x18d;
    undefined field111_0x18e;
    undefined field112_0x18f;
    undefined field113_0x190;
    undefined field114_0x191;
    undefined field115_0x192;
    undefined field116_0x193;
    undefined field117_0x194;
    undefined field118_0x195;
    undefined field119_0x196;
    undefined field120_0x197;
};

typedef struct GAM_EngineStructure GAM_EngineStructure, *PGAM_EngineStructure;

enum GAM_EngineMode {
    E_EM_ModeInvalid=0,
    E_EM_ModeStartingProgram=1,
    E_EM_ModeStoppingProgram=2,
    E_EM_ModeEnterGame=3,
    E_EM_ModeQuitGame=4,
    E_EM_ModeEnterLevel=5,
    E_EM_ModeChangeLevel=6,
    E_EM_ModeDeadLoop=7,
    E_EM_ModePlayerDead=8,
    E_EM_ModePlaying=9,
    E_EM_NbTotalEngineMode=10
};

enum GAM_DisplayFixMode {
    E_DFM_DisplayNothing=0,
    E_DFM_DisplayHitPoints=1,
    E_DFM_DisplayGameSave=2,
    E_DFM_DisplayAll=255
};

typedef struct TMR_tdstEngineTimerStructure TMR_tdstEngineTimerStructure, *PTMR_tdstEngineTimerStructure;

enum GAM_InputMode {
    E_IM_Normal=0,
    E_IM_Commands=1,
    E_IM_NbOfMode=2
};

typedef short GLD_DeviceHandle;

typedef short GLD_ViewportHandle;

typedef unsigned short    word;
typedef struct GLD_ViewportAttributes GLD_ViewportAttributes, *PGLD_ViewportAttributes;

typedef struct GLI_Camera GLI_Camera, *PGLI_Camera;

typedef struct GLI_SpecificAttributesFor3D GLI_SpecificAttributesFor3D, *PGLI_SpecificAttributesFor3D;

typedef struct GLI_tdstViewportManagement GLI_tdstViewportManagement, *PGLI_tdstViewportManagement;

typedef struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn LST2_tdstAnchorTotdxHandleToNodeCameraDyn, *PLST2_tdstAnchorTotdxHandleToNodeCameraDyn;

typedef struct LST2_tdstAnchorTotdxHandleToFamilyListDyn LST2_tdstAnchorTotdxHandleToFamilyListDyn, *PLST2_tdstAnchorTotdxHandleToFamilyListDyn;

typedef struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn, *PLST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn;

typedef struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn, *PLST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn;

typedef struct HIE_tdstSuperObject HIE_tdstSuperObject, *PHIE_tdstSuperObject;

typedef float GLI_tdxValue;

typedef struct GLI_tdst2DVertex GLI_tdst2DVertex, *PGLI_tdst2DVertex;

typedef struct tdstFamilyList_ tdstFamilyList_, *PtdstFamilyList_;

typedef struct tdstFamilyList_ *tdxHandleToFamilyList;

struct TMR_tdstEngineTimerStructure {
    ulong ulFrameNumber;
    ushort wTimerHandle;
    ulong ulCurrentTimerCount;
    ulong ulDeltaTimerCount;
    ulong a_ulCounter[16];
    ulong ulUsefulDeltaTime;
    ulong ulPauseTime;
    float xFrameLength;
    struct TMR_tdstTimerCount stRealTimeCount;
    struct TMR_tdstTimerCount stPauseTime;
    ulong ulTickPerMs;
};

struct HIE_tdstSuperObject {
};

struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn {
};

struct tdstFamilyList_ {
};

struct GLI_tdst2DVertex {
    float xX;
    float xY;
    float xOoZ;
};

struct GLD_ViewportAttributes {
    ulong dwInitialHeight;
    ulong dwInitialWidth;
    ulong dwHeight;
    ulong dwWidth;
    ulong dwTopInPix;
    ulong dwBottomInPix;
    ulong dwLeftInPix;
    ulong dwRightInPix;
    ulong dwTopInPixForClip;
    ulong dwBottomInPixForClip;
    ulong dwLeftInPixForClip;
    ulong dwRightInPixForClip;
    ulong dwWidthInPercent;
    ulong dwHeightInPercent;
    ulong dwClipTopInPix;
    ulong dwClipBottomInPix;
    ulong dwClipLeftInPix;
    ulong dwClipRightInPix;
    ulong dwClipTopInPerMille;
    ulong dwClipBottomInPerMille;
    ulong dwClipLeftInPerMille;
    ulong dwClipRightInPerMille;
    long lOffsetPosX;
    long lOffsetPosY;
    char *p_cVirtualScreen;
    long lPitch;
    void *p_vSpecificToXD;
    GLD_DeviceHandle hDevice;
    GLD_ViewportHandle hViewport;
};

struct LST2_tdstAnchorTotdxHandleToFamilyListDyn {
    tdxHandleToFamilyList hFirstElementDyn;
    tdxHandleToFamilyList hLastElementDyn;
    long lNumberOfElementsDyn;
};

struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn {
};

struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn {
};

struct GLI_SpecificAttributesFor3D {
    struct GLI_Camera *p_stCam;
    float xNear;
};

struct GAM_EngineStructure {
    enum GAM_EngineMode eEngineMode;
    char szLevelName[30];
    char szNextLevelName[30];
    char szFirstLevelName[30];
    undefined field4_0x5b;
    enum GAM_DisplayFixMode eDisplayFixMode;
    ulong ulDisplayMode;
    undefined field7_0x61;
    undefined field8_0x62;
    undefined field9_0x63;
    struct TMR_tdstEngineTimerStructure stEngineTimer;
    undefined field11_0xd4;
    undefined field12_0xd5;
    enum GAM_InputMode eInputMode; /* maybe? */
    undefined field14_0xda;
    undefined field15_0xdb;
    undefined field16_0xdc;
    undefined field17_0xdd;
    undefined field18_0xde;
    undefined field19_0xdf;
    undefined field20_0xe0;
    undefined field21_0xe1;
    undefined field22_0xe2;
    undefined field23_0xe3;
    undefined field24_0xe4;
    undefined field25_0xe5;
    undefined field26_0xe6;
    undefined field27_0xe7;
    GLD_DeviceHandle hGLDDevice; /* correct */
    GLD_ViewportHandle hGLDViewport; /* correct */
    undefined field30_0xec;
    undefined field31_0xed;
    undefined field32_0xee;
    undefined field33_0xef;
    undefined field34_0xf0;
    undefined field35_0xf1;
    word screenshotVpHandle_maybe;
    struct GLD_ViewportAttributes stViewportAttr; /* correct 0xf4 */
    struct GLI_Camera *p_stGameViewportCamera;
    GLD_ViewportHandle hGLDFixViewport;
    struct GLD_ViewportAttributes stFixViewportAttr1;
    struct GLI_SpecificAttributesFor3D stFixAttributes3D;
    struct GLI_Camera *p_stFixCamera;
    struct GLI_tdstViewportManagement *a_hViewportArray;
    struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn hCameraList;
    struct LST2_tdstAnchorTotdxHandleToFamilyListDyn hFamilyList;
    struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn hMainCharacterList;
    struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn hAlwaysActiveCharactersList;
    struct HIE_tdstSuperObject *g_hMainActor;
    struct HIE_tdstSuperObject *g_hNextMainActor;
    struct HIE_tdstSuperObject *g_hStdCamCharacter;
    undefined field51_0x202;
    undefined field52_0x203;
    undefined field53_0x204;
    undefined field54_0x205;
    undefined field55_0x206;
    undefined field56_0x207;
    undefined field57_0x208;
    undefined field58_0x209;
    undefined field59_0x20a;
    undefined field60_0x20b;
    undefined field61_0x20c;
    undefined field62_0x20d;
    undefined field63_0x20e;
    undefined field64_0x20f;
    undefined field65_0x210;
    undefined field66_0x211;
    undefined field67_0x212;
    undefined field68_0x213;
    undefined field69_0x214;
    undefined field70_0x215;
    undefined field71_0x216;
    undefined field72_0x217;
    undefined field73_0x218;
    undefined field74_0x219;
    undefined field75_0x21a;
    undefined field76_0x21b;
    undefined field77_0x21c;
    undefined field78_0x21d;
    undefined field79_0x21e;
    undefined field80_0x21f;
    undefined field81_0x220;
    undefined field82_0x221;
    undefined field83_0x222;
    undefined field84_0x223;
    undefined field85_0x224;
    undefined field86_0x225;
    undefined field87_0x226;
    undefined field88_0x227;
    undefined field89_0x228;
    undefined field90_0x229;
    undefined field91_0x22a;
    undefined field92_0x22b;
    undefined field93_0x22c;
    undefined field94_0x22d;
    undefined field95_0x22e;
    undefined field96_0x22f;
    undefined field97_0x230;
    undefined field98_0x231;
    undefined field99_0x232;
    undefined field100_0x233;
    undefined field101_0x234;
    undefined field102_0x235;
    undefined field103_0x236;
    undefined field104_0x237;
    undefined field105_0x238;
    undefined field106_0x239;
    undefined field107_0x23a;
    undefined field108_0x23b;
    undefined field109_0x23c;
    undefined field110_0x23d;
    undefined field111_0x23e;
    undefined field112_0x23f;
    undefined field113_0x240;
    undefined field114_0x241;
    undefined field115_0x242;
    undefined field116_0x243;
    undefined field117_0x244;
    undefined field118_0x245;
    undefined field119_0x246;
    undefined field120_0x247;
    undefined field121_0x248;
    undefined field122_0x249;
    undefined field123_0x24a;
    undefined field124_0x24b;
    undefined field125_0x24c;
    undefined field126_0x24d;
    undefined field127_0x24e;
    undefined field128_0x24f;
    undefined field129_0x250;
    undefined field130_0x251;
    undefined field131_0x252;
    undefined field132_0x253;
    undefined field133_0x254;
    undefined field134_0x255;
    undefined field135_0x256;
    undefined field136_0x257;
    undefined field137_0x258;
    undefined field138_0x259;
    undefined field139_0x25a;
    undefined field140_0x25b;
    undefined field141_0x25c;
    undefined field142_0x25d;
    undefined field143_0x25e;
    undefined field144_0x25f;
    undefined field145_0x260;
    undefined field146_0x261;
    undefined field147_0x262;
    undefined field148_0x263;
    undefined field149_0x264;
    undefined field150_0x265;
    undefined field151_0x266;
    undefined field152_0x267;
    undefined field153_0x268;
    undefined field154_0x269;
    undefined field155_0x26a;
    undefined field156_0x26b;
    undefined field157_0x26c;
    undefined field158_0x26d;
    undefined field159_0x26e;
    undefined field160_0x26f;
    undefined field161_0x270;
    undefined field162_0x271;
    undefined field163_0x272;
    undefined field164_0x273;
    undefined field165_0x274;
    undefined field166_0x275;
    undefined field167_0x276;
    undefined field168_0x277;
    undefined field169_0x278;
    undefined field170_0x279;
    undefined field171_0x27a;
    undefined field172_0x27b;
    undefined field173_0x27c;
    undefined field174_0x27d;
    undefined field175_0x27e;
    undefined field176_0x27f;
    undefined field177_0x280;
    undefined field178_0x281;
    undefined field179_0x282;
    undefined field180_0x283;
    undefined field181_0x284;
    undefined field182_0x285;
    undefined field183_0x286;
    undefined field184_0x287;
    undefined field185_0x288;
    undefined field186_0x289;
    undefined field187_0x28a;
    undefined field188_0x28b;
    undefined field189_0x28c;
    undefined field190_0x28d;
    undefined field191_0x28e;
    undefined field192_0x28f;
    undefined field193_0x290;
    undefined field194_0x291;
    undefined field195_0x292;
    undefined field196_0x293;
    undefined field197_0x294;
    undefined field198_0x295;
    undefined field199_0x296;
    undefined field200_0x297;
    undefined field201_0x298;
    undefined field202_0x299;
    undefined field203_0x29a;
    undefined field204_0x29b;
    undefined field205_0x29c;
    undefined field206_0x29d;
    undefined field207_0x29e;
    undefined field208_0x29f;
    undefined field209_0x2a0;
    undefined field210_0x2a1;
    undefined field211_0x2a2;
    undefined field212_0x2a3;
    undefined field213_0x2a4;
    undefined field214_0x2a5;
    undefined field215_0x2a6;
    undefined field216_0x2a7;
    undefined field217_0x2a8;
    undefined field218_0x2a9;
    undefined field219_0x2aa;
    undefined field220_0x2ab;
    undefined field221_0x2ac;
    undefined field222_0x2ad;
    undefined field223_0x2ae;
    undefined field224_0x2af;
    undefined field225_0x2b0;
    undefined field226_0x2b1;
    undefined field227_0x2b2;
    undefined field228_0x2b3;
    undefined field229_0x2b4;
    undefined field230_0x2b5;
    undefined field231_0x2b6;
    undefined field232_0x2b7;
    undefined field233_0x2b8;
    undefined field234_0x2b9;
    undefined field235_0x2ba;
    undefined field236_0x2bb;
    dword screenshotWidth;
    dword screenshotHeight;
    undefined field239_0x2c4;
    undefined field240_0x2c5;
    undefined field241_0x2c6;
    undefined field242_0x2c7;
    undefined field243_0x2c8;
    undefined field244_0x2c9;
    undefined field245_0x2ca;
    undefined field246_0x2cb;
    undefined field247_0x2cc;
    undefined field248_0x2cd;
    undefined field249_0x2ce;
    undefined field250_0x2cf;
    undefined field251_0x2d0;
    undefined field252_0x2d1;
    undefined field253_0x2d2;
    undefined field254_0x2d3;
    undefined field255_0x2d4;
    undefined field256_0x2d5;
    undefined field257_0x2d6;
    undefined field258_0x2d7;
    undefined field259_0x2d8;
    undefined field260_0x2d9;
    undefined field261_0x2da;
    undefined field262_0x2db;
    undefined field263_0x2dc;
    undefined field264_0x2dd;
    undefined field265_0x2de;
    undefined field266_0x2df;
    undefined field267_0x2e0;
    undefined field268_0x2e1;
    undefined field269_0x2e2;
    undefined field270_0x2e3;
    undefined field271_0x2e4;
    undefined field272_0x2e5;
    undefined field273_0x2e6;
    undefined field274_0x2e7;
    undefined field275_0x2e8;
    undefined field276_0x2e9;
    undefined field277_0x2ea;
    undefined field278_0x2eb;
    undefined field279_0x2ec;
    undefined field280_0x2ed;
    undefined field281_0x2ee;
    undefined field282_0x2ef;
    undefined field283_0x2f0;
    undefined field284_0x2f1;
    undefined field285_0x2f2;
    undefined field286_0x2f3;
    undefined field287_0x2f4;
    undefined field288_0x2f5;
    undefined field289_0x2f6;
    undefined field290_0x2f7;
    undefined field291_0x2f8;
    undefined field292_0x2f9;
    undefined field293_0x2fa;
    undefined field294_0x2fb;
    undefined field295_0x2fc;
    undefined field296_0x2fd;
    undefined field297_0x2fe;
    undefined field298_0x2ff;
    undefined field299_0x300;
    undefined field300_0x301;
    undefined field301_0x302;
    undefined field302_0x303;
    undefined field303_0x304;
    undefined field304_0x305;
    undefined field305_0x306;
    undefined field306_0x307;
    undefined field307_0x308;
    undefined field308_0x309;
    undefined field309_0x30a;
    undefined field310_0x30b;
    undefined field311_0x30c;
    undefined field312_0x30d;
    undefined field313_0x30e;
    undefined field314_0x30f;
    undefined field315_0x310;
    undefined field316_0x311;
    undefined field317_0x312;
    undefined field318_0x313;
    undefined field319_0x314;
    undefined field320_0x315;
    undefined field321_0x316;
    undefined field322_0x317;
    undefined field323_0x318;
    undefined field324_0x319;
    undefined field325_0x31a;
    undefined field326_0x31b;
    undefined field327_0x31c;
    undefined field328_0x31d;
    undefined field329_0x31e;
    undefined field330_0x31f;
    undefined field331_0x320;
    undefined field332_0x321;
    undefined field333_0x322;
    undefined field334_0x323;
    undefined field335_0x324;
    undefined field336_0x325;
    undefined field337_0x326;
    undefined field338_0x327;
    undefined field339_0x328;
    undefined field340_0x329;
    undefined field341_0x32a;
    undefined field342_0x32b;
    undefined field343_0x32c;
    undefined field344_0x32d;
    undefined field345_0x32e;
    undefined field346_0x32f;
    undefined field347_0x330;
    undefined field348_0x331;
    undefined field349_0x332;
    undefined field350_0x333;
    undefined field351_0x334;
    undefined field352_0x335;
    undefined field353_0x336;
    undefined field354_0x337;
    GLD_ViewportHandle viewportHandleUnk;
    undefined field356_0x33a;
    undefined field357_0x33b;
    undefined field358_0x33c;
    undefined field359_0x33d;
    undefined field360_0x33e;
    undefined field361_0x33f;
    undefined field362_0x340;
    undefined field363_0x341;
    undefined field364_0x342;
    undefined field365_0x343;
    struct GLD_ViewportAttributes viewportAttribUnk;
    undefined field367_0x3b4;
    undefined field368_0x3b5;
    undefined field369_0x3b6;
    undefined field370_0x3b7;
    undefined field371_0x3b8;
    undefined field372_0x3b9;
    undefined field373_0x3ba;
    undefined field374_0x3bb;
    undefined field375_0x3bc;
    undefined field376_0x3bd;
    undefined field377_0x3be;
    undefined field378_0x3bf;
    undefined field379_0x3c0;
    undefined field380_0x3c1;
    undefined field381_0x3c2;
    undefined field382_0x3c3;
    undefined field383_0x3c4;
    undefined field384_0x3c5;
    undefined field385_0x3c6;
    undefined field386_0x3c7;
    undefined field387_0x3c8;
    undefined field388_0x3c9;
    undefined field389_0x3ca;
    undefined field390_0x3cb;
    undefined field391_0x3cc;
    undefined field392_0x3cd;
    undefined field393_0x3ce;
    undefined field394_0x3cf;
    undefined field395_0x3d0;
    undefined field396_0x3d1;
    undefined field397_0x3d2;
    undefined field398_0x3d3;
    undefined field399_0x3d4;
    undefined field400_0x3d5;
    undefined field401_0x3d6;
    undefined field402_0x3d7;
    undefined field403_0x3d8;
    undefined field404_0x3d9;
    undefined field405_0x3da;
    undefined field406_0x3db;
    undefined field407_0x3dc;
    undefined field408_0x3dd;
    undefined field409_0x3de;
    undefined field410_0x3df;
    undefined field411_0x3e0;
    undefined field412_0x3e1;
    undefined field413_0x3e2;
    undefined field414_0x3e3;
    undefined field415_0x3e4;
    undefined field416_0x3e5;
    undefined field417_0x3e6;
    undefined field418_0x3e7;
    undefined field419_0x3e8;
    undefined field420_0x3e9;
    undefined field421_0x3ea;
    undefined field422_0x3eb;
    undefined field423_0x3ec;
    undefined field424_0x3ed;
    undefined field425_0x3ee;
    undefined field426_0x3ef;
    undefined field427_0x3f0;
    undefined field428_0x3f1;
    undefined field429_0x3f2;
    undefined field430_0x3f3;
    undefined field431_0x3f4;
    undefined field432_0x3f5;
    undefined field433_0x3f6;
    undefined field434_0x3f7;
    undefined field435_0x3f8;
    undefined field436_0x3f9;
    undefined field437_0x3fa;
    undefined field438_0x3fb;
    undefined field439_0x3fc;
    undefined field440_0x3fd;
    undefined field441_0x3fe;
    undefined field442_0x3ff;
    undefined field443_0x400;
    undefined field444_0x401;
    undefined field445_0x402;
    undefined field446_0x403;
    undefined field447_0x404;
    undefined field448_0x405;
    undefined field449_0x406;
    undefined field450_0x407;
    undefined field451_0x408;
    undefined field452_0x409;
    undefined field453_0x40a;
    undefined field454_0x40b;
    undefined field455_0x40c;
    undefined field456_0x40d;
    undefined field457_0x40e;
    undefined field458_0x40f;
    undefined field459_0x410;
    undefined field460_0x411;
    undefined field461_0x412;
    undefined field462_0x413;
    undefined field463_0x414;
    undefined field464_0x415;
    undefined field465_0x416;
    undefined field466_0x417;
    undefined field467_0x418;
    undefined field468_0x419;
    undefined field469_0x41a;
    undefined field470_0x41b;
    undefined field471_0x41c;
    undefined field472_0x41d;
    undefined field473_0x41e;
    undefined field474_0x41f;
    undefined field475_0x420;
    undefined field476_0x421;
    undefined field477_0x422;
    undefined field478_0x423;
    undefined field479_0x424;
    undefined field480_0x425;
    undefined field481_0x426;
    undefined field482_0x427;
    undefined field483_0x428;
    undefined field484_0x429;
    undefined field485_0x42a;
    undefined field486_0x42b;
    undefined field487_0x42c;
    undefined field488_0x42d;
    undefined field489_0x42e;
    undefined field490_0x42f;
    undefined field491_0x430;
    undefined field492_0x431;
    undefined field493_0x432;
    undefined field494_0x433;
    undefined field495_0x434;
    undefined field496_0x435;
    undefined field497_0x436;
    undefined field498_0x437;
    undefined field499_0x438;
    undefined field500_0x439;
    undefined field501_0x43a;
    undefined field502_0x43b;
    undefined field503_0x43c;
    undefined field504_0x43d;
    undefined field505_0x43e;
    undefined field506_0x43f;
    undefined field507_0x440;
    undefined field508_0x441;
    undefined field509_0x442;
    undefined field510_0x443;
    undefined field511_0x444;
    undefined field512_0x445;
    undefined field513_0x446;
    undefined field514_0x447;
    undefined field515_0x448;
    undefined field516_0x449;
    undefined field517_0x44a;
    undefined field518_0x44b;
    undefined field519_0x44c;
    undefined field520_0x44d;
    undefined field521_0x44e;
    undefined field522_0x44f;
    undefined field523_0x450;
    undefined field524_0x451;
    undefined field525_0x452;
    undefined field526_0x453;
    undefined field527_0x454;
    undefined field528_0x455;
    undefined field529_0x456;
    undefined field530_0x457;
    undefined field531_0x458;
    undefined field532_0x459;
    undefined field533_0x45a;
    undefined field534_0x45b;
    undefined field535_0x45c;
    undefined field536_0x45d;
    undefined field537_0x45e;
    undefined field538_0x45f;
    undefined field539_0x460;
    undefined field540_0x461;
    undefined field541_0x462;
    undefined field542_0x463;
    undefined field543_0x464;
    undefined field544_0x465;
    undefined field545_0x466;
    undefined field546_0x467;
    undefined field547_0x468;
    undefined field548_0x469;
    undefined field549_0x46a;
    undefined field550_0x46b;
    undefined field551_0x46c;
    undefined field552_0x46d;
    undefined field553_0x46e;
    undefined field554_0x46f;
    undefined field555_0x470;
    undefined field556_0x471;
    undefined field557_0x472;
    undefined field558_0x473;
    undefined field559_0x474;
    undefined field560_0x475;
    undefined field561_0x476;
    undefined field562_0x477;
    undefined field563_0x478;
    undefined field564_0x479;
    undefined field565_0x47a;
    undefined field566_0x47b;
    undefined field567_0x47c;
    undefined field568_0x47d;
    undefined field569_0x47e;
    undefined field570_0x47f;
    undefined field571_0x480;
    undefined field572_0x481;
    undefined field573_0x482;
    undefined field574_0x483;
    undefined field575_0x484;
    undefined field576_0x485;
    undefined field577_0x486;
    undefined field578_0x487;
    undefined field579_0x488;
    undefined field580_0x489;
    undefined field581_0x48a;
    undefined field582_0x48b;
    undefined field583_0x48c;
    undefined field584_0x48d;
    undefined field585_0x48e;
    undefined field586_0x48f;
    undefined field587_0x490;
    undefined field588_0x491;
    undefined field589_0x492;
    undefined field590_0x493;
    undefined field591_0x494;
    undefined field592_0x495;
    undefined field593_0x496;
    undefined field594_0x497;
    undefined field595_0x498;
    undefined field596_0x499;
    undefined field597_0x49a;
    undefined field598_0x49b;
    undefined field599_0x49c;
    undefined field600_0x49d;
    undefined field601_0x49e;
    undefined field602_0x49f;
    undefined field603_0x4a0;
    undefined field604_0x4a1;
    undefined field605_0x4a2;
    undefined field606_0x4a3;
    undefined field607_0x4a4;
    undefined field608_0x4a5;
    undefined field609_0x4a6;
    undefined field610_0x4a7;
    undefined field611_0x4a8;
    undefined field612_0x4a9;
    undefined field613_0x4aa;
    undefined field614_0x4ab;
    undefined field615_0x4ac;
    undefined field616_0x4ad;
    undefined field617_0x4ae;
    undefined field618_0x4af;
    undefined field619_0x4b0;
    undefined field620_0x4b1;
    undefined field621_0x4b2;
    undefined field622_0x4b3;
    undefined field623_0x4b4;
    undefined field624_0x4b5;
    undefined field625_0x4b6;
    undefined field626_0x4b7;
    undefined field627_0x4b8;
    undefined field628_0x4b9;
    undefined field629_0x4ba;
    undefined field630_0x4bb;
    undefined field631_0x4bc;
    undefined field632_0x4bd;
    undefined field633_0x4be;
    undefined field634_0x4bf;
    undefined field635_0x4c0;
    undefined field636_0x4c1;
    undefined field637_0x4c2;
    undefined field638_0x4c3;
    undefined field639_0x4c4;
    undefined field640_0x4c5;
    undefined field641_0x4c6;
    undefined field642_0x4c7;
    undefined field643_0x4c8;
    undefined field644_0x4c9;
    undefined field645_0x4ca;
    undefined field646_0x4cb;
    undefined field647_0x4cc;
    undefined field648_0x4cd;
    undefined field649_0x4ce;
    undefined field650_0x4cf;
    undefined field651_0x4d0;
    undefined field652_0x4d1;
    undefined field653_0x4d2;
    undefined field654_0x4d3;
    undefined field655_0x4d4;
    undefined field656_0x4d5;
    undefined field657_0x4d6;
    undefined field658_0x4d7;
    undefined field659_0x4d8;
    undefined field660_0x4d9;
    undefined field661_0x4da;
    undefined field662_0x4db;
    undefined field663_0x4dc;
    undefined field664_0x4dd;
    undefined field665_0x4de;
    undefined field666_0x4df;
    undefined field667_0x4e0;
    undefined field668_0x4e1;
    undefined field669_0x4e2;
    undefined field670_0x4e3;
    undefined field671_0x4e4;
    undefined field672_0x4e5;
    undefined field673_0x4e6;
    undefined field674_0x4e7;
    undefined field675_0x4e8;
    undefined field676_0x4e9;
    undefined field677_0x4ea;
    undefined field678_0x4eb;
    undefined field679_0x4ec;
    undefined field680_0x4ed;
    undefined field681_0x4ee;
    undefined field682_0x4ef;
    undefined field683_0x4f0;
    undefined field684_0x4f1;
    undefined field685_0x4f2;
    undefined field686_0x4f3;
    undefined field687_0x4f4;
    undefined field688_0x4f5;
    undefined field689_0x4f6;
    undefined field690_0x4f7;
    undefined field691_0x4f8;
    undefined field692_0x4f9;
    undefined field693_0x4fa;
    undefined field694_0x4fb;
    undefined field695_0x4fc;
    undefined field696_0x4fd;
    undefined field697_0x4fe;
    undefined field698_0x4ff;
    undefined field699_0x500;
    undefined field700_0x501;
    undefined field701_0x502;
    undefined field702_0x503;
    undefined field703_0x504;
    undefined field704_0x505;
    undefined field705_0x506;
    undefined field706_0x507;
    undefined field707_0x508;
    undefined field708_0x509;
    undefined field709_0x50a;
    undefined field710_0x50b;
    undefined field711_0x50c;
    undefined field712_0x50d;
    undefined field713_0x50e;
    undefined field714_0x50f;
    undefined field715_0x510;
    undefined field716_0x511;
    undefined field717_0x512;
    undefined field718_0x513;
    undefined field719_0x514;
    undefined field720_0x515;
    undefined field721_0x516;
    undefined field722_0x517;
    undefined field723_0x518;
    undefined field724_0x519;
    undefined field725_0x51a;
    undefined field726_0x51b;
    undefined field727_0x51c;
    undefined field728_0x51d;
    undefined field729_0x51e;
    undefined field730_0x51f;
    undefined field731_0x520;
    undefined field732_0x521;
    undefined field733_0x522;
    undefined field734_0x523;
    undefined field735_0x524;
    undefined field736_0x525;
    undefined field737_0x526;
    undefined field738_0x527;
    undefined field739_0x528;
    undefined field740_0x529;
    undefined field741_0x52a;
    undefined field742_0x52b;
    undefined field743_0x52c;
    undefined field744_0x52d;
    undefined field745_0x52e;
    undefined field746_0x52f;
    undefined field747_0x530;
    undefined field748_0x531;
    undefined field749_0x532;
    undefined field750_0x533;
    undefined field751_0x534;
    undefined field752_0x535;
    undefined field753_0x536;
    undefined field754_0x537;
    undefined field755_0x538;
    undefined field756_0x539;
    undefined field757_0x53a;
    undefined field758_0x53b;
    undefined field759_0x53c;
    undefined field760_0x53d;
    undefined field761_0x53e;
    undefined field762_0x53f;
    undefined field763_0x540;
    undefined field764_0x541;
    undefined field765_0x542;
    undefined field766_0x543;
    undefined field767_0x544;
    undefined field768_0x545;
    undefined field769_0x546;
    undefined field770_0x547;
    undefined field771_0x548;
    undefined field772_0x549;
    undefined field773_0x54a;
    undefined field774_0x54b;
    undefined field775_0x54c;
    undefined field776_0x54d;
    undefined field777_0x54e;
    undefined field778_0x54f;
    undefined field779_0x550;
    undefined field780_0x551;
    undefined field781_0x552;
    undefined field782_0x553;
    undefined field783_0x554;
    undefined field784_0x555;
    undefined field785_0x556;
    undefined field786_0x557;
    undefined field787_0x558;
    undefined field788_0x559;
    undefined field789_0x55a;
    undefined field790_0x55b;
    undefined field791_0x55c;
    undefined field792_0x55d;
    undefined field793_0x55e;
    undefined field794_0x55f;
    undefined field795_0x560;
    undefined field796_0x561;
    undefined field797_0x562;
    undefined field798_0x563;
    undefined field799_0x564;
    undefined field800_0x565;
    undefined field801_0x566;
    undefined field802_0x567;
    undefined field803_0x568;
    undefined field804_0x569;
    undefined field805_0x56a;
    undefined field806_0x56b;
    undefined field807_0x56c;
    undefined field808_0x56d;
    undefined field809_0x56e;
    undefined field810_0x56f;
    undefined field811_0x570;
    undefined field812_0x571;
    undefined field813_0x572;
    undefined field814_0x573;
    undefined field815_0x574;
    undefined field816_0x575;
    undefined field817_0x576;
    undefined field818_0x577;
    undefined field819_0x578;
    undefined field820_0x579;
    undefined field821_0x57a;
    undefined field822_0x57b;
    undefined field823_0x57c;
    undefined field824_0x57d;
    undefined field825_0x57e;
    undefined field826_0x57f;
    undefined field827_0x580;
    undefined field828_0x581;
    undefined field829_0x582;
    undefined field830_0x583;
    undefined field831_0x584;
    undefined field832_0x585;
    undefined field833_0x586;
    undefined field834_0x587;
    undefined field835_0x588;
    undefined field836_0x589;
    undefined field837_0x58a;
    undefined field838_0x58b;
    undefined field839_0x58c;
    undefined field840_0x58d;
    undefined field841_0x58e;
    undefined field842_0x58f;
    undefined field843_0x590;
    undefined field844_0x591;
    undefined field845_0x592;
    undefined field846_0x593;
    undefined field847_0x594;
    undefined field848_0x595;
    undefined field849_0x596;
    undefined field850_0x597;
    undefined field851_0x598;
    undefined field852_0x599;
    undefined field853_0x59a;
    undefined field854_0x59b;
    undefined field855_0x59c;
    undefined field856_0x59d;
    undefined field857_0x59e;
    undefined field858_0x59f;
    undefined field859_0x5a0;
    undefined field860_0x5a1;
    undefined field861_0x5a2;
    undefined field862_0x5a3;
    undefined field863_0x5a4;
    undefined field864_0x5a5;
    undefined field865_0x5a6;
    undefined field866_0x5a7;
    undefined field867_0x5a8;
    undefined field868_0x5a9;
    undefined field869_0x5aa;
    undefined field870_0x5ab;
    undefined field871_0x5ac;
    undefined field872_0x5ad;
    undefined field873_0x5ae;
    undefined field874_0x5af;
    undefined field875_0x5b0;
    undefined field876_0x5b1;
    undefined field877_0x5b2;
    undefined field878_0x5b3;
    undefined field879_0x5b4;
    undefined field880_0x5b5;
    undefined field881_0x5b6;
    undefined field882_0x5b7;
    undefined field883_0x5b8;
    undefined field884_0x5b9;
    undefined field885_0x5ba;
    undefined field886_0x5bb;
    undefined field887_0x5bc;
    undefined field888_0x5bd;
    undefined field889_0x5be;
    undefined field890_0x5bf;
    undefined field891_0x5c0;
    undefined field892_0x5c1;
    undefined field893_0x5c2;
    undefined field894_0x5c3;
    undefined field895_0x5c4;
    undefined field896_0x5c5;
    undefined field897_0x5c6;
    undefined field898_0x5c7;
    undefined field899_0x5c8;
    undefined field900_0x5c9;
    undefined field901_0x5ca;
    undefined field902_0x5cb;
    undefined field903_0x5cc;
    undefined field904_0x5cd;
    undefined field905_0x5ce;
    undefined field906_0x5cf;
    undefined field907_0x5d0;
    undefined field908_0x5d1;
    undefined field909_0x5d2;
    undefined field910_0x5d3;
    undefined field911_0x5d4;
    undefined field912_0x5d5;
    undefined field913_0x5d6;
    undefined field914_0x5d7;
    undefined field915_0x5d8;
    undefined field916_0x5d9;
    undefined field917_0x5da;
    undefined field918_0x5db;
    undefined field919_0x5dc;
    undefined field920_0x5dd;
    undefined field921_0x5de;
    undefined field922_0x5df;
    undefined field923_0x5e0;
    undefined field924_0x5e1;
    undefined field925_0x5e2;
    undefined field926_0x5e3;
    undefined field927_0x5e4;
    undefined field928_0x5e5;
    undefined field929_0x5e6;
    undefined field930_0x5e7;
    HANDLE drawSemaphore;
    undefined field932_0x5ec;
    undefined field933_0x5ed;
    undefined field934_0x5ee;
    undefined field935_0x5ef;
    undefined field936_0x5f0;
    undefined field937_0x5f1;
    undefined field938_0x5f2;
    undefined field939_0x5f3;
    undefined field940_0x5f4;
    undefined field941_0x5f5;
    undefined field942_0x5f6;
    undefined field943_0x5f7;
    undefined field944_0x5f8;
    undefined field945_0x5f9;
    undefined field946_0x5fa;
    undefined field947_0x5fb;
    undefined field948_0x5fc;
    undefined field949_0x5fd;
    undefined field950_0x5fe;
    undefined field951_0x5ff;
    undefined field952_0x600;
    undefined field953_0x601;
    undefined field954_0x602;
    undefined field955_0x603;
    undefined field956_0x604;
    undefined field957_0x605;
    undefined field958_0x606;
    undefined field959_0x607;
    undefined field960_0x608;
    undefined field961_0x609;
    undefined field962_0x60a;
    undefined field963_0x60b;
    undefined field964_0x60c;
    undefined field965_0x60d;
    undefined field966_0x60e;
    undefined field967_0x60f;
    undefined field968_0x610;
    undefined field969_0x611;
    undefined field970_0x612;
    undefined field971_0x613;
    undefined field972_0x614;
    undefined field973_0x615;
    undefined field974_0x616;
    undefined field975_0x617;
    undefined field976_0x618;
    undefined field977_0x619;
    undefined field978_0x61a;
    undefined field979_0x61b;
    FIL_tdxHandleToFileNameList hLevelNameList;
    undefined field981_0x620;
    undefined field982_0x621;
    undefined field983_0x622;
    undefined field984_0x623;
    undefined field985_0x624;
    undefined field986_0x625;
    undefined field987_0x626;
    undefined field988_0x627;
    undefined field989_0x628;
    undefined field990_0x629;
    undefined field991_0x62a;
    undefined field992_0x62b;
    undefined field993_0x62c;
    undefined field994_0x62d;
    undefined field995_0x62e;
    undefined field996_0x62f;
    undefined field997_0x630;
    undefined field998_0x631;
    undefined field999_0x632;
    undefined field1000_0x633;
    undefined field1001_0x634;
    undefined field1002_0x635;
    undefined field1003_0x636;
    undefined field1004_0x637;
    undefined field1005_0x638;
    undefined field1006_0x639;
    undefined field1007_0x63a;
    undefined field1008_0x63b;
    undefined field1009_0x63c;
    undefined field1010_0x63d;
    undefined field1011_0x63e;
    undefined field1012_0x63f;
    undefined field1013_0x640;
    undefined field1014_0x641;
    undefined field1015_0x642;
    undefined field1016_0x643;
    undefined field1017_0x644;
    undefined field1018_0x645;
    undefined field1019_0x646;
    undefined field1020_0x647;
    undefined field1021_0x648;
    undefined field1022_0x649;
    undefined field1023_0x64a;
    undefined field1024_0x64b;
    undefined field1025_0x64c;
    undefined field1026_0x64d;
    undefined field1027_0x64e;
    undefined field1028_0x64f;
    undefined field1029_0x650;
    undefined field1030_0x651;
    undefined field1031_0x652;
    undefined field1032_0x653;
    undefined field1033_0x654;
    undefined field1034_0x655;
    undefined field1035_0x656;
    undefined field1036_0x657;
    undefined field1037_0x658;
    undefined field1038_0x659;
    undefined field1039_0x65a;
    undefined field1040_0x65b;
    undefined field1041_0x65c;
    undefined field1042_0x65d;
    undefined field1043_0x65e;
    undefined field1044_0x65f;
    undefined field1045_0x660;
    undefined field1046_0x661;
    undefined field1047_0x662;
    undefined field1048_0x663;
    undefined field1049_0x664;
    undefined field1050_0x665;
    undefined field1051_0x666;
    undefined field1052_0x667;
    undefined field1053_0x668;
    undefined field1054_0x669;
    undefined field1055_0x66a;
    undefined field1056_0x66b;
    undefined field1057_0x66c;
    undefined field1058_0x66d;
    undefined field1059_0x66e;
    undefined field1060_0x66f;
    undefined field1061_0x670;
    undefined field1062_0x671;
    undefined field1063_0x672;
    undefined field1064_0x673;
    undefined field1065_0x674;
    undefined field1066_0x675;
    undefined field1067_0x676;
    undefined field1068_0x677;
    undefined field1069_0x678;
    undefined field1070_0x679;
    undefined field1071_0x67a;
    undefined field1072_0x67b;
    undefined field1073_0x67c;
    undefined field1074_0x67d;
    undefined field1075_0x67e;
    undefined field1076_0x67f;
    undefined field1077_0x680;
    undefined field1078_0x681;
    undefined field1079_0x682;
    undefined field1080_0x683;
    undefined field1081_0x684;
    undefined field1082_0x685;
    undefined field1083_0x686;
    undefined field1084_0x687;
    undefined field1085_0x688;
    undefined field1086_0x689;
    undefined field1087_0x68a;
    undefined field1088_0x68b;
    undefined field1089_0x68c;
    undefined field1090_0x68d;
    undefined field1091_0x68e;
    undefined field1092_0x68f;
    undefined field1093_0x690;
    undefined field1094_0x691;
    undefined field1095_0x692;
    undefined field1096_0x693;
    undefined field1097_0x694;
    undefined field1098_0x695;
    undefined field1099_0x696;
    undefined field1100_0x697;
    undefined field1101_0x698;
    undefined field1102_0x699;
    undefined field1103_0x69a;
    undefined field1104_0x69b;
    undefined field1105_0x69c;
    undefined field1106_0x69d;
    undefined field1107_0x69e;
    undefined field1108_0x69f;
    undefined field1109_0x6a0;
    undefined field1110_0x6a1;
    undefined field1111_0x6a2;
    undefined field1112_0x6a3;
    undefined field1113_0x6a4;
    undefined field1114_0x6a5;
    undefined field1115_0x6a6;
    undefined field1116_0x6a7;
    undefined field1117_0x6a8;
    undefined field1118_0x6a9;
    undefined field1119_0x6aa;
    undefined field1120_0x6ab;
    undefined field1121_0x6ac;
    undefined field1122_0x6ad;
    undefined field1123_0x6ae;
    undefined field1124_0x6af;
    undefined field1125_0x6b0;
    undefined field1126_0x6b1;
    undefined field1127_0x6b2;
    undefined field1128_0x6b3;
    undefined field1129_0x6b4;
    undefined field1130_0x6b5;
    undefined field1131_0x6b6;
    undefined field1132_0x6b7;
    undefined field1133_0x6b8;
    undefined field1134_0x6b9;
    undefined field1135_0x6ba;
    undefined field1136_0x6bb;
    undefined field1137_0x6bc;
    undefined field1138_0x6bd;
    undefined field1139_0x6be;
    undefined field1140_0x6bf;
    undefined field1141_0x6c0;
    undefined field1142_0x6c1;
    undefined field1143_0x6c2;
    undefined field1144_0x6c3;
    undefined field1145_0x6c4;
    undefined field1146_0x6c5;
    undefined field1147_0x6c6;
    undefined field1148_0x6c7;
    long lSubMapNumber; /* 0x6c8 */
    undefined field1150_0x6cc;
    undefined field1151_0x6cd;
    undefined field1152_0x6ce;
    undefined field1153_0x6cf;
    undefined field1154_0x6d0;
    undefined field1155_0x6d1;
    undefined field1156_0x6d2;
    undefined field1157_0x6d3;
    undefined field1158_0x6d4;
    undefined field1159_0x6d5;
    undefined field1160_0x6d6;
    undefined field1161_0x6d7;
    undefined field1162_0x6d8;
    undefined field1163_0x6d9;
    undefined field1164_0x6da;
    undefined field1165_0x6db;
    undefined field1166_0x6dc;
    undefined field1167_0x6dd;
    undefined field1168_0x6de;
    undefined field1169_0x6df;
    undefined field1170_0x6e0;
    undefined field1171_0x6e1;
    undefined field1172_0x6e2;
    undefined field1173_0x6e3;
    undefined field1174_0x6e4;
    undefined field1175_0x6e5;
    undefined field1176_0x6e6;
    undefined field1177_0x6e7;
    undefined field1178_0x6e8;
    undefined field1179_0x6e9;
    undefined field1180_0x6ea;
    undefined field1181_0x6eb;
    undefined field1182_0x6ec;
    undefined field1183_0x6ed;
    undefined field1184_0x6ee;
    undefined field1185_0x6ef;
    undefined field1186_0x6f0;
    undefined field1187_0x6f1;
    undefined field1188_0x6f2;
    undefined field1189_0x6f3;
    undefined field1190_0x6f4;
    undefined field1191_0x6f5;
    undefined field1192_0x6f6;
    undefined field1193_0x6f7;
    undefined field1194_0x6f8;
    undefined field1195_0x6f9;
    undefined field1196_0x6fa;
    undefined field1197_0x6fb;
    undefined field1198_0x6fc;
    undefined field1199_0x6fd;
    undefined field1200_0x6fe;
    undefined field1201_0x6ff;
    undefined field1202_0x700;
    undefined field1203_0x701;
    undefined field1204_0x702;
    undefined field1205_0x703;
    undefined field1206_0x704;
    undefined field1207_0x705;
    undefined field1208_0x706;
    undefined field1209_0x707;
    undefined field1210_0x708;
    undefined field1211_0x709;
    undefined field1212_0x70a;
    undefined field1213_0x70b;
    undefined field1214_0x70c;
    undefined field1215_0x70d;
    undefined field1216_0x70e;
    undefined field1217_0x70f;
    undefined field1218_0x710;
    undefined field1219_0x711;
    undefined field1220_0x712;
    undefined field1221_0x713;
    undefined field1222_0x714;
    undefined field1223_0x715;
    undefined field1224_0x716;
    undefined field1225_0x717;
    undefined field1226_0x718;
    undefined field1227_0x719;
    undefined field1228_0x71a;
    undefined field1229_0x71b;
    undefined field1230_0x71c;
    undefined field1231_0x71d;
    undefined field1232_0x71e;
    undefined field1233_0x71f;
    undefined field1234_0x720;
    undefined field1235_0x721;
    undefined field1236_0x722;
    undefined field1237_0x723;
    undefined field1238_0x724;
    undefined field1239_0x725;
    undefined field1240_0x726;
    undefined field1241_0x727;
    undefined field1242_0x728;
    undefined field1243_0x729;
    undefined field1244_0x72a;
    undefined field1245_0x72b;
    undefined field1246_0x72c;
    undefined field1247_0x72d;
    undefined field1248_0x72e;
    undefined field1249_0x72f;
    undefined field1250_0x730;
    undefined field1251_0x731;
    undefined field1252_0x732;
    undefined field1253_0x733;
    undefined field1254_0x734;
    undefined field1255_0x735;
    undefined field1256_0x736;
    undefined field1257_0x737;
    undefined field1258_0x738;
    undefined field1259_0x739;
    undefined field1260_0x73a;
    undefined field1261_0x73b;
    undefined field1262_0x73c;
    undefined field1263_0x73d;
    undefined field1264_0x73e;
    undefined field1265_0x73f;
    undefined field1266_0x740;
    undefined field1267_0x741;
    undefined field1268_0x742;
    undefined field1269_0x743;
    undefined field1270_0x744;
    undefined field1271_0x745;
    undefined field1272_0x746;
    undefined field1273_0x747;
    undefined field1274_0x748;
    undefined field1275_0x749;
    undefined field1276_0x74a;
    undefined field1277_0x74b;
    undefined field1278_0x74c;
    undefined field1279_0x74d;
    undefined field1280_0x74e;
    undefined field1281_0x74f;
    undefined field1282_0x750;
    undefined field1283_0x751;
    undefined field1284_0x752;
    undefined field1285_0x753;
    undefined field1286_0x754;
    undefined field1287_0x755;
    undefined field1288_0x756;
    undefined field1289_0x757;
    undefined field1290_0x758;
    undefined field1291_0x759;
    undefined field1292_0x75a;
    undefined field1293_0x75b;
    undefined field1294_0x75c;
    undefined field1295_0x75d;
    undefined field1296_0x75e;
    undefined field1297_0x75f;
    undefined field1298_0x760;
    undefined field1299_0x761;
    undefined field1300_0x762;
    undefined field1301_0x763;
    undefined field1302_0x764;
    undefined field1303_0x765;
    undefined field1304_0x766;
    undefined field1305_0x767;
    undefined field1306_0x768;
    undefined field1307_0x769;
    undefined field1308_0x76a;
    undefined field1309_0x76b;
    undefined field1310_0x76c;
    undefined field1311_0x76d;
    undefined field1312_0x76e;
    undefined field1313_0x76f;
    undefined field1314_0x770;
    undefined field1315_0x771;
    undefined field1316_0x772;
    undefined field1317_0x773;
    undefined field1318_0x774;
    undefined field1319_0x775;
    undefined field1320_0x776;
    undefined field1321_0x777;
    undefined field1322_0x778;
    undefined field1323_0x779;
    undefined field1324_0x77a;
    undefined field1325_0x77b;
    undefined field1326_0x77c;
    undefined field1327_0x77d;
    undefined field1328_0x77e;
    undefined field1329_0x77f;
    undefined field1330_0x780;
    undefined field1331_0x781;
    undefined field1332_0x782;
    undefined field1333_0x783;
    undefined field1334_0x784;
    undefined field1335_0x785;
    undefined field1336_0x786;
    undefined field1337_0x787;
    undefined field1338_0x788;
    undefined field1339_0x789;
    undefined field1340_0x78a;
    undefined field1341_0x78b;
    undefined field1342_0x78c;
    undefined field1343_0x78d;
    undefined field1344_0x78e;
    undefined field1345_0x78f;
    undefined field1346_0x790;
    undefined field1347_0x791;
    undefined field1348_0x792;
    undefined field1349_0x793;
    undefined field1350_0x794;
    undefined field1351_0x795;
    undefined field1352_0x796;
    undefined field1353_0x797;
    undefined field1354_0x798;
    undefined field1355_0x799;
    undefined field1356_0x79a;
    undefined field1357_0x79b;
    undefined field1358_0x79c;
    undefined field1359_0x79d;
    undefined field1360_0x79e;
    undefined field1361_0x79f;
    undefined field1362_0x7a0;
    undefined field1363_0x7a1;
    undefined field1364_0x7a2;
    undefined field1365_0x7a3;
    undefined field1366_0x7a4;
    undefined field1367_0x7a5;
    undefined field1368_0x7a6;
    undefined field1369_0x7a7;
    undefined field1370_0x7a8;
    undefined field1371_0x7a9;
    undefined field1372_0x7aa;
    undefined field1373_0x7ab;
    undefined field1374_0x7ac;
    undefined field1375_0x7ad;
    undefined field1376_0x7ae;
    undefined field1377_0x7af;
    undefined field1378_0x7b0;
    undefined field1379_0x7b1;
    undefined field1380_0x7b2;
    undefined field1381_0x7b3;
    undefined field1382_0x7b4;
    undefined field1383_0x7b5;
    undefined field1384_0x7b6;
    undefined field1385_0x7b7;
    undefined field1386_0x7b8;
    undefined field1387_0x7b9;
    undefined field1388_0x7ba;
    undefined field1389_0x7bb;
    undefined field1390_0x7bc;
    undefined field1391_0x7bd;
    undefined field1392_0x7be;
    undefined field1393_0x7bf;
    undefined field1394_0x7c0;
    undefined field1395_0x7c1;
    undefined field1396_0x7c2;
    undefined field1397_0x7c3;
    undefined field1398_0x7c4;
    undefined field1399_0x7c5;
    undefined field1400_0x7c6;
    undefined field1401_0x7c7;
    undefined field1402_0x7c8;
    undefined field1403_0x7c9;
    undefined field1404_0x7ca;
    undefined field1405_0x7cb;
    undefined field1406_0x7cc;
    undefined field1407_0x7cd;
    undefined field1408_0x7ce;
    undefined field1409_0x7cf;
    undefined field1410_0x7d0;
    undefined field1411_0x7d1;
    undefined field1412_0x7d2;
    undefined field1413_0x7d3;
    undefined field1414_0x7d4;
    undefined field1415_0x7d5;
    undefined field1416_0x7d6;
    undefined field1417_0x7d7;
    undefined field1418_0x7d8;
    undefined field1419_0x7d9;
    undefined field1420_0x7da;
    undefined field1421_0x7db;
    undefined field1422_0x7dc;
    undefined field1423_0x7dd;
    undefined field1424_0x7de;
    undefined field1425_0x7df;
    undefined field1426_0x7e0;
    undefined field1427_0x7e1;
    undefined field1428_0x7e2;
    undefined field1429_0x7e3;
    undefined field1430_0x7e4;
    undefined field1431_0x7e5;
    undefined field1432_0x7e6;
    undefined field1433_0x7e7;
    undefined field1434_0x7e8;
    undefined field1435_0x7e9;
    undefined field1436_0x7ea;
    undefined field1437_0x7eb;
    undefined field1438_0x7ec;
    undefined field1439_0x7ed;
    undefined field1440_0x7ee;
    undefined field1441_0x7ef;
    undefined field1442_0x7f0;
    undefined field1443_0x7f1;
    undefined field1444_0x7f2;
    undefined field1445_0x7f3;
    undefined field1446_0x7f4;
    undefined field1447_0x7f5;
    undefined field1448_0x7f6;
    undefined field1449_0x7f7;
    undefined field1450_0x7f8;
    undefined field1451_0x7f9;
    undefined field1452_0x7fa;
    undefined field1453_0x7fb;
    undefined field1454_0x7fc;
    undefined field1455_0x7fd;
    undefined field1456_0x7fe;
    undefined field1457_0x7ff;
    undefined field1458_0x800;
    undefined field1459_0x801;
    undefined field1460_0x802;
    undefined field1461_0x803;
    undefined field1462_0x804;
    undefined field1463_0x805;
    undefined field1464_0x806;
    undefined field1465_0x807;
    undefined field1466_0x808;
    undefined field1467_0x809;
    undefined field1468_0x80a;
    undefined field1469_0x80b;
    undefined field1470_0x80c;
    undefined field1471_0x80d;
    undefined field1472_0x80e;
    undefined field1473_0x80f;
    undefined field1474_0x810;
    undefined field1475_0x811;
    undefined field1476_0x812;
    undefined field1477_0x813;
    undefined field1478_0x814;
    undefined field1479_0x815;
    undefined field1480_0x816;
    undefined field1481_0x817;
    undefined field1482_0x818;
    undefined field1483_0x819;
    undefined field1484_0x81a;
    undefined field1485_0x81b;
    undefined field1486_0x81c;
    undefined field1487_0x81d;
    undefined field1488_0x81e;
    undefined field1489_0x81f;
    undefined field1490_0x820;
    undefined field1491_0x821;
    undefined field1492_0x822;
    undefined field1493_0x823;
    undefined field1494_0x824;
    undefined field1495_0x825;
    undefined field1496_0x826;
    undefined field1497_0x827;
    undefined field1498_0x828;
    undefined field1499_0x829;
    undefined field1500_0x82a;
    undefined field1501_0x82b;
    undefined field1502_0x82c;
    undefined field1503_0x82d;
    undefined field1504_0x82e;
    undefined field1505_0x82f;
    undefined field1506_0x830;
    undefined field1507_0x831;
    undefined field1508_0x832;
    undefined field1509_0x833;
    undefined field1510_0x834;
    undefined field1511_0x835;
    undefined field1512_0x836;
    undefined field1513_0x837;
    undefined field1514_0x838;
    undefined field1515_0x839;
    undefined field1516_0x83a;
    undefined field1517_0x83b;
    undefined field1518_0x83c;
    undefined field1519_0x83d;
    undefined field1520_0x83e;
    undefined field1521_0x83f;
    undefined field1522_0x840;
    undefined field1523_0x841;
    undefined field1524_0x842;
    undefined field1525_0x843;
    undefined field1526_0x844;
    undefined field1527_0x845;
    undefined field1528_0x846;
    undefined field1529_0x847;
    undefined field1530_0x848;
    undefined field1531_0x849;
    undefined field1532_0x84a;
    undefined field1533_0x84b;
    undefined field1534_0x84c;
    undefined field1535_0x84d;
    undefined field1536_0x84e;
    undefined field1537_0x84f;
    undefined field1538_0x850;
    undefined field1539_0x851;
    undefined field1540_0x852;
    undefined field1541_0x853;
    undefined field1542_0x854;
    undefined field1543_0x855;
    undefined field1544_0x856;
    undefined field1545_0x857;
    undefined field1546_0x858;
    undefined field1547_0x859;
    undefined field1548_0x85a;
    undefined field1549_0x85b;
    undefined field1550_0x85c;
    undefined field1551_0x85d;
    undefined field1552_0x85e;
    undefined field1553_0x85f;
    undefined field1554_0x860;
    undefined field1555_0x861;
    undefined field1556_0x862;
    undefined field1557_0x863;
    undefined field1558_0x864;
    undefined field1559_0x865;
    undefined field1560_0x866;
    undefined field1561_0x867;
    undefined field1562_0x868;
    undefined field1563_0x869;
    undefined field1564_0x86a;
    undefined field1565_0x86b;
    undefined field1566_0x86c;
    undefined field1567_0x86d;
    undefined field1568_0x86e;
    undefined field1569_0x86f;
    undefined field1570_0x870;
    undefined field1571_0x871;
    undefined field1572_0x872;
    undefined field1573_0x873;
    undefined field1574_0x874;
    undefined field1575_0x875;
    undefined field1576_0x876;
    undefined field1577_0x877;
    undefined field1578_0x878;
    undefined field1579_0x879;
    undefined field1580_0x87a;
    undefined field1581_0x87b;
    undefined field1582_0x87c;
    undefined field1583_0x87d;
    undefined field1584_0x87e;
    undefined field1585_0x87f;
    undefined field1586_0x880;
    undefined field1587_0x881;
    undefined field1588_0x882;
    undefined field1589_0x883;
    undefined field1590_0x884;
    undefined field1591_0x885;
    undefined field1592_0x886;
    undefined field1593_0x887;
    undefined field1594_0x888;
    undefined field1595_0x889;
    undefined field1596_0x88a;
    undefined field1597_0x88b;
    undefined field1598_0x88c;
    undefined field1599_0x88d;
    undefined field1600_0x88e;
    undefined field1601_0x88f;
    undefined field1602_0x890;
    undefined field1603_0x891;
    undefined field1604_0x892;
    undefined field1605_0x893;
    undefined field1606_0x894;
    undefined field1607_0x895;
    undefined field1608_0x896;
    undefined field1609_0x897;
    undefined field1610_0x898;
    undefined field1611_0x899;
    undefined field1612_0x89a;
    undefined field1613_0x89b;
    undefined field1614_0x89c;
    undefined field1615_0x89d;
    undefined field1616_0x89e;
    undefined field1617_0x89f;
    undefined field1618_0x8a0;
    undefined field1619_0x8a1;
    undefined field1620_0x8a2;
    undefined field1621_0x8a3;
    undefined field1622_0x8a4;
    undefined field1623_0x8a5;
    undefined field1624_0x8a6;
    undefined field1625_0x8a7;
    undefined field1626_0x8a8;
    undefined field1627_0x8a9;
    undefined field1628_0x8aa;
    undefined field1629_0x8ab;
    undefined field1630_0x8ac;
    undefined field1631_0x8ad;
    undefined field1632_0x8ae;
    undefined field1633_0x8af;
    undefined field1634_0x8b0;
    undefined field1635_0x8b1;
    undefined field1636_0x8b2;
    undefined field1637_0x8b3;
    undefined field1638_0x8b4;
    undefined field1639_0x8b5;
    undefined field1640_0x8b6;
    undefined field1641_0x8b7;
    undefined field1642_0x8b8;
    undefined field1643_0x8b9;
    undefined field1644_0x8ba;
    undefined field1645_0x8bb;
    undefined field1646_0x8bc;
    undefined field1647_0x8bd;
    undefined field1648_0x8be;
    undefined field1649_0x8bf;
    undefined field1650_0x8c0;
    undefined field1651_0x8c1;
    undefined field1652_0x8c2;
    undefined field1653_0x8c3;
    undefined field1654_0x8c4;
    undefined field1655_0x8c5;
    undefined field1656_0x8c6;
    undefined field1657_0x8c7;
    undefined field1658_0x8c8;
    undefined field1659_0x8c9;
    undefined field1660_0x8ca;
    undefined field1661_0x8cb;
    undefined field1662_0x8cc;
    undefined field1663_0x8cd;
    undefined field1664_0x8ce;
    undefined field1665_0x8cf;
    undefined field1666_0x8d0;
    undefined field1667_0x8d1;
    undefined field1668_0x8d2;
    undefined field1669_0x8d3;
    undefined field1670_0x8d4;
    undefined field1671_0x8d5;
    undefined field1672_0x8d6;
    undefined field1673_0x8d7;
    undefined field1674_0x8d8;
    undefined field1675_0x8d9;
    undefined field1676_0x8da;
    undefined field1677_0x8db;
    undefined field1678_0x8dc;
    undefined field1679_0x8dd;
    undefined field1680_0x8de;
    undefined field1681_0x8df;
    undefined field1682_0x8e0;
    undefined field1683_0x8e1;
    undefined field1684_0x8e2;
    undefined field1685_0x8e3;
    undefined field1686_0x8e4;
    undefined field1687_0x8e5;
    undefined field1688_0x8e6;
    undefined field1689_0x8e7;
    undefined field1690_0x8e8;
    undefined field1691_0x8e9;
    undefined field1692_0x8ea;
    undefined field1693_0x8eb;
    undefined field1694_0x8ec;
    undefined field1695_0x8ed;
    undefined field1696_0x8ee;
    undefined field1697_0x8ef;
    undefined field1698_0x8f0;
    undefined field1699_0x8f1;
    undefined field1700_0x8f2;
    undefined field1701_0x8f3;
    undefined field1702_0x8f4;
    undefined field1703_0x8f5;
    undefined field1704_0x8f6;
    undefined field1705_0x8f7;
    undefined field1706_0x8f8;
    undefined field1707_0x8f9;
    undefined field1708_0x8fa;
    undefined field1709_0x8fb;
    undefined field1710_0x8fc;
    undefined field1711_0x8fd;
    undefined field1712_0x8fe;
    undefined field1713_0x8ff;
    undefined field1714_0x900;
    undefined field1715_0x901;
    undefined field1716_0x902;
    undefined field1717_0x903;
    undefined field1718_0x904;
    undefined field1719_0x905;
    undefined field1720_0x906;
    undefined field1721_0x907;
    undefined field1722_0x908;
    undefined field1723_0x909;
    undefined field1724_0x90a;
    undefined field1725_0x90b;
    undefined field1726_0x90c;
    undefined field1727_0x90d;
    undefined field1728_0x90e;
    undefined field1729_0x90f;
    undefined field1730_0x910;
    undefined field1731_0x911;
    undefined field1732_0x912;
    undefined field1733_0x913;
    undefined field1734_0x914;
    undefined field1735_0x915;
    undefined field1736_0x916;
    undefined field1737_0x917;
    undefined field1738_0x918;
    undefined field1739_0x919;
    undefined field1740_0x91a;
    undefined field1741_0x91b;
    undefined field1742_0x91c;
    undefined field1743_0x91d;
    undefined field1744_0x91e;
    undefined field1745_0x91f;
    undefined field1746_0x920;
    undefined field1747_0x921;
    undefined field1748_0x922;
    undefined field1749_0x923;
    undefined field1750_0x924;
    undefined field1751_0x925;
    undefined field1752_0x926;
    undefined field1753_0x927;
    undefined field1754_0x928;
    undefined field1755_0x929;
    undefined field1756_0x92a;
    undefined field1757_0x92b;
    undefined field1758_0x92c;
    undefined field1759_0x92d;
    undefined field1760_0x92e;
    undefined field1761_0x92f;
    undefined field1762_0x930;
    undefined field1763_0x931;
    undefined field1764_0x932;
    undefined field1765_0x933;
    undefined field1766_0x934;
    undefined field1767_0x935;
    undefined field1768_0x936;
    undefined field1769_0x937;
    undefined field1770_0x938;
    undefined field1771_0x939;
    undefined field1772_0x93a;
    undefined field1773_0x93b;
    undefined field1774_0x93c;
    undefined field1775_0x93d;
    undefined field1776_0x93e;
    undefined field1777_0x93f;
    undefined field1778_0x940;
    undefined field1779_0x941;
    undefined field1780_0x942;
    undefined field1781_0x943;
    undefined field1782_0x944;
    undefined field1783_0x945;
    undefined field1784_0x946;
    undefined field1785_0x947;
    undefined field1786_0x948;
    undefined field1787_0x949;
    undefined field1788_0x94a;
    undefined field1789_0x94b;
    undefined field1790_0x94c;
    undefined field1791_0x94d;
    undefined field1792_0x94e;
    undefined field1793_0x94f;
    undefined field1794_0x950;
    undefined field1795_0x951;
    undefined field1796_0x952;
    undefined field1797_0x953;
    undefined field1798_0x954;
    undefined field1799_0x955;
    undefined field1800_0x956;
    undefined field1801_0x957;
    undefined field1802_0x958;
    undefined field1803_0x959;
    undefined field1804_0x95a;
    undefined field1805_0x95b;
    undefined field1806_0x95c;
    undefined field1807_0x95d;
    undefined field1808_0x95e;
    undefined field1809_0x95f;
    undefined field1810_0x960;
    undefined field1811_0x961;
    undefined field1812_0x962;
    undefined field1813_0x963;
    undefined field1814_0x964;
    undefined field1815_0x965;
    undefined field1816_0x966;
    undefined field1817_0x967;
    undefined field1818_0x968;
    undefined field1819_0x969;
    undefined field1820_0x96a;
    undefined field1821_0x96b;
    undefined field1822_0x96c;
    undefined field1823_0x96d;
    undefined field1824_0x96e;
    undefined field1825_0x96f;
    undefined field1826_0x970;
    undefined field1827_0x971;
    undefined field1828_0x972;
    undefined field1829_0x973;
    undefined field1830_0x974;
    undefined field1831_0x975;
    undefined field1832_0x976;
    undefined field1833_0x977;
    undefined field1834_0x978;
    undefined field1835_0x979;
    undefined field1836_0x97a;
    undefined field1837_0x97b;
    undefined field1838_0x97c;
    undefined field1839_0x97d;
    undefined field1840_0x97e;
    undefined field1841_0x97f;
    undefined field1842_0x980;
    undefined field1843_0x981;
    undefined field1844_0x982;
    undefined field1845_0x983;
    undefined field1846_0x984;
    undefined field1847_0x985;
    undefined field1848_0x986;
    undefined field1849_0x987;
    undefined field1850_0x988;
    undefined field1851_0x989;
    undefined field1852_0x98a;
    undefined field1853_0x98b;
    undefined field1854_0x98c;
    undefined field1855_0x98d;
    undefined field1856_0x98e;
    undefined field1857_0x98f;
    undefined field1858_0x990;
    undefined field1859_0x991;
    undefined field1860_0x992;
    undefined field1861_0x993;
    undefined field1862_0x994;
    undefined field1863_0x995;
    undefined field1864_0x996;
    undefined field1865_0x997;
    undefined field1866_0x998;
    undefined field1867_0x999;
    undefined field1868_0x99a;
    undefined field1869_0x99b;
    undefined field1870_0x99c;
    undefined field1871_0x99d;
    undefined field1872_0x99e;
    undefined field1873_0x99f;
    undefined field1874_0x9a0;
    undefined field1875_0x9a1;
    undefined field1876_0x9a2;
    undefined field1877_0x9a3;
    undefined field1878_0x9a4;
    undefined field1879_0x9a5;
    undefined field1880_0x9a6;
    undefined field1881_0x9a7;
    undefined field1882_0x9a8;
    undefined field1883_0x9a9;
    undefined field1884_0x9aa;
    undefined field1885_0x9ab;
    undefined field1886_0x9ac;
    undefined field1887_0x9ad;
    undefined field1888_0x9ae;
    undefined field1889_0x9af;
    undefined field1890_0x9b0;
    undefined field1891_0x9b1;
    undefined field1892_0x9b2;
    undefined field1893_0x9b3;
    undefined field1894_0x9b4;
    undefined field1895_0x9b5;
    undefined field1896_0x9b6;
    undefined field1897_0x9b7;
    undefined field1898_0x9b8;
    undefined field1899_0x9b9;
    undefined field1900_0x9ba;
    undefined field1901_0x9bb;
    undefined field1902_0x9bc;
    undefined field1903_0x9bd;
    undefined field1904_0x9be;
    undefined field1905_0x9bf;
    undefined field1906_0x9c0;
    undefined field1907_0x9c1;
    undefined field1908_0x9c2;
    undefined field1909_0x9c3;
    undefined field1910_0x9c4;
    undefined field1911_0x9c5;
    undefined field1912_0x9c6;
    undefined field1913_0x9c7;
    undefined field1914_0x9c8;
    undefined field1915_0x9c9;
    undefined field1916_0x9ca;
    undefined field1917_0x9cb;
    undefined field1918_0x9cc;
    undefined field1919_0x9cd;
    undefined field1920_0x9ce;
    undefined field1921_0x9cf;
    undefined field1922_0x9d0;
    undefined field1923_0x9d1;
    undefined field1924_0x9d2;
    undefined field1925_0x9d3;
    undefined field1926_0x9d4;
    undefined field1927_0x9d5;
    undefined field1928_0x9d6;
    undefined field1929_0x9d7;
    undefined field1930_0x9d8;
    undefined field1931_0x9d9;
    undefined field1932_0x9da;
    undefined field1933_0x9db;
    undefined field1934_0x9dc;
    undefined field1935_0x9dd;
    undefined field1936_0x9de;
    undefined field1937_0x9df;
    undefined field1938_0x9e0;
    undefined field1939_0x9e1;
    undefined field1940_0x9e2;
    undefined field1941_0x9e3;
    undefined field1942_0x9e4;
    undefined field1943_0x9e5;
    undefined field1944_0x9e6;
    undefined field1945_0x9e7;
    undefined field1946_0x9e8;
    undefined field1947_0x9e9;
    undefined field1948_0x9ea;
    undefined field1949_0x9eb;
    undefined field1950_0x9ec;
    undefined field1951_0x9ed;
    undefined field1952_0x9ee;
    undefined field1953_0x9ef;
    undefined field1954_0x9f0;
    undefined field1955_0x9f1;
    undefined field1956_0x9f2;
    undefined field1957_0x9f3;
    undefined field1958_0x9f4;
    undefined field1959_0x9f5;
    undefined field1960_0x9f6;
    undefined field1961_0x9f7;
    undefined field1962_0x9f8;
    undefined field1963_0x9f9;
    undefined field1964_0x9fa;
    undefined field1965_0x9fb;
    undefined field1966_0x9fc;
    undefined field1967_0x9fd;
    undefined field1968_0x9fe;
    undefined field1969_0x9ff;
    undefined field1970_0xa00;
    undefined field1971_0xa01;
    undefined field1972_0xa02;
    undefined field1973_0xa03;
    undefined field1974_0xa04;
    undefined field1975_0xa05;
    undefined field1976_0xa06;
    undefined field1977_0xa07;
    undefined field1978_0xa08;
    undefined field1979_0xa09;
    undefined field1980_0xa0a;
    undefined field1981_0xa0b;
    undefined field1982_0xa0c;
    undefined field1983_0xa0d;
    undefined field1984_0xa0e;
    undefined field1985_0xa0f;
    undefined field1986_0xa10;
    undefined field1987_0xa11;
    undefined field1988_0xa12;
    undefined field1989_0xa13;
    undefined field1990_0xa14;
    undefined field1991_0xa15;
    undefined field1992_0xa16;
    undefined field1993_0xa17;
    undefined field1994_0xa18;
    undefined field1995_0xa19;
    undefined field1996_0xa1a;
    undefined field1997_0xa1b;
    undefined field1998_0xa1c;
    undefined field1999_0xa1d;
    undefined field2000_0xa1e;
    undefined field2001_0xa1f;
    undefined field2002_0xa20;
    undefined field2003_0xa21;
    undefined field2004_0xa22;
    undefined field2005_0xa23;
    undefined field2006_0xa24;
    undefined field2007_0xa25;
    undefined field2008_0xa26;
    undefined field2009_0xa27;
    undefined field2010_0xa28;
    undefined field2011_0xa29;
    undefined field2012_0xa2a;
    undefined field2013_0xa2b;
    undefined field2014_0xa2c;
    undefined field2015_0xa2d;
    undefined field2016_0xa2e;
    undefined field2017_0xa2f;
    undefined field2018_0xa30;
    undefined field2019_0xa31;
    undefined field2020_0xa32;
    undefined field2021_0xa33;
    undefined field2022_0xa34;
    undefined field2023_0xa35;
    undefined field2024_0xa36;
    undefined field2025_0xa37;
    undefined field2026_0xa38;
    undefined field2027_0xa39;
    undefined field2028_0xa3a;
    undefined field2029_0xa3b;
    undefined field2030_0xa3c;
    undefined field2031_0xa3d;
    undefined field2032_0xa3e;
    undefined field2033_0xa3f;
    undefined field2034_0xa40;
    undefined field2035_0xa41;
    undefined field2036_0xa42;
    undefined field2037_0xa43;
    undefined field2038_0xa44;
    undefined field2039_0xa45;
    undefined field2040_0xa46;
    undefined field2041_0xa47;
    undefined field2042_0xa48;
    undefined field2043_0xa49;
    undefined field2044_0xa4a;
    undefined field2045_0xa4b;
    undefined field2046_0xa4c;
    undefined field2047_0xa4d;
    undefined field2048_0xa4e;
    undefined field2049_0xa4f;
    undefined field2050_0xa50;
    undefined field2051_0xa51;
    undefined field2052_0xa52;
    undefined field2053_0xa53;
    undefined field2054_0xa54;
    undefined field2055_0xa55;
    undefined field2056_0xa56;
    undefined field2057_0xa57;
    undefined field2058_0xa58;
    undefined field2059_0xa59;
    undefined field2060_0xa5a;
    undefined field2061_0xa5b;
    undefined field2062_0xa5c;
    undefined field2063_0xa5d;
    undefined field2064_0xa5e;
    undefined field2065_0xa5f;
    undefined field2066_0xa60;
    undefined field2067_0xa61;
    undefined field2068_0xa62;
    undefined field2069_0xa63;
    undefined field2070_0xa64;
    undefined field2071_0xa65;
    undefined field2072_0xa66;
    undefined field2073_0xa67;
    undefined field2074_0xa68;
    undefined field2075_0xa69;
    undefined field2076_0xa6a;
    undefined field2077_0xa6b;
    undefined field2078_0xa6c;
    undefined field2079_0xa6d;
    undefined field2080_0xa6e;
    undefined field2081_0xa6f;
    undefined field2082_0xa70;
    undefined field2083_0xa71;
    undefined field2084_0xa72;
    undefined field2085_0xa73;
    undefined field2086_0xa74;
    undefined field2087_0xa75;
    undefined field2088_0xa76;
    undefined field2089_0xa77;
    undefined field2090_0xa78;
    undefined field2091_0xa79;
    undefined field2092_0xa7a;
    undefined field2093_0xa7b;
    undefined field2094_0xa7c;
    undefined field2095_0xa7d;
    undefined field2096_0xa7e;
    undefined field2097_0xa7f;
    undefined field2098_0xa80;
    undefined field2099_0xa81;
    undefined field2100_0xa82;
    undefined field2101_0xa83;
    undefined field2102_0xa84;
    undefined field2103_0xa85;
    undefined field2104_0xa86;
    undefined field2105_0xa87;
    undefined field2106_0xa88;
    undefined field2107_0xa89;
    undefined field2108_0xa8a;
    undefined field2109_0xa8b;
    undefined field2110_0xa8c;
    undefined field2111_0xa8d;
    undefined field2112_0xa8e;
    undefined field2113_0xa8f;
    undefined field2114_0xa90;
    undefined field2115_0xa91;
    undefined field2116_0xa92;
    undefined field2117_0xa93;
    undefined field2118_0xa94;
    undefined field2119_0xa95;
    undefined field2120_0xa96;
    undefined field2121_0xa97;
    undefined field2122_0xa98;
    undefined field2123_0xa99;
    undefined field2124_0xa9a;
    undefined field2125_0xa9b;
    undefined field2126_0xa9c;
    undefined field2127_0xa9d;
    undefined field2128_0xa9e;
    undefined field2129_0xa9f;
    undefined field2130_0xaa0;
    undefined field2131_0xaa1;
    undefined field2132_0xaa2;
    undefined field2133_0xaa3;
    undefined field2134_0xaa4;
    undefined field2135_0xaa5;
    undefined field2136_0xaa6;
    undefined field2137_0xaa7;
    undefined field2138_0xaa8;
    undefined field2139_0xaa9;
    undefined field2140_0xaaa;
    undefined field2141_0xaab;
    undefined field2142_0xaac;
    undefined field2143_0xaad;
    undefined field2144_0xaae;
    undefined field2145_0xaaf;
    undefined field2146_0xab0;
    undefined field2147_0xab1;
    undefined field2148_0xab2;
    undefined field2149_0xab3;
    undefined field2150_0xab4;
    undefined field2151_0xab5;
    undefined field2152_0xab6;
    undefined field2153_0xab7;
    undefined field2154_0xab8;
    undefined field2155_0xab9;
    undefined field2156_0xaba;
    undefined field2157_0xabb;
    undefined field2158_0xabc;
    undefined field2159_0xabd;
    undefined field2160_0xabe;
    undefined field2161_0xabf;
    undefined field2162_0xac0;
    undefined field2163_0xac1;
    undefined field2164_0xac2;
    undefined field2165_0xac3;
    undefined field2166_0xac4;
    undefined field2167_0xac5;
    undefined field2168_0xac6;
    undefined field2169_0xac7;
    undefined field2170_0xac8;
    undefined field2171_0xac9;
    undefined field2172_0xaca;
    undefined field2173_0xacb;
    undefined field2174_0xacc;
    undefined field2175_0xacd;
    undefined field2176_0xace;
    undefined field2177_0xacf;
    undefined field2178_0xad0;
    undefined field2179_0xad1;
    undefined field2180_0xad2;
    undefined field2181_0xad3;
    undefined field2182_0xad4;
    undefined field2183_0xad5;
    undefined field2184_0xad6;
    undefined field2185_0xad7;
    undefined field2186_0xad8;
    undefined field2187_0xad9;
    undefined field2188_0xada;
    undefined field2189_0xadb;
    undefined field2190_0xadc;
    undefined field2191_0xadd;
    undefined field2192_0xade;
    undefined field2193_0xadf;
    undefined field2194_0xae0;
    undefined field2195_0xae1;
    undefined field2196_0xae2;
    undefined field2197_0xae3;
    undefined field2198_0xae4;
    undefined field2199_0xae5;
    undefined field2200_0xae6;
    undefined field2201_0xae7;
    undefined field2202_0xae8;
    undefined field2203_0xae9;
    undefined field2204_0xaea;
    undefined field2205_0xaeb;
    undefined field2206_0xaec;
    undefined field2207_0xaed;
    undefined field2208_0xaee;
    undefined field2209_0xaef;
    undefined field2210_0xaf0;
    undefined field2211_0xaf1;
    undefined field2212_0xaf2;
    undefined field2213_0xaf3;
    undefined field2214_0xaf4;
    undefined field2215_0xaf5;
    undefined field2216_0xaf6;
    undefined field2217_0xaf7;
    undefined field2218_0xaf8;
    undefined field2219_0xaf9;
    undefined field2220_0xafa;
    undefined field2221_0xafb;
    undefined field2222_0xafc;
    undefined field2223_0xafd;
    undefined field2224_0xafe;
    undefined field2225_0xaff;
    undefined field2226_0xb00;
    undefined field2227_0xb01;
    undefined field2228_0xb02;
    undefined field2229_0xb03;
    undefined field2230_0xb04;
    undefined field2231_0xb05;
    undefined field2232_0xb06;
    undefined field2233_0xb07;
    undefined field2234_0xb08;
    undefined field2235_0xb09;
    undefined field2236_0xb0a;
    undefined field2237_0xb0b;
    undefined field2238_0xb0c;
    undefined field2239_0xb0d;
    undefined field2240_0xb0e;
    undefined field2241_0xb0f;
    undefined field2242_0xb10;
    undefined field2243_0xb11;
    undefined field2244_0xb12;
    undefined field2245_0xb13;
    undefined field2246_0xb14;
    undefined field2247_0xb15;
    undefined field2248_0xb16;
    undefined field2249_0xb17;
    undefined field2250_0xb18;
    undefined field2251_0xb19;
    undefined field2252_0xb1a;
    undefined field2253_0xb1b;
    undefined field2254_0xb1c;
    undefined field2255_0xb1d;
    undefined field2256_0xb1e;
    undefined field2257_0xb1f;
    undefined field2258_0xb20;
    undefined field2259_0xb21;
    undefined field2260_0xb22;
    undefined field2261_0xb23;
    undefined field2262_0xb24;
    undefined field2263_0xb25;
    undefined field2264_0xb26;
    undefined field2265_0xb27;
    undefined field2266_0xb28;
    undefined field2267_0xb29;
    undefined field2268_0xb2a;
    undefined field2269_0xb2b;
    undefined field2270_0xb2c;
    undefined field2271_0xb2d;
    undefined field2272_0xb2e;
    undefined field2273_0xb2f;
    undefined field2274_0xb30;
    undefined field2275_0xb31;
    undefined field2276_0xb32;
    undefined field2277_0xb33;
    undefined field2278_0xb34;
    undefined field2279_0xb35;
    undefined field2280_0xb36;
    undefined field2281_0xb37;
    undefined field2282_0xb38;
    undefined field2283_0xb39;
    undefined field2284_0xb3a;
    undefined field2285_0xb3b;
    undefined field2286_0xb3c;
    undefined field2287_0xb3d;
    undefined field2288_0xb3e;
    undefined field2289_0xb3f;
    undefined field2290_0xb40;
    undefined field2291_0xb41;
    undefined field2292_0xb42;
    undefined field2293_0xb43;
    undefined field2294_0xb44;
    undefined field2295_0xb45;
    undefined field2296_0xb46;
    undefined field2297_0xb47;
    undefined field2298_0xb48;
    undefined field2299_0xb49;
    undefined field2300_0xb4a;
    undefined field2301_0xb4b;
    undefined field2302_0xb4c;
    undefined field2303_0xb4d;
    undefined field2304_0xb4e;
    undefined field2305_0xb4f;
    undefined field2306_0xb50;
    undefined field2307_0xb51;
    undefined field2308_0xb52;
    undefined field2309_0xb53;
    undefined field2310_0xb54;
    undefined field2311_0xb55;
    undefined field2312_0xb56;
    undefined field2313_0xb57;
    undefined field2314_0xb58;
    undefined field2315_0xb59;
    undefined field2316_0xb5a;
    undefined field2317_0xb5b;
    undefined field2318_0xb5c;
    undefined field2319_0xb5d;
    undefined field2320_0xb5e;
    undefined field2321_0xb5f;
    undefined field2322_0xb60;
    undefined field2323_0xb61;
    undefined field2324_0xb62;
    undefined field2325_0xb63;
    undefined field2326_0xb64;
    undefined field2327_0xb65;
    undefined field2328_0xb66;
    undefined field2329_0xb67;
    undefined field2330_0xb68;
    undefined field2331_0xb69;
    undefined field2332_0xb6a;
    undefined field2333_0xb6b;
    undefined field2334_0xb6c;
    undefined field2335_0xb6d;
    undefined field2336_0xb6e;
    undefined field2337_0xb6f;
    undefined field2338_0xb70;
    undefined field2339_0xb71;
    undefined field2340_0xb72;
    undefined field2341_0xb73;
    undefined field2342_0xb74;
    undefined field2343_0xb75;
    undefined field2344_0xb76;
    undefined field2345_0xb77;
    undefined field2346_0xb78;
    undefined field2347_0xb79;
    undefined field2348_0xb7a;
    undefined field2349_0xb7b;
    undefined field2350_0xb7c;
    undefined field2351_0xb7d;
    undefined field2352_0xb7e;
    undefined field2353_0xb7f;
    undefined field2354_0xb80;
    undefined field2355_0xb81;
    undefined field2356_0xb82;
    undefined field2357_0xb83;
    undefined field2358_0xb84;
    undefined field2359_0xb85;
    undefined field2360_0xb86;
    undefined field2361_0xb87;
    undefined field2362_0xb88;
    undefined field2363_0xb89;
    undefined field2364_0xb8a;
    undefined field2365_0xb8b;
    undefined field2366_0xb8c;
    undefined field2367_0xb8d;
    undefined field2368_0xb8e;
    undefined field2369_0xb8f;
    undefined field2370_0xb90;
    undefined field2371_0xb91;
    undefined field2372_0xb92;
    undefined field2373_0xb93;
    undefined field2374_0xb94;
    undefined field2375_0xb95;
    undefined field2376_0xb96;
    undefined field2377_0xb97;
    undefined field2378_0xb98;
    undefined field2379_0xb99;
    undefined field2380_0xb9a;
    undefined field2381_0xb9b;
    undefined field2382_0xb9c;
    undefined field2383_0xb9d;
    undefined field2384_0xb9e;
    undefined field2385_0xb9f;
    undefined field2386_0xba0;
    undefined field2387_0xba1;
    undefined field2388_0xba2;
    undefined field2389_0xba3;
    undefined field2390_0xba4;
    undefined field2391_0xba5;
    undefined field2392_0xba6;
    undefined field2393_0xba7;
    undefined field2394_0xba8;
    undefined field2395_0xba9;
    undefined field2396_0xbaa;
    undefined field2397_0xbab;
    undefined field2398_0xbac;
    undefined field2399_0xbad;
    undefined field2400_0xbae;
    undefined field2401_0xbaf;
    undefined field2402_0xbb0;
    undefined field2403_0xbb1;
    undefined field2404_0xbb2;
    undefined field2405_0xbb3;
    undefined field2406_0xbb4;
    undefined field2407_0xbb5;
    undefined field2408_0xbb6;
    undefined field2409_0xbb7;
    undefined field2410_0xbb8;
    undefined field2411_0xbb9;
    undefined field2412_0xbba;
    undefined field2413_0xbbb;
    undefined field2414_0xbbc;
    undefined field2415_0xbbd;
    undefined field2416_0xbbe;
    undefined field2417_0xbbf;
    undefined field2418_0xbc0;
    undefined field2419_0xbc1;
    undefined field2420_0xbc2;
    undefined field2421_0xbc3;
    undefined field2422_0xbc4;
    undefined field2423_0xbc5;
    undefined field2424_0xbc6;
    undefined field2425_0xbc7;
    undefined field2426_0xbc8;
    undefined field2427_0xbc9;
    undefined field2428_0xbca;
    undefined field2429_0xbcb;
    undefined field2430_0xbcc;
    undefined field2431_0xbcd;
    undefined field2432_0xbce;
    undefined field2433_0xbcf;
    undefined field2434_0xbd0;
    undefined field2435_0xbd1;
    undefined field2436_0xbd2;
    undefined field2437_0xbd3;
    undefined field2438_0xbd4;
    undefined field2439_0xbd5;
    undefined field2440_0xbd6;
    undefined field2441_0xbd7;
    undefined field2442_0xbd8;
    undefined field2443_0xbd9;
    undefined field2444_0xbda;
    undefined field2445_0xbdb;
    undefined field2446_0xbdc;
    undefined field2447_0xbdd;
    undefined field2448_0xbde;
    undefined field2449_0xbdf;
    undefined field2450_0xbe0;
    undefined field2451_0xbe1;
    undefined field2452_0xbe2;
    undefined field2453_0xbe3;
    undefined field2454_0xbe4;
    undefined field2455_0xbe5;
    undefined field2456_0xbe6;
    undefined field2457_0xbe7;
    undefined field2458_0xbe8;
    undefined field2459_0xbe9;
    undefined field2460_0xbea;
    undefined field2461_0xbeb;
    undefined field2462_0xbec;
    undefined field2463_0xbed;
    undefined field2464_0xbee;
    undefined field2465_0xbef;
    undefined field2466_0xbf0;
    undefined field2467_0xbf1;
    undefined field2468_0xbf2;
    undefined field2469_0xbf3;
    undefined field2470_0xbf4;
    undefined field2471_0xbf5;
    undefined field2472_0xbf6;
    undefined field2473_0xbf7;
    undefined field2474_0xbf8;
    undefined field2475_0xbf9;
    undefined field2476_0xbfa;
    undefined field2477_0xbfb;
    undefined field2478_0xbfc;
    undefined field2479_0xbfd;
    undefined field2480_0xbfe;
    undefined field2481_0xbff;
    undefined field2482_0xc00;
    undefined field2483_0xc01;
    undefined field2484_0xc02;
    undefined field2485_0xc03;
    undefined field2486_0xc04;
    undefined field2487_0xc05;
    undefined field2488_0xc06;
    undefined field2489_0xc07;
    undefined field2490_0xc08;
    undefined field2491_0xc09;
    undefined field2492_0xc0a;
    undefined field2493_0xc0b;
    undefined field2494_0xc0c;
    undefined field2495_0xc0d;
    undefined field2496_0xc0e;
    undefined field2497_0xc0f;
    undefined field2498_0xc10;
    undefined field2499_0xc11;
    undefined field2500_0xc12;
    undefined field2501_0xc13;
    undefined field2502_0xc14;
    undefined field2503_0xc15;
    undefined field2504_0xc16;
    undefined field2505_0xc17;
};

struct GLI_Camera {
    long lSizeOfThis;
    long lTypeOfThis;
    long lCameraMode;
    struct POS_stCompletePosition stMatrix;
    float xAlphaX;
    float xAlphaY;
    GLI_tdxValue xNear;
    GLI_tdxValue xFar;
    GLI_tdxValue xScreen;
    struct GLI_tdst2DVertex stScale;
    struct GLI_tdst2DVertex stTrans;
    long lVptInitialHeight;
    long lVptInitialWidth;
    struct MTH3_Vector stNormPlaneLeft;
    float xDistPlaneLeft;
    struct MTH3_Vector stNormPlaneRight;
    float xDistPlaneRight;
    struct MTH3_Vector stNormPlaneUp;
    float xDistPlaneUp;
    struct MTH3_Vector stNormPlaneDown;
    float xDistPlaneDown;
    float xRatio;
};

struct GLI_tdstViewportManagement {
    struct HIE_tdstSuperObject *hCamera;
    struct HIE_tdstSuperObject *hTempCamera;
    struct GLI_Camera *p_stCamera;
    ACP_tdxBool bValid;
};

typedef struct GAM_tdstEngineOuter GAM_tdstEngineOuter, *PGAM_tdstEngineOuter;

struct GAM_tdstEngineOuter {
    uchar ucNumberOfLevels;
    uchar ucCurrentLevel;
    uchar ucPreviousLevel;
    uchar ucExitIdToQuitPrevLevel;
    uchar ucLevelGlobalCounter;
    ACP_tdxBool xDemoMode;
    uchar ucCurrentLanguage;
    uchar ucNbLanguages;
    ACP_tdxBool bEngineFrozen;
    ACP_tdxBool bResurrection;
    char cCameraMode;
};

typedef struct GAM_tdstLanguageStructure GAM_tdstLanguageStructure, *PGAM_tdstLanguageStructure;

struct GAM_tdstLanguageStructure {
    char szLanguageCode[20];
    char szLanguageText[20];
};

typedef struct tdstBubbleEffect_ tdstBubbleEffect_, *PtdstBubbleEffect_;

typedef struct tdstBubbleEffect_ *GAM_tdxHandleToBubbleEffect;

struct tdstBubbleEffect_ {
};

typedef struct tdstFootPath_ tdstFootPath_, *PtdstFootPath_;

typedef struct tdstFootPath_ *GAM_tdxHandleToFootPathEffect;

struct tdstFootPath_ {
};

typedef struct tdstWaterStreakEffect_ tdstWaterStreakEffect_, *PtdstWaterStreakEffect_;

typedef struct tdstWaterStreakEffect_ *GAM_tdxHandleToWaterStreakEffect;

struct tdstWaterStreakEffect_ {
};

typedef struct GameStructure GameStructure, *PGameStructure;

struct GameStructure {
    struct BinkInner0 *binkInner;
    float field1_0x4;
    float field2_0x8;
    float field3_0xc;
    float field4_0x10;
    HANDLE drawSemaphore;
    FILE *movieFile;
    dword keySeqEsc;
    undefined field8_0x20;
    undefined field9_0x21;
    undefined field10_0x22;
    undefined field11_0x23;
    undefined field12_0x24;
    undefined field13_0x25;
    undefined field14_0x26;
    undefined field15_0x27;
    undefined field16_0x28;
    undefined field17_0x29;
    undefined field18_0x2a;
    undefined field19_0x2b;
    undefined field20_0x2c;
    undefined field21_0x2d;
    undefined field22_0x2e;
    undefined field23_0x2f;
    undefined field24_0x30;
    undefined field25_0x31;
    undefined field26_0x32;
    undefined field27_0x33;
    undefined field28_0x34;
    undefined field29_0x35;
    undefined field30_0x36;
    undefined field31_0x37;
    undefined field32_0x38;
    undefined field33_0x39;
    undefined field34_0x3a;
    undefined field35_0x3b;
    undefined field36_0x3c;
    undefined field37_0x3d;
    undefined field38_0x3e;
    undefined field39_0x3f;
    byte passedToDisplayFn;
    undefined field41_0x41;
    undefined field42_0x42;
    undefined field43_0x43;
    undefined field44_0x44;
    undefined field45_0x45;
    undefined field46_0x46;
    undefined field47_0x47;
    char *movieName;
    undefined field49_0x4c;
    undefined field50_0x4d;
    undefined field51_0x4e;
    undefined field52_0x4f;
    undefined field53_0x50;
    undefined field54_0x51;
    undefined field55_0x52;
    undefined field56_0x53;
    undefined field57_0x54;
    undefined field58_0x55;
    undefined field59_0x56;
    undefined field60_0x57;
    undefined field61_0x58;
    undefined field62_0x59;
    undefined field63_0x5a;
    undefined field64_0x5b;
    float field65_0x5c;
};

typedef struct GEO_tdstBoundingSphere GEO_tdstBoundingSphere, *PGEO_tdstBoundingSphere;

struct GEO_tdstBoundingSphere {
};

typedef struct GEO_tdstColor GEO_tdstColor, *PGEO_tdstColor;

typedef float GEO_tdxColorValue;

struct GEO_tdstColor {
    GEO_tdxColorValue xR;
    GEO_tdxColorValue xG;
    GEO_tdxColorValue xB;
    GEO_tdxColorValue xA;
};

typedef struct GEO_tdstDoubledIndex GEO_tdstDoubledIndex, *PGEO_tdstDoubledIndex;

struct GEO_tdstDoubledIndex {
    ACP_tdxIndex a2_xIndex[2];
};

typedef struct GEO_tdstGeometricObject GEO_tdstGeometricObject, *PGEO_tdstGeometricObject;

struct GEO_tdstGeometricObject {
};

typedef struct GEO_tdstParallelBox GEO_tdstParallelBox, *PGEO_tdstParallelBox;

struct GEO_tdstParallelBox {
};

typedef struct GEO_tdstTripledIndex GEO_tdstTripledIndex, *PGEO_tdstTripledIndex;

struct GEO_tdstTripledIndex {
    ACP_tdxIndex a3_xIndex[3];
};

typedef struct GEO_tdstVisualSet GEO_tdstVisualSet, *PGEO_tdstVisualSet;

struct GEO_tdstVisualSet {
};

typedef void *GEO_tdxHandleToRadiosity;

typedef struct GLD_Device GLD_Device, *PGLD_Device;

typedef struct GLD_DeviceAttributes GLD_DeviceAttributes, *PGLD_DeviceAttributes;

typedef struct GLD_stViewport GLD_stViewport, *PGLD_stViewport;

typedef struct GLD_stViewport *GLD_tdpstViewport;

typedef int BOOL;

typedef float GLD_tdxValue;

struct GLD_stViewport {
    struct GLD_ViewportAttributes stViewAttrib;
    uchar bIsLocked;
};

struct GLD_DeviceAttributes {
    DWORD dwHeight;
    DWORD dwWidth;
    GLD_tdxValue xPixelDimensionX;
    GLD_tdxValue xPixelDimensionY;
    char *p_cVirtualScreen;
    LONG lPitch;
    short *p_sZBuffer;
    DWORD dwFullScreenModeX;
    DWORD dwFullScreenModeY;
    DWORD dwFullScreenModeBpp;
    HWND hFullScreenModeWnd;
    HWND hNormalModeWnd;
    uchar bFullScreen;
    uint uiTypeDriver;
    POINT pClientOnPrimary;
    RECT rtClientRect;
    RECT rtWindowRect;
};

struct GLD_Device {
    struct GLD_DeviceAttributes stDevAttrib;
    GLD_tdpstViewport pstViewports[16];
    BOOL bIsLocked;
    DWORD dwStyleBeforeSwap;
    DWORD dwExStyleBeforeSwap;
    RECT rcWindowBeforeSwap;
    DWORD dwBackgroundColor;
};


/* WARNING! conflicting data type names: /engine.h/GLD_Device - /GLD_Device */

typedef struct GLD_stViewport GLD_tdstViewport;

typedef struct GLI_tdstAnimatedTextureNode GLI_tdstAnimatedTextureNode, *PGLI_tdstAnimatedTextureNode;

typedef struct GLI_tdstTexture GLI_tdstTexture, *PGLI_tdstTexture;

struct GLI_tdstTexture {
    uchar bIsAvailable;
    long lTextureQuality;
    void *p_vBitMap;
    void *p_vColorTable;
    void *p_stSpecParam;
    ulong ulTextureCaps;
    ushort uwHeight;
    ushort uwWidth;
    ushort uwRealHeight;
    ushort uwRealWidth;
    float xAddU;
    float xAddV;
    uchar lIncrementIsEnable;
    ulong ulChromakeyColorRGBA;
    long lNumberOfLod;
    ulong ulCompressionCounter;
    ulong ulTypeOfCompression;
    ulong ulTypeOfMipMapping;
    struct GLI_tdstTexture *p_TextureOfSubstitution;
    uchar ucBilinearMode;
    uchar ucCyclingMode;
    char szFileName[128];
};

struct GLI_tdstAnimatedTextureNode {
    struct GLI_tdstTexture *p_stTexture;
    float xDisplayTime;
    struct GLI_tdstAnimatedTextureNode *p_stNextDisplayNode;
};

typedef struct GLI_tdstLight GLI_tdstLight, *PGLI_tdstLight;

typedef struct GLI_tdstZBufferForLight GLI_tdstZBufferForLight, *PGLI_tdstZBufferForLight;

struct GLI_tdstZBufferForLight {
    long lSizeX;
    long lSizeY;
    float xCoefX;
    float xCoefY;
    float *p_xZBufferMap;
    float *p_xMiddleZBufferMap;
};

struct GLI_tdstLight {
    uchar bOnOff;
    uchar bThisLightIsZBuffered;
    long lTypeOfLight;
    float xFar;
    float xNear;
    float xLittleAlpha;
    float xBigAlpha;
    float xLittleTangent;
    float xBigTangent;
    struct POS_stCompletePosition stMatrix;
    struct GLI_tdstZBufferForLight stZBuffer;
    struct GEO_tdstColor stColor;
    ACP_tdxBool bValid;
    uchar ucObjectPainted;
    ACP_tdxBool bIsPainting;
    uchar ucIsAlpha;
    struct MTH3_Vector stInter_Min_Pos;
    struct MTH3_Vector stExter_Min_Pos;
    struct MTH3_Vector stInter_Max_Pos;
    struct MTH3_Vector stExter_Max_Pos;
    struct MTH3_Vector stCenterBox;
    float xRadius;
    float xIntensity_Min;
    float xIntensity_Max;
    struct GEO_tdstColor stBackgroundColor;
};

typedef struct GLI_tdstMaterial GLI_tdstMaterial, *PGLI_tdstMaterial;

struct GLI_tdstMaterial {
    ulong ulMaterialType;
    struct GEO_tdstColor stAmbient;
    struct GEO_tdstColor stDiffuse;
    struct GEO_tdstColor stSpecular;
    struct GEO_tdstColor stColor;
    long lSpecularExponent;
    struct GLI_tdstTexture *p_stTexture;
    float xAddU;
    float xAddV;
    float xConstantAddU;
    float xConstantAddV;
    long lIncrementIsEnable;
    ulong dwActualRefreshNumber;
    struct GLI_tdstAnimatedTextureNode *p_stFirstAnimatedTextureNode;
    struct GLI_tdstAnimatedTextureNode *p_stActualAnimatedTextureNode;
    long lNumberOfDisplayNode;
    float xActualDisplayTimeSinceStartOfLastTexture;
    ACP_tdxBool xIsLocked;
};

typedef struct GMA_tdstEngineEndStructure GMA_tdstEngineEndStructure, *PGMA_tdstEngineEndStructure;

struct GMA_tdstEngineEndStructure {
    uchar ucNumberOfLevels;
    uchar ucCurrentLevel;
    uchar ucPreviousLevel;
    uchar ucExitIdToQuitPrevLevel;
    uchar ucLevelGlobalCounter;
    ACP_tdxBool xDemoMode;
    uchar ucCurrentLanguage;
    uchar ucNbLanguages;
    ACP_tdxBool bEngineFrozen;
    ACP_tdxBool bResurrection;
    char cCameraMode;
};

typedef void *GMT_tdxHandleToGameMaterial;

typedef struct _s_HandlerType HandlerType;

typedef struct HIE_tdstSuperObject_ HIE_tdstSuperObject_, *PHIE_tdstSuperObject_;

typedef union HIE_tduLinkedObject HIE_tduLinkedObject, *PHIE_tduLinkedObject;

union HIE_tduLinkedObject {
    struct HIE_tdstSuperObject *p_stSuperObject;
    void *p_Void;
};

struct HIE_tdstSuperObject_ {
    ulong ulTypeOfLinkedObject;
    union HIE_tduLinkedObject hLinkedObject;
    struct HIE_tdstSuperObject_ *hFirstElementDyn;
    struct HIE_tdstSuperObject_ *hLastElementDyn;
    long lNumberOfElementsDyn;
    struct HIE_tdstSuperObject_ *hNextBrotherDyn;
    struct HIE_tdstSuperObject_ *hPrevBrotherDyn;
    struct HIE_tdstSuperObject_ *hFatherDyn;
    POS_tdxHandleToPosition hLocalMatrix;
    POS_tdxHandleToPosition hGlobalMatrix;
    long lLastComputeFrame;
    long lDrawModeMask;
    ulong ulFlags;
    void *hBoundingVolume;
    float fTransparenceLevel;
    struct MTH3_Vector stSemiLookAtVector;
};

typedef struct IDirectInput2A IDirectInput2A, *PIDirectInput2A;

typedef struct IDirectInput2AVtbl IDirectInput2AVtbl, *PIDirectInput2AVtbl;

typedef LONG HRESULT;

typedef GUID IID;

typedef DWORD ULONG;

typedef struct IDirectInputDeviceA IDirectInputDeviceA, *PIDirectInputDeviceA;

typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;

typedef struct IUnknown *LPUNKNOWN;

typedef struct DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;

typedef BOOL (*LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID);

typedef GUID *LPGUID;

typedef struct IDirectInputDeviceAVtbl IDirectInputDeviceAVtbl, *PIDirectInputDeviceAVtbl;

typedef struct DIDEVCAPS *LPDIDEVCAPS;

typedef struct DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;

typedef BOOL (*LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);

typedef struct DIPROPHEADER *LPDIPROPHEADER;

typedef struct DIPROPHEADER *LPCDIPROPHEADER;

typedef struct DIDEVICEOBJECTDATA *LPDIDEVICEOBJECTDATA;

typedef DIDATAFORMAT *LPCDIDATAFORMAT;

typedef struct DIDEVICEOBJECTINSTANCEA *LPDIDEVICEOBJECTINSTANCEA;

typedef struct DIDEVICEINSTANCEA *LPDIDEVICEINSTANCEA;

struct IDirectInputDeviceAVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDeviceA *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDeviceA *);
    ULONG (*Release)(struct IDirectInputDeviceA *);
    HRESULT (*GetCapabilities)(struct IDirectInputDeviceA *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDeviceA *, LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDeviceA *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDeviceA *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDeviceA *);
    HRESULT (*Unacquire)(struct IDirectInputDeviceA *);
    HRESULT (*GetDeviceState)(struct IDirectInputDeviceA *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDeviceA *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDeviceA *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDeviceA *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDeviceA *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDeviceA *, LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDeviceA *, LPDIDEVICEINSTANCEA);
    HRESULT (*RunControlPanel)(struct IDirectInputDeviceA *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDeviceA *, HINSTANCE, DWORD, GUID *);
};

struct IDirectInput2AVtbl {
    HRESULT (*QueryInterface)(struct IDirectInput2A *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInput2A *);
    ULONG (*Release)(struct IDirectInput2A *);
    HRESULT (*CreateDevice)(struct IDirectInput2A *, GUID *, LPDIRECTINPUTDEVICEA *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInput2A *, DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInput2A *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInput2A *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInput2A *, HINSTANCE, DWORD);
    HRESULT (*FindDevice)(struct IDirectInput2A *, GUID *, LPCSTR, LPGUID);
};

struct IDirectInputDeviceA {
    struct IDirectInputDeviceAVtbl *lpVtbl;
};

struct IDirectInput2A {
    struct IDirectInput2AVtbl *lpVtbl;
};

typedef struct IDirectInput2W IDirectInput2W, *PIDirectInput2W;

typedef struct IDirectInput2WVtbl IDirectInput2WVtbl, *PIDirectInput2WVtbl;

typedef struct IDirectInputDeviceW IDirectInputDeviceW, *PIDirectInputDeviceW;

typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;

typedef struct DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;

typedef BOOL (*LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID);

typedef struct IDirectInputDeviceWVtbl IDirectInputDeviceWVtbl, *PIDirectInputDeviceWVtbl;

typedef struct DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;

typedef BOOL (*LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);

typedef struct DIDEVICEOBJECTINSTANCEW *LPDIDEVICEOBJECTINSTANCEW;

typedef struct DIDEVICEINSTANCEW *LPDIDEVICEINSTANCEW;

struct IDirectInputDeviceWVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDeviceW *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDeviceW *);
    ULONG (*Release)(struct IDirectInputDeviceW *);
    HRESULT (*GetCapabilities)(struct IDirectInputDeviceW *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDeviceW *, LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDeviceW *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDeviceW *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDeviceW *);
    HRESULT (*Unacquire)(struct IDirectInputDeviceW *);
    HRESULT (*GetDeviceState)(struct IDirectInputDeviceW *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDeviceW *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDeviceW *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDeviceW *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDeviceW *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDeviceW *, LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDeviceW *, LPDIDEVICEINSTANCEW);
    HRESULT (*RunControlPanel)(struct IDirectInputDeviceW *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDeviceW *, HINSTANCE, DWORD, GUID *);
};

struct IDirectInput2WVtbl {
    HRESULT (*QueryInterface)(struct IDirectInput2W *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInput2W *);
    ULONG (*Release)(struct IDirectInput2W *);
    HRESULT (*CreateDevice)(struct IDirectInput2W *, GUID *, LPDIRECTINPUTDEVICEW *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInput2W *, DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInput2W *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInput2W *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInput2W *, HINSTANCE, DWORD);
    HRESULT (*FindDevice)(struct IDirectInput2W *, GUID *, LPCWSTR, LPGUID);
};

struct IDirectInput2W {
    struct IDirectInput2WVtbl *lpVtbl;
};

struct IDirectInputDeviceW {
    struct IDirectInputDeviceWVtbl *lpVtbl;
};

typedef struct IDirectInput7A IDirectInput7A, *PIDirectInput7A;

typedef struct IDirectInput7AVtbl IDirectInput7AVtbl, *PIDirectInput7AVtbl;

struct IDirectInput7A {
    struct IDirectInput7AVtbl *lpVtbl;
};

struct IDirectInput7AVtbl {
    HRESULT (*QueryInterface)(struct IDirectInput7A *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInput7A *);
    ULONG (*Release)(struct IDirectInput7A *);
    HRESULT (*CreateDevice)(struct IDirectInput7A *, GUID *, LPDIRECTINPUTDEVICEA *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInput7A *, DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInput7A *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInput7A *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInput7A *, HINSTANCE, DWORD);
    HRESULT (*FindDevice)(struct IDirectInput7A *, GUID *, LPCSTR, LPGUID);
    HRESULT (*CreateDeviceEx)(struct IDirectInput7A *, GUID *, IID *, LPVOID *, LPUNKNOWN);
};

typedef struct IDirectInput7W IDirectInput7W, *PIDirectInput7W;

typedef struct IDirectInput7WVtbl IDirectInput7WVtbl, *PIDirectInput7WVtbl;

struct IDirectInput7WVtbl {
    HRESULT (*QueryInterface)(struct IDirectInput7W *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInput7W *);
    ULONG (*Release)(struct IDirectInput7W *);
    HRESULT (*CreateDevice)(struct IDirectInput7W *, GUID *, LPDIRECTINPUTDEVICEW *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInput7W *, DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInput7W *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInput7W *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInput7W *, HINSTANCE, DWORD);
    HRESULT (*FindDevice)(struct IDirectInput7W *, GUID *, LPCWSTR, LPGUID);
    HRESULT (*CreateDeviceEx)(struct IDirectInput7W *, GUID *, IID *, LPVOID *, LPUNKNOWN);
};

struct IDirectInput7W {
    struct IDirectInput7WVtbl *lpVtbl;
};

typedef struct IDirectInput8A IDirectInput8A, *PIDirectInput8A;

typedef struct IDirectInput8AVtbl IDirectInput8AVtbl, *PIDirectInput8AVtbl;

typedef struct IDirectInputDevice8A IDirectInputDevice8A, *PIDirectInputDevice8A;

typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;

typedef BOOL (*LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID);

typedef BOOL (*LPDICONFIGUREDEVICESCALLBACK)(struct IUnknown *, LPVOID);

typedef struct _DICONFIGUREDEVICESPARAMSA *LPDICONFIGUREDEVICESPARAMSA;

typedef struct IDirectInputDevice8AVtbl IDirectInputDevice8AVtbl, *PIDirectInputDevice8AVtbl;

typedef struct IDirectInputEffect IDirectInputEffect, *PIDirectInputEffect;

typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;

typedef struct DIEFFECTINFOA *LPCDIEFFECTINFOA;

typedef BOOL (*LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);

typedef struct DIEFFECTINFOA *LPDIEFFECTINFOA;

typedef BOOL (*LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);

typedef struct DIEFFESCAPE *LPDIEFFESCAPE;

typedef struct DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;

typedef struct DIFILEEFFECT *LPCDIFILEEFFECT;

typedef BOOL (*LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT, LPVOID);

typedef struct DIFILEEFFECT *LPDIFILEEFFECT;

typedef struct _DIDEVICEIMAGEINFOHEADERA *LPDIDEVICEIMAGEINFOHEADERA;

typedef struct IDirectInputEffectVtbl IDirectInputEffectVtbl, *PIDirectInputEffectVtbl;

typedef struct DIEFFECT *LPDIEFFECT;

struct IDirectInput8AVtbl {
    HRESULT (*QueryInterface)(struct IDirectInput8A *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInput8A *);
    ULONG (*Release)(struct IDirectInput8A *);
    HRESULT (*CreateDevice)(struct IDirectInput8A *, GUID *, LPDIRECTINPUTDEVICE8A *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInput8A *, DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInput8A *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInput8A *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInput8A *, HINSTANCE, DWORD);
    HRESULT (*FindDevice)(struct IDirectInput8A *, GUID *, LPCSTR, LPGUID);
    HRESULT (*EnumDevicesBySemantics)(struct IDirectInput8A *, LPCSTR, LPDIACTIONFORMATA, LPDIENUMDEVICESBYSEMANTICSCBA, LPVOID, DWORD);
    HRESULT (*ConfigureDevices)(struct IDirectInput8A *, LPDICONFIGUREDEVICESCALLBACK, LPDICONFIGUREDEVICESPARAMSA, DWORD, LPVOID);
};

struct IDirectInputEffect {
    struct IDirectInputEffectVtbl *lpVtbl;
};

struct IDirectInputDevice8A {
    struct IDirectInputDevice8AVtbl *lpVtbl;
};

struct IDirectInputEffectVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputEffect *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputEffect *);
    ULONG (*Release)(struct IDirectInputEffect *);
    HRESULT (*Initialize)(struct IDirectInputEffect *, HINSTANCE, DWORD, GUID *);
    HRESULT (*GetEffectGuid)(struct IDirectInputEffect *, LPGUID);
    HRESULT (*GetParameters)(struct IDirectInputEffect *, LPDIEFFECT, DWORD);
    HRESULT (*SetParameters)(struct IDirectInputEffect *, LPCDIEFFECT, DWORD);
    HRESULT (*Start)(struct IDirectInputEffect *, DWORD, DWORD);
    HRESULT (*Stop)(struct IDirectInputEffect *);
    HRESULT (*GetEffectStatus)(struct IDirectInputEffect *, LPDWORD);
    HRESULT (*Download)(struct IDirectInputEffect *);
    HRESULT (*Unload)(struct IDirectInputEffect *);
    HRESULT (*Escape)(struct IDirectInputEffect *, LPDIEFFESCAPE);
};

struct IDirectInputDevice8AVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDevice8A *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDevice8A *);
    ULONG (*Release)(struct IDirectInputDevice8A *);
    HRESULT (*GetCapabilities)(struct IDirectInputDevice8A *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDevice8A *, LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDevice8A *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDevice8A *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDevice8A *);
    HRESULT (*Unacquire)(struct IDirectInputDevice8A *);
    HRESULT (*GetDeviceState)(struct IDirectInputDevice8A *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDevice8A *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDevice8A *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDevice8A *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDevice8A *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDevice8A *, LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDevice8A *, LPDIDEVICEINSTANCEA);
    HRESULT (*RunControlPanel)(struct IDirectInputDevice8A *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDevice8A *, HINSTANCE, DWORD, GUID *);
    HRESULT (*CreateEffect)(struct IDirectInputDevice8A *, GUID *, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN);
    HRESULT (*EnumEffects)(struct IDirectInputDevice8A *, LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetEffectInfo)(struct IDirectInputDevice8A *, LPDIEFFECTINFOA, GUID *);
    HRESULT (*GetForceFeedbackState)(struct IDirectInputDevice8A *, LPDWORD);
    HRESULT (*SendForceFeedbackCommand)(struct IDirectInputDevice8A *, DWORD);
    HRESULT (*EnumCreatedEffectObjects)(struct IDirectInputDevice8A *, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
    HRESULT (*Escape)(struct IDirectInputDevice8A *, LPDIEFFESCAPE);
    HRESULT (*Poll)(struct IDirectInputDevice8A *);
    HRESULT (*SendDeviceData)(struct IDirectInputDevice8A *, DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*EnumEffectsInFile)(struct IDirectInputDevice8A *, LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD);
    HRESULT (*WriteEffectToFile)(struct IDirectInputDevice8A *, LPCSTR, DWORD, LPDIFILEEFFECT, DWORD);
    HRESULT (*BuildActionMap)(struct IDirectInputDevice8A *, LPDIACTIONFORMATA, LPCSTR, DWORD);
    HRESULT (*SetActionMap)(struct IDirectInputDevice8A *, LPDIACTIONFORMATA, LPCSTR, DWORD);
    HRESULT (*GetImageInfo)(struct IDirectInputDevice8A *, LPDIDEVICEIMAGEINFOHEADERA);
};

struct IDirectInput8A {
    struct IDirectInput8AVtbl *lpVtbl;
};

typedef struct IDirectInput8W IDirectInput8W, *PIDirectInput8W;

typedef struct IDirectInput8WVtbl IDirectInput8WVtbl, *PIDirectInput8WVtbl;

typedef struct IDirectInputDevice8W IDirectInputDevice8W, *PIDirectInputDevice8W;

typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;

typedef BOOL (*LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID);

typedef struct _DICONFIGUREDEVICESPARAMSW *LPDICONFIGUREDEVICESPARAMSW;

typedef struct IDirectInputDevice8WVtbl IDirectInputDevice8WVtbl, *PIDirectInputDevice8WVtbl;

typedef struct DIEFFECTINFOW *LPCDIEFFECTINFOW;

typedef BOOL (*LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);

typedef struct DIEFFECTINFOW *LPDIEFFECTINFOW;

typedef struct _DIDEVICEIMAGEINFOHEADERW *LPDIDEVICEIMAGEINFOHEADERW;

struct IDirectInput8W {
    struct IDirectInput8WVtbl *lpVtbl;
};

struct IDirectInputDevice8WVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDevice8W *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDevice8W *);
    ULONG (*Release)(struct IDirectInputDevice8W *);
    HRESULT (*GetCapabilities)(struct IDirectInputDevice8W *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDevice8W *, LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDevice8W *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDevice8W *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDevice8W *);
    HRESULT (*Unacquire)(struct IDirectInputDevice8W *);
    HRESULT (*GetDeviceState)(struct IDirectInputDevice8W *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDevice8W *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDevice8W *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDevice8W *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDevice8W *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDevice8W *, LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDevice8W *, LPDIDEVICEINSTANCEW);
    HRESULT (*RunControlPanel)(struct IDirectInputDevice8W *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDevice8W *, HINSTANCE, DWORD, GUID *);
    HRESULT (*CreateEffect)(struct IDirectInputDevice8W *, GUID *, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN);
    HRESULT (*EnumEffects)(struct IDirectInputDevice8W *, LPDIENUMEFFECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetEffectInfo)(struct IDirectInputDevice8W *, LPDIEFFECTINFOW, GUID *);
    HRESULT (*GetForceFeedbackState)(struct IDirectInputDevice8W *, LPDWORD);
    HRESULT (*SendForceFeedbackCommand)(struct IDirectInputDevice8W *, DWORD);
    HRESULT (*EnumCreatedEffectObjects)(struct IDirectInputDevice8W *, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
    HRESULT (*Escape)(struct IDirectInputDevice8W *, LPDIEFFESCAPE);
    HRESULT (*Poll)(struct IDirectInputDevice8W *);
    HRESULT (*SendDeviceData)(struct IDirectInputDevice8W *, DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*EnumEffectsInFile)(struct IDirectInputDevice8W *, LPCWSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD);
    HRESULT (*WriteEffectToFile)(struct IDirectInputDevice8W *, LPCWSTR, DWORD, LPDIFILEEFFECT, DWORD);
    HRESULT (*BuildActionMap)(struct IDirectInputDevice8W *, LPDIACTIONFORMATW, LPCWSTR, DWORD);
    HRESULT (*SetActionMap)(struct IDirectInputDevice8W *, LPDIACTIONFORMATW, LPCWSTR, DWORD);
    HRESULT (*GetImageInfo)(struct IDirectInputDevice8W *, LPDIDEVICEIMAGEINFOHEADERW);
};

struct IDirectInputDevice8W {
    struct IDirectInputDevice8WVtbl *lpVtbl;
};

struct IDirectInput8WVtbl {
    HRESULT (*QueryInterface)(struct IDirectInput8W *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInput8W *);
    ULONG (*Release)(struct IDirectInput8W *);
    HRESULT (*CreateDevice)(struct IDirectInput8W *, GUID *, LPDIRECTINPUTDEVICE8W *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInput8W *, DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInput8W *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInput8W *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInput8W *, HINSTANCE, DWORD);
    HRESULT (*FindDevice)(struct IDirectInput8W *, GUID *, LPCWSTR, LPGUID);
    HRESULT (*EnumDevicesBySemantics)(struct IDirectInput8W *, LPCWSTR, LPDIACTIONFORMATW, LPDIENUMDEVICESBYSEMANTICSCBW, LPVOID, DWORD);
    HRESULT (*ConfigureDevices)(struct IDirectInput8W *, LPDICONFIGUREDEVICESCALLBACK, LPDICONFIGUREDEVICESPARAMSW, DWORD, LPVOID);
};

typedef struct IDirectInputA IDirectInputA, *PIDirectInputA;

typedef struct IDirectInputAVtbl IDirectInputAVtbl, *PIDirectInputAVtbl;

struct IDirectInputA {
    struct IDirectInputAVtbl *lpVtbl;
};

struct IDirectInputAVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputA *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputA *);
    ULONG (*Release)(struct IDirectInputA *);
    HRESULT (*CreateDevice)(struct IDirectInputA *, GUID *, LPDIRECTINPUTDEVICEA *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInputA *, DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInputA *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInputA *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputA *, HINSTANCE, DWORD);
};

typedef struct IDirectInputDevice2A IDirectInputDevice2A, *PIDirectInputDevice2A;

typedef struct IDirectInputDevice2AVtbl IDirectInputDevice2AVtbl, *PIDirectInputDevice2AVtbl;

struct IDirectInputDevice2A {
    struct IDirectInputDevice2AVtbl *lpVtbl;
};

struct IDirectInputDevice2AVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDevice2A *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDevice2A *);
    ULONG (*Release)(struct IDirectInputDevice2A *);
    HRESULT (*GetCapabilities)(struct IDirectInputDevice2A *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDevice2A *, LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDevice2A *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDevice2A *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDevice2A *);
    HRESULT (*Unacquire)(struct IDirectInputDevice2A *);
    HRESULT (*GetDeviceState)(struct IDirectInputDevice2A *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDevice2A *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDevice2A *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDevice2A *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDevice2A *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDevice2A *, LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDevice2A *, LPDIDEVICEINSTANCEA);
    HRESULT (*RunControlPanel)(struct IDirectInputDevice2A *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDevice2A *, HINSTANCE, DWORD, GUID *);
    HRESULT (*CreateEffect)(struct IDirectInputDevice2A *, GUID *, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN);
    HRESULT (*EnumEffects)(struct IDirectInputDevice2A *, LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetEffectInfo)(struct IDirectInputDevice2A *, LPDIEFFECTINFOA, GUID *);
    HRESULT (*GetForceFeedbackState)(struct IDirectInputDevice2A *, LPDWORD);
    HRESULT (*SendForceFeedbackCommand)(struct IDirectInputDevice2A *, DWORD);
    HRESULT (*EnumCreatedEffectObjects)(struct IDirectInputDevice2A *, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
    HRESULT (*Escape)(struct IDirectInputDevice2A *, LPDIEFFESCAPE);
    HRESULT (*Poll)(struct IDirectInputDevice2A *);
    HRESULT (*SendDeviceData)(struct IDirectInputDevice2A *, DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD);
};

typedef struct IDirectInputDevice2W IDirectInputDevice2W, *PIDirectInputDevice2W;

typedef struct IDirectInputDevice2WVtbl IDirectInputDevice2WVtbl, *PIDirectInputDevice2WVtbl;

struct IDirectInputDevice2W {
    struct IDirectInputDevice2WVtbl *lpVtbl;
};

struct IDirectInputDevice2WVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDevice2W *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDevice2W *);
    ULONG (*Release)(struct IDirectInputDevice2W *);
    HRESULT (*GetCapabilities)(struct IDirectInputDevice2W *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDevice2W *, LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDevice2W *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDevice2W *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDevice2W *);
    HRESULT (*Unacquire)(struct IDirectInputDevice2W *);
    HRESULT (*GetDeviceState)(struct IDirectInputDevice2W *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDevice2W *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDevice2W *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDevice2W *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDevice2W *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDevice2W *, LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDevice2W *, LPDIDEVICEINSTANCEW);
    HRESULT (*RunControlPanel)(struct IDirectInputDevice2W *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDevice2W *, HINSTANCE, DWORD, GUID *);
    HRESULT (*CreateEffect)(struct IDirectInputDevice2W *, GUID *, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN);
    HRESULT (*EnumEffects)(struct IDirectInputDevice2W *, LPDIENUMEFFECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetEffectInfo)(struct IDirectInputDevice2W *, LPDIEFFECTINFOW, GUID *);
    HRESULT (*GetForceFeedbackState)(struct IDirectInputDevice2W *, LPDWORD);
    HRESULT (*SendForceFeedbackCommand)(struct IDirectInputDevice2W *, DWORD);
    HRESULT (*EnumCreatedEffectObjects)(struct IDirectInputDevice2W *, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
    HRESULT (*Escape)(struct IDirectInputDevice2W *, LPDIEFFESCAPE);
    HRESULT (*Poll)(struct IDirectInputDevice2W *);
    HRESULT (*SendDeviceData)(struct IDirectInputDevice2W *, DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD);
};

typedef struct IDirectInputDevice7A IDirectInputDevice7A, *PIDirectInputDevice7A;

typedef struct IDirectInputDevice7AVtbl IDirectInputDevice7AVtbl, *PIDirectInputDevice7AVtbl;

struct IDirectInputDevice7A {
    struct IDirectInputDevice7AVtbl *lpVtbl;
};

struct IDirectInputDevice7AVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDevice7A *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDevice7A *);
    ULONG (*Release)(struct IDirectInputDevice7A *);
    HRESULT (*GetCapabilities)(struct IDirectInputDevice7A *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDevice7A *, LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDevice7A *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDevice7A *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDevice7A *);
    HRESULT (*Unacquire)(struct IDirectInputDevice7A *);
    HRESULT (*GetDeviceState)(struct IDirectInputDevice7A *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDevice7A *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDevice7A *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDevice7A *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDevice7A *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDevice7A *, LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDevice7A *, LPDIDEVICEINSTANCEA);
    HRESULT (*RunControlPanel)(struct IDirectInputDevice7A *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDevice7A *, HINSTANCE, DWORD, GUID *);
    HRESULT (*CreateEffect)(struct IDirectInputDevice7A *, GUID *, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN);
    HRESULT (*EnumEffects)(struct IDirectInputDevice7A *, LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD);
    HRESULT (*GetEffectInfo)(struct IDirectInputDevice7A *, LPDIEFFECTINFOA, GUID *);
    HRESULT (*GetForceFeedbackState)(struct IDirectInputDevice7A *, LPDWORD);
    HRESULT (*SendForceFeedbackCommand)(struct IDirectInputDevice7A *, DWORD);
    HRESULT (*EnumCreatedEffectObjects)(struct IDirectInputDevice7A *, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
    HRESULT (*Escape)(struct IDirectInputDevice7A *, LPDIEFFESCAPE);
    HRESULT (*Poll)(struct IDirectInputDevice7A *);
    HRESULT (*SendDeviceData)(struct IDirectInputDevice7A *, DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*EnumEffectsInFile)(struct IDirectInputDevice7A *, LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD);
    HRESULT (*WriteEffectToFile)(struct IDirectInputDevice7A *, LPCSTR, DWORD, LPDIFILEEFFECT, DWORD);
};

typedef struct IDirectInputDevice7W IDirectInputDevice7W, *PIDirectInputDevice7W;

typedef struct IDirectInputDevice7WVtbl IDirectInputDevice7WVtbl, *PIDirectInputDevice7WVtbl;

struct IDirectInputDevice7WVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputDevice7W *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputDevice7W *);
    ULONG (*Release)(struct IDirectInputDevice7W *);
    HRESULT (*GetCapabilities)(struct IDirectInputDevice7W *, LPDIDEVCAPS);
    HRESULT (*EnumObjects)(struct IDirectInputDevice7W *, LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetProperty)(struct IDirectInputDevice7W *, GUID *, LPDIPROPHEADER);
    HRESULT (*SetProperty)(struct IDirectInputDevice7W *, GUID *, LPCDIPROPHEADER);
    HRESULT (*Acquire)(struct IDirectInputDevice7W *);
    HRESULT (*Unacquire)(struct IDirectInputDevice7W *);
    HRESULT (*GetDeviceState)(struct IDirectInputDevice7W *, DWORD, LPVOID);
    HRESULT (*GetDeviceData)(struct IDirectInputDevice7W *, DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*SetDataFormat)(struct IDirectInputDevice7W *, LPCDIDATAFORMAT);
    HRESULT (*SetEventNotification)(struct IDirectInputDevice7W *, HANDLE);
    HRESULT (*SetCooperativeLevel)(struct IDirectInputDevice7W *, HWND, DWORD);
    HRESULT (*GetObjectInfo)(struct IDirectInputDevice7W *, LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD);
    HRESULT (*GetDeviceInfo)(struct IDirectInputDevice7W *, LPDIDEVICEINSTANCEW);
    HRESULT (*RunControlPanel)(struct IDirectInputDevice7W *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputDevice7W *, HINSTANCE, DWORD, GUID *);
    HRESULT (*CreateEffect)(struct IDirectInputDevice7W *, GUID *, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN);
    HRESULT (*EnumEffects)(struct IDirectInputDevice7W *, LPDIENUMEFFECTSCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetEffectInfo)(struct IDirectInputDevice7W *, LPDIEFFECTINFOW, GUID *);
    HRESULT (*GetForceFeedbackState)(struct IDirectInputDevice7W *, LPDWORD);
    HRESULT (*SendForceFeedbackCommand)(struct IDirectInputDevice7W *, DWORD);
    HRESULT (*EnumCreatedEffectObjects)(struct IDirectInputDevice7W *, LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
    HRESULT (*Escape)(struct IDirectInputDevice7W *, LPDIEFFESCAPE);
    HRESULT (*Poll)(struct IDirectInputDevice7W *);
    HRESULT (*SendDeviceData)(struct IDirectInputDevice7W *, DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD);
    HRESULT (*EnumEffectsInFile)(struct IDirectInputDevice7W *, LPCWSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD);
    HRESULT (*WriteEffectToFile)(struct IDirectInputDevice7W *, LPCWSTR, DWORD, LPDIFILEEFFECT, DWORD);
};

struct IDirectInputDevice7W {
    struct IDirectInputDevice7WVtbl *lpVtbl;
};

typedef struct IDirectInputW IDirectInputW, *PIDirectInputW;

typedef struct IDirectInputWVtbl IDirectInputWVtbl, *PIDirectInputWVtbl;

struct IDirectInputW {
    struct IDirectInputWVtbl *lpVtbl;
};

struct IDirectInputWVtbl {
    HRESULT (*QueryInterface)(struct IDirectInputW *, IID *, LPVOID *);
    ULONG (*AddRef)(struct IDirectInputW *);
    ULONG (*Release)(struct IDirectInputW *);
    HRESULT (*CreateDevice)(struct IDirectInputW *, GUID *, LPDIRECTINPUTDEVICEW *, LPUNKNOWN);
    HRESULT (*EnumDevices)(struct IDirectInputW *, DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD);
    HRESULT (*GetDeviceStatus)(struct IDirectInputW *, GUID *);
    HRESULT (*RunControlPanel)(struct IDirectInputW *, HWND, DWORD);
    HRESULT (*Initialize)(struct IDirectInputW *, HINSTANCE, DWORD);
};

typedef struct INO_Device INO_Device, *PINO_Device;

typedef struct stDevCaps stDevCaps, *PstDevCaps;

typedef struct stDevCaps INO_tdstDevCaps;

typedef struct stDevState stDevState, *PstDevState;

typedef struct stDevState INO_tdstDevState;

typedef short (*INO_fn_wMethod)(undefined);

struct INO_Device {
    ushort m_uwType;
    INO_tdstDevCaps *m_p_stCaps;
    INO_tdstDevState *m_p_stState;
    ulong m_ulLastTimeCount;
    short m_wHistoricSize;
    short m_wHistoricHead;
    short m_wRecordNumber;
    void *m_pvHistoric;
    INO_fn_wMethod m_pfnRead;
};

struct stDevCaps {
    uchar m_ucNbButtons;
    ulong m_ulCapsFlags;
};

struct stDevState {
    uchar m_ucStatus;
};

typedef struct INO_Device *INO_DeviceHandle;

typedef struct INO_stDIDevice INO_stDIDevice, *PINO_stDIDevice;

typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICE;

typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2;

struct INO_stDIDevice {
    DIDEVICEINSTANCE m_stDevInstance;
    LPDIRECTINPUTDEVICE m_p_stDevInterface; /* set */
    LPDIRECTINPUTDEVICE2 m_p_stDevInterface2;
    short m_wExtendedInterfaceAvailable;
    undefined field4_0x24e;
    undefined field5_0x24f;
    INO_DeviceHandle m_hDevice;
    undefined field7_0x254;
    undefined field8_0x255;
    undefined field9_0x256;
    undefined field10_0x257;
    undefined field11_0x258;
    undefined field12_0x259;
    undefined field13_0x25a;
    undefined field14_0x25b;
    undefined field15_0x25c;
    undefined field16_0x25d;
    undefined field17_0x25e;
    undefined field18_0x25f;
    undefined field19_0x260;
    undefined field20_0x261;
    undefined field21_0x262;
    undefined field22_0x263;
    undefined field23_0x264;
    undefined field24_0x265;
    undefined field25_0x266;
    undefined field26_0x267;
    undefined field27_0x268;
    undefined field28_0x269;
    undefined field29_0x26a;
    undefined field30_0x26b;
    undefined field31_0x26c;
    undefined field32_0x26d;
    undefined field33_0x26e;
    undefined field34_0x26f;
    undefined field35_0x270;
    undefined field36_0x271;
    undefined field37_0x272;
    undefined field38_0x273;
    undefined field39_0x274;
    undefined field40_0x275;
    undefined field41_0x276;
    undefined field42_0x277;
    undefined field43_0x278;
    undefined field44_0x279;
    undefined field45_0x27a;
    undefined field46_0x27b;
    undefined field47_0x27c;
    undefined field48_0x27d;
    undefined field49_0x27e;
    undefined field50_0x27f;
    undefined field51_0x280;
    undefined field52_0x281;
    undefined field53_0x282;
    undefined field54_0x283;
    undefined field55_0x284;
    undefined field56_0x285;
    undefined field57_0x286;
    undefined field58_0x287;
    undefined field59_0x288;
    undefined field60_0x289;
    undefined field61_0x28a;
    undefined field62_0x28b;
    undefined field63_0x28c;
    undefined field64_0x28d;
    undefined field65_0x28e;
    undefined field66_0x28f;
    undefined field67_0x290;
    undefined field68_0x291;
    undefined field69_0x292;
    undefined field70_0x293;
    undefined field71_0x294;
    undefined field72_0x295;
    undefined field73_0x296;
    undefined field74_0x297;
    undefined field75_0x298;
    undefined field76_0x299;
    undefined field77_0x29a;
    undefined field78_0x29b;
    undefined field79_0x29c;
    undefined field80_0x29d;
    undefined field81_0x29e;
    undefined field82_0x29f;
    undefined field83_0x2a0;
    undefined field84_0x2a1;
    undefined field85_0x2a2;
    undefined field86_0x2a3;
    undefined field87_0x2a4;
    undefined field88_0x2a5;
    undefined field89_0x2a6;
    undefined field90_0x2a7;
    undefined field91_0x2a8;
    undefined field92_0x2a9;
    undefined field93_0x2aa;
    undefined field94_0x2ab;
    undefined field95_0x2ac;
    undefined field96_0x2ad;
    undefined field97_0x2ae;
    undefined field98_0x2af;
    undefined field99_0x2b0;
    undefined field100_0x2b1;
    undefined field101_0x2b2;
    undefined field102_0x2b3;
    undefined field103_0x2b4;
    undefined field104_0x2b5;
    undefined field105_0x2b6;
    undefined field106_0x2b7;
    undefined field107_0x2b8;
    undefined field108_0x2b9;
    undefined field109_0x2ba;
    undefined field110_0x2bb;
    undefined field111_0x2bc;
    undefined field112_0x2bd;
    undefined field113_0x2be;
    undefined field114_0x2bf;
    undefined field115_0x2c0;
    undefined field116_0x2c1;
    undefined field117_0x2c2;
    undefined field118_0x2c3;
    undefined field119_0x2c4;
    undefined field120_0x2c5;
    undefined field121_0x2c6;
    undefined field122_0x2c7;
    undefined field123_0x2c8;
    undefined field124_0x2c9;
    undefined field125_0x2ca;
    undefined field126_0x2cb;
    undefined field127_0x2cc;
    undefined field128_0x2cd;
    undefined field129_0x2ce;
    undefined field130_0x2cf;
    undefined field131_0x2d0;
    undefined field132_0x2d1;
    undefined field133_0x2d2;
    undefined field134_0x2d3;
    undefined field135_0x2d4;
    undefined field136_0x2d5;
    undefined field137_0x2d6;
    undefined field138_0x2d7;
    undefined field139_0x2d8;
    undefined field140_0x2d9;
    undefined field141_0x2da;
    undefined field142_0x2db;
    undefined field143_0x2dc;
    undefined field144_0x2dd;
    undefined field145_0x2de;
    undefined field146_0x2df;
    undefined field147_0x2e0;
    undefined field148_0x2e1;
    undefined field149_0x2e2;
    undefined field150_0x2e3;
    undefined field151_0x2e4;
    undefined field152_0x2e5;
    undefined field153_0x2e6;
    undefined field154_0x2e7;
    undefined field155_0x2e8;
    undefined field156_0x2e9;
    undefined field157_0x2ea;
    undefined field158_0x2eb;
    undefined field159_0x2ec;
    undefined field160_0x2ed;
    undefined field161_0x2ee;
    undefined field162_0x2ef;
    undefined field163_0x2f0;
    undefined field164_0x2f1;
    undefined field165_0x2f2;
    undefined field166_0x2f3;
    undefined field167_0x2f4;
    undefined field168_0x2f5;
    undefined field169_0x2f6;
    undefined field170_0x2f7;
    undefined field171_0x2f8;
    undefined field172_0x2f9;
    undefined field173_0x2fa;
    undefined field174_0x2fb;
    undefined field175_0x2fc;
    undefined field176_0x2fd;
    undefined field177_0x2fe;
    undefined field178_0x2ff;
    undefined field179_0x300;
    undefined field180_0x301;
    undefined field181_0x302;
    undefined field182_0x303;
    undefined field183_0x304;
    undefined field184_0x305;
    undefined field185_0x306;
    undefined field186_0x307;
    undefined field187_0x308;
    undefined field188_0x309;
    undefined field189_0x30a;
    undefined field190_0x30b;
    undefined field191_0x30c;
    undefined field192_0x30d;
    undefined field193_0x30e;
    undefined field194_0x30f;
    undefined field195_0x310;
    undefined field196_0x311;
    undefined field197_0x312;
    undefined field198_0x313;
    undefined field199_0x314;
    undefined field200_0x315;
    undefined field201_0x316;
    undefined field202_0x317;
    undefined field203_0x318;
    undefined field204_0x319;
    undefined field205_0x31a;
    undefined field206_0x31b;
    undefined field207_0x31c;
    undefined field208_0x31d;
    undefined field209_0x31e;
    undefined field210_0x31f;
    undefined field211_0x320;
    undefined field212_0x321;
    undefined field213_0x322;
    undefined field214_0x323;
    undefined field215_0x324;
    undefined field216_0x325;
    undefined field217_0x326;
    undefined field218_0x327;
    undefined field219_0x328;
    undefined field220_0x329;
    undefined field221_0x32a;
    undefined field222_0x32b;
    undefined field223_0x32c;
    undefined field224_0x32d;
    undefined field225_0x32e;
    undefined field226_0x32f;
    undefined field227_0x330;
    undefined field228_0x331;
    undefined field229_0x332;
    undefined field230_0x333;
    undefined field231_0x334;
    undefined field232_0x335;
    undefined field233_0x336;
    undefined field234_0x337;
    undefined field235_0x338;
    undefined field236_0x339;
    undefined field237_0x33a;
    undefined field238_0x33b;
    undefined field239_0x33c;
    undefined field240_0x33d;
    undefined field241_0x33e;
    undefined field242_0x33f;
    undefined field243_0x340;
    undefined field244_0x341;
    undefined field245_0x342;
    undefined field246_0x343;
    undefined field247_0x344;
    undefined field248_0x345;
    undefined field249_0x346;
    undefined field250_0x347;
    undefined field251_0x348;
    undefined field252_0x349;
    undefined field253_0x34a;
    undefined field254_0x34b;
    undefined field255_0x34c;
    undefined field256_0x34d;
    undefined field257_0x34e;
    undefined field258_0x34f;
    undefined field259_0x350;
    undefined field260_0x351;
    undefined field261_0x352;
    undefined field262_0x353;
    undefined field263_0x354;
    undefined field264_0x355;
    undefined field265_0x356;
    undefined field266_0x357;
    undefined field267_0x358;
    undefined field268_0x359;
    undefined field269_0x35a;
    undefined field270_0x35b;
    undefined field271_0x35c;
    undefined field272_0x35d;
    undefined field273_0x35e;
    undefined field274_0x35f;
    undefined field275_0x360;
    undefined field276_0x361;
    undefined field277_0x362;
    undefined field278_0x363;
    undefined field279_0x364;
    undefined field280_0x365;
    undefined field281_0x366;
    undefined field282_0x367;
    undefined field283_0x368;
    undefined field284_0x369;
    undefined field285_0x36a;
    undefined field286_0x36b;
    undefined field287_0x36c;
    undefined field288_0x36d;
    undefined field289_0x36e;
    undefined field290_0x36f;
    undefined field291_0x370;
    undefined field292_0x371;
    undefined field293_0x372;
    undefined field294_0x373;
    undefined field295_0x374;
    undefined field296_0x375;
    undefined field297_0x376;
    undefined field298_0x377;
    undefined field299_0x378;
    undefined field300_0x379;
    undefined field301_0x37a;
    undefined field302_0x37b;
    undefined field303_0x37c;
    undefined field304_0x37d;
    undefined field305_0x37e;
    undefined field306_0x37f;
    undefined field307_0x380;
    undefined field308_0x381;
    undefined field309_0x382;
    undefined field310_0x383;
    undefined field311_0x384;
    undefined field312_0x385;
    undefined field313_0x386;
    undefined field314_0x387;
    undefined field315_0x388;
    undefined field316_0x389;
    undefined field317_0x38a;
    undefined field318_0x38b;
    undefined field319_0x38c;
    undefined field320_0x38d;
    undefined field321_0x38e;
    undefined field322_0x38f;
    undefined field323_0x390;
    undefined field324_0x391;
    undefined field325_0x392;
    undefined field326_0x393;
    undefined field327_0x394;
    undefined field328_0x395;
    undefined field329_0x396;
    undefined field330_0x397;
    undefined field331_0x398;
    undefined field332_0x399;
    undefined field333_0x39a;
    undefined field334_0x39b;
    undefined field335_0x39c;
    undefined field336_0x39d;
    undefined field337_0x39e;
    undefined field338_0x39f;
    undefined field339_0x3a0;
    undefined field340_0x3a1;
    undefined field341_0x3a2;
    undefined field342_0x3a3;
    undefined field343_0x3a4;
    undefined field344_0x3a5;
    undefined field345_0x3a6;
    undefined field346_0x3a7;
    undefined field347_0x3a8;
    undefined field348_0x3a9;
    undefined field349_0x3aa;
    undefined field350_0x3ab;
    undefined field351_0x3ac;
    undefined field352_0x3ad;
    undefined field353_0x3ae;
    undefined field354_0x3af;
    undefined field355_0x3b0;
    undefined field356_0x3b1;
    undefined field357_0x3b2;
    undefined field358_0x3b3;
    undefined field359_0x3b4;
    undefined field360_0x3b5;
    undefined field361_0x3b6;
    undefined field362_0x3b7;
    undefined field363_0x3b8;
    undefined field364_0x3b9;
    undefined field365_0x3ba;
    undefined field366_0x3bb;
    undefined field367_0x3bc;
    undefined field368_0x3bd;
    undefined field369_0x3be;
    undefined field370_0x3bf;
    undefined field371_0x3c0;
    undefined field372_0x3c1;
    undefined field373_0x3c2;
    undefined field374_0x3c3;
    undefined field375_0x3c4;
    undefined field376_0x3c5;
    undefined field377_0x3c6;
    undefined field378_0x3c7;
    undefined field379_0x3c8;
    undefined field380_0x3c9;
    undefined field381_0x3ca;
    undefined field382_0x3cb;
    undefined field383_0x3cc;
    undefined field384_0x3cd;
    undefined field385_0x3ce;
    undefined field386_0x3cf;
    undefined field387_0x3d0;
    undefined field388_0x3d1;
    undefined field389_0x3d2;
    undefined field390_0x3d3;
    undefined field391_0x3d4;
    undefined field392_0x3d5;
    undefined field393_0x3d6;
    undefined field394_0x3d7;
    undefined field395_0x3d8;
    undefined field396_0x3d9;
    undefined field397_0x3da;
    undefined field398_0x3db;
    undefined field399_0x3dc;
    undefined field400_0x3dd;
    undefined field401_0x3de;
    undefined field402_0x3df;
    undefined field403_0x3e0;
    undefined field404_0x3e1;
    undefined field405_0x3e2;
    undefined field406_0x3e3;
    undefined field407_0x3e4;
    undefined field408_0x3e5;
    undefined field409_0x3e6;
    undefined field410_0x3e7;
    undefined field411_0x3e8;
    undefined field412_0x3e9;
    undefined field413_0x3ea;
    undefined field414_0x3eb;
    undefined field415_0x3ec;
    undefined field416_0x3ed;
    undefined field417_0x3ee;
    undefined field418_0x3ef;
    undefined field419_0x3f0;
    undefined field420_0x3f1;
    undefined field421_0x3f2;
    undefined field422_0x3f3;
    undefined field423_0x3f4;
    undefined field424_0x3f5;
    undefined field425_0x3f6;
    undefined field426_0x3f7;
    undefined field427_0x3f8;
    undefined field428_0x3f9;
    undefined field429_0x3fa;
    undefined field430_0x3fb;
    undefined field431_0x3fc;
    undefined field432_0x3fd;
    undefined field433_0x3fe;
    undefined field434_0x3ff;
    undefined field435_0x400;
    undefined field436_0x401;
    undefined field437_0x402;
    undefined field438_0x403;
    undefined field439_0x404;
    undefined field440_0x405;
    undefined field441_0x406;
    undefined field442_0x407;
    undefined field443_0x408;
    undefined field444_0x409;
    undefined field445_0x40a;
    undefined field446_0x40b;
    undefined field447_0x40c;
    undefined field448_0x40d;
    undefined field449_0x40e;
    undefined field450_0x40f;
    undefined field451_0x410;
    undefined field452_0x411;
    undefined field453_0x412;
    undefined field454_0x413;
    undefined field455_0x414;
    undefined field456_0x415;
    undefined field457_0x416;
    undefined field458_0x417;
    undefined field459_0x418;
    undefined field460_0x419;
    undefined field461_0x41a;
    undefined field462_0x41b;
    undefined field463_0x41c;
    undefined field464_0x41d;
    undefined field465_0x41e;
    undefined field466_0x41f;
    undefined field467_0x420;
    undefined field468_0x421;
    undefined field469_0x422;
    undefined field470_0x423;
    undefined field471_0x424;
    undefined field472_0x425;
    undefined field473_0x426;
    undefined field474_0x427;
    undefined field475_0x428;
    undefined field476_0x429;
    undefined field477_0x42a;
    undefined field478_0x42b;
    undefined field479_0x42c;
    undefined field480_0x42d;
    undefined field481_0x42e;
    undefined field482_0x42f;
    undefined field483_0x430;
    undefined field484_0x431;
    undefined field485_0x432;
    undefined field486_0x433;
    undefined field487_0x434;
    undefined field488_0x435;
    undefined field489_0x436;
    undefined field490_0x437;
    undefined field491_0x438;
    undefined field492_0x439;
    undefined field493_0x43a;
    undefined field494_0x43b;
    undefined field495_0x43c;
    undefined field496_0x43d;
    undefined field497_0x43e;
    undefined field498_0x43f;
    undefined field499_0x440;
    undefined field500_0x441;
    undefined field501_0x442;
    undefined field502_0x443;
    undefined field503_0x444;
    undefined field504_0x445;
    undefined field505_0x446;
    undefined field506_0x447;
    undefined field507_0x448;
    undefined field508_0x449;
    undefined field509_0x44a;
    undefined field510_0x44b;
    undefined field511_0x44c;
    undefined field512_0x44d;
    undefined field513_0x44e;
    undefined field514_0x44f;
    undefined field515_0x450;
    undefined field516_0x451;
    undefined field517_0x452;
    undefined field518_0x453;
    undefined field519_0x454;
    undefined field520_0x455;
    undefined field521_0x456;
    undefined field522_0x457;
    undefined field523_0x458;
    undefined field524_0x459;
    undefined field525_0x45a;
    undefined field526_0x45b;
    undefined field527_0x45c;
    undefined field528_0x45d;
    undefined field529_0x45e;
    undefined field530_0x45f;
    undefined field531_0x460;
    undefined field532_0x461;
    undefined field533_0x462;
    undefined field534_0x463;
    undefined field535_0x464;
    undefined field536_0x465;
    undefined field537_0x466;
    undefined field538_0x467;
    undefined field539_0x468;
    undefined field540_0x469;
    undefined field541_0x46a;
    undefined field542_0x46b;
    undefined field543_0x46c;
    undefined field544_0x46d;
    undefined field545_0x46e;
    undefined field546_0x46f;
    undefined field547_0x470;
    undefined field548_0x471;
    undefined field549_0x472;
    undefined field550_0x473;
    undefined field551_0x474;
    undefined field552_0x475;
    undefined field553_0x476;
    undefined field554_0x477;
    undefined field555_0x478;
    undefined field556_0x479;
    undefined field557_0x47a;
    undefined field558_0x47b;
    undefined field559_0x47c;
    undefined field560_0x47d;
    undefined field561_0x47e;
    undefined field562_0x47f;
    undefined field563_0x480;
    undefined field564_0x481;
    undefined field565_0x482;
    undefined field566_0x483;
    undefined field567_0x484;
    undefined field568_0x485;
    undefined field569_0x486;
    undefined field570_0x487;
    undefined field571_0x488;
    undefined field572_0x489;
    undefined field573_0x48a;
    undefined field574_0x48b;
    undefined field575_0x48c;
    undefined field576_0x48d;
    undefined field577_0x48e;
    undefined field578_0x48f;
    undefined field579_0x490;
    undefined field580_0x491;
    undefined field581_0x492;
    undefined field582_0x493;
    undefined field583_0x494;
    undefined field584_0x495;
    undefined field585_0x496;
    undefined field586_0x497;
    undefined field587_0x498;
    undefined field588_0x499;
    undefined field589_0x49a;
    undefined field590_0x49b;
    undefined field591_0x49c;
    undefined field592_0x49d;
    undefined field593_0x49e;
    undefined field594_0x49f;
    undefined field595_0x4a0;
    undefined field596_0x4a1;
    undefined field597_0x4a2;
    undefined field598_0x4a3;
    undefined field599_0x4a4;
    undefined field600_0x4a5;
    undefined field601_0x4a6;
    undefined field602_0x4a7;
    undefined field603_0x4a8;
    undefined field604_0x4a9;
    undefined field605_0x4aa;
    undefined field606_0x4ab;
    undefined field607_0x4ac;
    undefined field608_0x4ad;
    undefined field609_0x4ae;
    undefined field610_0x4af;
    undefined field611_0x4b0;
    undefined field612_0x4b1;
    undefined field613_0x4b2;
    undefined field614_0x4b3;
    undefined field615_0x4b4;
    undefined field616_0x4b5;
    undefined field617_0x4b6;
    undefined field618_0x4b7;
    undefined field619_0x4b8;
    undefined field620_0x4b9;
    undefined field621_0x4ba;
    undefined field622_0x4bb;
    undefined field623_0x4bc;
    undefined field624_0x4bd;
    undefined field625_0x4be;
    undefined field626_0x4bf;
    undefined field627_0x4c0;
    undefined field628_0x4c1;
    undefined field629_0x4c2;
    undefined field630_0x4c3;
    undefined field631_0x4c4;
    undefined field632_0x4c5;
    undefined field633_0x4c6;
    undefined field634_0x4c7;
    undefined field635_0x4c8;
    undefined field636_0x4c9;
    undefined field637_0x4ca;
    undefined field638_0x4cb;
    undefined field639_0x4cc;
    undefined field640_0x4cd;
    undefined field641_0x4ce;
    undefined field642_0x4cf;
    undefined field643_0x4d0;
    undefined field644_0x4d1;
    undefined field645_0x4d2;
    undefined field646_0x4d3;
    undefined field647_0x4d4;
    undefined field648_0x4d5;
    undefined field649_0x4d6;
    undefined field650_0x4d7;
    undefined field651_0x4d8;
    undefined field652_0x4d9;
    undefined field653_0x4da;
    undefined field654_0x4db;
    undefined field655_0x4dc;
    undefined field656_0x4dd;
    undefined field657_0x4de;
    undefined field658_0x4df;
    undefined field659_0x4e0;
    undefined field660_0x4e1;
    undefined field661_0x4e2;
    undefined field662_0x4e3;
    undefined field663_0x4e4;
    undefined field664_0x4e5;
    undefined field665_0x4e6;
    undefined field666_0x4e7;
    undefined field667_0x4e8;
    undefined field668_0x4e9;
    undefined field669_0x4ea;
    undefined field670_0x4eb;
    undefined field671_0x4ec;
    undefined field672_0x4ed;
    undefined field673_0x4ee;
    undefined field674_0x4ef;
    undefined field675_0x4f0;
    undefined field676_0x4f1;
    undefined field677_0x4f2;
    undefined field678_0x4f3;
    undefined field679_0x4f4;
    undefined field680_0x4f5;
    undefined field681_0x4f6;
    undefined field682_0x4f7;
    undefined field683_0x4f8;
    undefined field684_0x4f9;
    undefined field685_0x4fa;
    undefined field686_0x4fb;
    undefined field687_0x4fc;
    undefined field688_0x4fd;
    undefined field689_0x4fe;
    undefined field690_0x4ff;
    undefined field691_0x500;
    undefined field692_0x501;
    undefined field693_0x502;
    undefined field694_0x503;
    undefined field695_0x504;
    undefined field696_0x505;
    undefined field697_0x506;
    undefined field698_0x507;
    undefined field699_0x508;
    undefined field700_0x509;
    undefined field701_0x50a;
    undefined field702_0x50b;
    undefined field703_0x50c;
    undefined field704_0x50d;
    undefined field705_0x50e;
    undefined field706_0x50f;
    undefined field707_0x510;
    undefined field708_0x511;
    undefined field709_0x512;
    undefined field710_0x513;
    undefined field711_0x514;
    undefined field712_0x515;
    undefined field713_0x516;
    undefined field714_0x517;
    undefined field715_0x518;
    undefined field716_0x519;
    undefined field717_0x51a;
    undefined field718_0x51b;
    undefined field719_0x51c;
    undefined field720_0x51d;
    undefined field721_0x51e;
    undefined field722_0x51f;
    undefined field723_0x520;
    undefined field724_0x521;
    undefined field725_0x522;
    undefined field726_0x523;
    undefined field727_0x524;
    undefined field728_0x525;
    undefined field729_0x526;
    undefined field730_0x527;
    undefined field731_0x528;
    undefined field732_0x529;
    undefined field733_0x52a;
    undefined field734_0x52b;
    undefined field735_0x52c;
    undefined field736_0x52d;
    undefined field737_0x52e;
    undefined field738_0x52f;
    undefined field739_0x530;
    undefined field740_0x531;
    undefined field741_0x532;
    undefined field742_0x533;
    undefined field743_0x534;
    undefined field744_0x535;
    undefined field745_0x536;
    undefined field746_0x537;
    undefined field747_0x538;
    undefined field748_0x539;
    undefined field749_0x53a;
    undefined field750_0x53b;
    undefined field751_0x53c;
    undefined field752_0x53d;
    undefined field753_0x53e;
    undefined field754_0x53f;
    undefined field755_0x540;
    undefined field756_0x541;
    undefined field757_0x542;
    undefined field758_0x543;
    undefined field759_0x544;
    undefined field760_0x545;
    undefined field761_0x546;
    undefined field762_0x547;
    undefined field763_0x548;
    undefined field764_0x549;
    undefined field765_0x54a;
    undefined field766_0x54b;
    undefined field767_0x54c;
    undefined field768_0x54d;
    undefined field769_0x54e;
    undefined field770_0x54f;
    undefined field771_0x550;
    undefined field772_0x551;
    undefined field773_0x552;
    undefined field774_0x553;
    undefined field775_0x554;
    undefined field776_0x555;
    undefined field777_0x556;
    undefined field778_0x557;
    undefined field779_0x558;
    undefined field780_0x559;
    undefined field781_0x55a;
    undefined field782_0x55b;
    undefined field783_0x55c;
    undefined field784_0x55d;
    undefined field785_0x55e;
    undefined field786_0x55f;
    undefined field787_0x560;
    undefined field788_0x561;
    undefined field789_0x562;
    undefined field790_0x563;
    undefined field791_0x564;
    undefined field792_0x565;
    undefined field793_0x566;
    undefined field794_0x567;
    undefined field795_0x568;
    undefined field796_0x569;
    undefined field797_0x56a;
    undefined field798_0x56b;
    undefined field799_0x56c;
    undefined field800_0x56d;
    undefined field801_0x56e;
    undefined field802_0x56f;
    undefined field803_0x570;
    undefined field804_0x571;
    undefined field805_0x572;
    undefined field806_0x573;
    undefined field807_0x574;
    undefined field808_0x575;
    undefined field809_0x576;
    undefined field810_0x577;
    undefined field811_0x578;
    undefined field812_0x579;
    undefined field813_0x57a;
    undefined field814_0x57b;
    undefined field815_0x57c;
    undefined field816_0x57d;
    undefined field817_0x57e;
    undefined field818_0x57f;
    undefined field819_0x580;
    undefined field820_0x581;
    undefined field821_0x582;
    undefined field822_0x583;
    undefined field823_0x584;
    undefined field824_0x585;
    undefined field825_0x586;
    undefined field826_0x587;
    undefined field827_0x588;
    undefined field828_0x589;
    undefined field829_0x58a;
    undefined field830_0x58b;
    undefined field831_0x58c;
    undefined field832_0x58d;
    undefined field833_0x58e;
    undefined field834_0x58f;
    undefined field835_0x590;
    undefined field836_0x591;
    undefined field837_0x592;
    undefined field838_0x593;
    undefined field839_0x594;
    undefined field840_0x595;
    undefined field841_0x596;
    undefined field842_0x597;
    undefined field843_0x598;
    undefined field844_0x599;
    undefined field845_0x59a;
    undefined field846_0x59b;
    undefined field847_0x59c;
    undefined field848_0x59d;
    undefined field849_0x59e;
    undefined field850_0x59f;
    undefined field851_0x5a0;
    undefined field852_0x5a1;
    undefined field853_0x5a2;
    undefined field854_0x5a3;
    undefined field855_0x5a4;
    undefined field856_0x5a5;
    undefined field857_0x5a6;
    undefined field858_0x5a7;
    undefined field859_0x5a8;
    undefined field860_0x5a9;
    undefined field861_0x5aa;
    undefined field862_0x5ab;
    undefined field863_0x5ac;
    undefined field864_0x5ad;
    undefined field865_0x5ae;
    undefined field866_0x5af;
    undefined field867_0x5b0;
    undefined field868_0x5b1;
    undefined field869_0x5b2;
    undefined field870_0x5b3;
    undefined field871_0x5b4;
    undefined field872_0x5b5;
    undefined field873_0x5b6;
    undefined field874_0x5b7;
    undefined field875_0x5b8;
    undefined field876_0x5b9;
    undefined field877_0x5ba;
    undefined field878_0x5bb;
    undefined field879_0x5bc;
    undefined field880_0x5bd;
    undefined field881_0x5be;
    undefined field882_0x5bf;
    undefined field883_0x5c0;
    undefined field884_0x5c1;
    undefined field885_0x5c2;
    undefined field886_0x5c3;
    undefined field887_0x5c4;
    undefined field888_0x5c5;
    undefined field889_0x5c6;
    undefined field890_0x5c7;
    undefined field891_0x5c8;
    undefined field892_0x5c9;
    undefined field893_0x5ca;
    undefined field894_0x5cb;
    undefined field895_0x5cc;
    undefined field896_0x5cd;
    undefined field897_0x5ce;
    undefined field898_0x5cf;
    undefined field899_0x5d0;
    undefined field900_0x5d1;
    undefined field901_0x5d2;
    undefined field902_0x5d3;
    undefined field903_0x5d4;
    undefined field904_0x5d5;
    undefined field905_0x5d6;
    undefined field906_0x5d7;
    undefined field907_0x5d8;
    undefined field908_0x5d9;
    undefined field909_0x5da;
    undefined field910_0x5db;
    undefined field911_0x5dc;
    undefined field912_0x5dd;
    undefined field913_0x5de;
    undefined field914_0x5df;
    undefined field915_0x5e0;
    undefined field916_0x5e1;
    undefined field917_0x5e2;
    undefined field918_0x5e3;
    undefined field919_0x5e4;
    undefined field920_0x5e5;
    undefined field921_0x5e6;
    undefined field922_0x5e7;
    undefined field923_0x5e8;
    undefined field924_0x5e9;
    undefined field925_0x5ea;
    undefined field926_0x5eb;
    undefined field927_0x5ec;
    undefined field928_0x5ed;
    undefined field929_0x5ee;
    undefined field930_0x5ef;
    undefined field931_0x5f0;
    undefined field932_0x5f1;
    undefined field933_0x5f2;
    undefined field934_0x5f3;
    undefined field935_0x5f4;
    undefined field936_0x5f5;
    undefined field937_0x5f6;
    undefined field938_0x5f7;
    undefined field939_0x5f8;
    undefined field940_0x5f9;
    undefined field941_0x5fa;
    undefined field942_0x5fb;
    undefined field943_0x5fc;
    undefined field944_0x5fd;
    undefined field945_0x5fe;
    undefined field946_0x5ff;
    undefined field947_0x600;
    undefined field948_0x601;
    undefined field949_0x602;
    undefined field950_0x603;
    undefined field951_0x604;
    undefined field952_0x605;
    undefined field953_0x606;
    undefined field954_0x607;
    undefined field955_0x608;
    undefined field956_0x609;
    undefined field957_0x60a;
    undefined field958_0x60b;
    undefined field959_0x60c;
    undefined field960_0x60d;
    undefined field961_0x60e;
    undefined field962_0x60f;
    undefined field963_0x610;
    undefined field964_0x611;
    undefined field965_0x612;
    undefined field966_0x613;
    undefined field967_0x614;
    undefined field968_0x615;
    undefined field969_0x616;
    undefined field970_0x617;
    undefined field971_0x618;
    undefined field972_0x619;
    undefined field973_0x61a;
    undefined field974_0x61b;
    undefined field975_0x61c;
    undefined field976_0x61d;
    undefined field977_0x61e;
    undefined field978_0x61f;
    undefined field979_0x620;
    undefined field980_0x621;
    undefined field981_0x622;
    undefined field982_0x623;
    undefined field983_0x624;
    undefined field984_0x625;
    undefined field985_0x626;
    undefined field986_0x627;
    undefined field987_0x628;
    undefined field988_0x629;
    undefined field989_0x62a;
    undefined field990_0x62b;
    undefined field991_0x62c;
    undefined field992_0x62d;
    undefined field993_0x62e;
    undefined field994_0x62f;
    undefined field995_0x630;
    undefined field996_0x631;
    undefined field997_0x632;
    undefined field998_0x633;
    undefined field999_0x634;
    undefined field1000_0x635;
    undefined field1001_0x636;
    undefined field1002_0x637;
    undefined field1003_0x638;
    undefined field1004_0x639;
    undefined field1005_0x63a;
    undefined field1006_0x63b;
    undefined field1007_0x63c;
    undefined field1008_0x63d;
    undefined field1009_0x63e;
    undefined field1010_0x63f;
    undefined field1011_0x640;
    undefined field1012_0x641;
    undefined field1013_0x642;
    undefined field1014_0x643;
    undefined field1015_0x644;
    undefined field1016_0x645;
    undefined field1017_0x646;
    undefined field1018_0x647;
    undefined field1019_0x648;
    undefined field1020_0x649;
    undefined field1021_0x64a;
    undefined field1022_0x64b;
    undefined field1023_0x64c;
    undefined field1024_0x64d;
    undefined field1025_0x64e;
    undefined field1026_0x64f;
    undefined field1027_0x650;
    undefined field1028_0x651;
    undefined field1029_0x652;
    undefined field1030_0x653;
    undefined field1031_0x654;
    undefined field1032_0x655;
    undefined field1033_0x656;
    undefined field1034_0x657;
    undefined field1035_0x658;
    undefined field1036_0x659;
    undefined field1037_0x65a;
    undefined field1038_0x65b;
    undefined field1039_0x65c;
    undefined field1040_0x65d;
    undefined field1041_0x65e;
    undefined field1042_0x65f;
    undefined field1043_0x660;
    undefined field1044_0x661;
    undefined field1045_0x662;
    undefined field1046_0x663;
    undefined field1047_0x664;
    undefined field1048_0x665;
    undefined field1049_0x666;
    undefined field1050_0x667;
    undefined field1051_0x668;
    undefined field1052_0x669;
    undefined field1053_0x66a;
    undefined field1054_0x66b;
    undefined field1055_0x66c;
    undefined field1056_0x66d;
    undefined field1057_0x66e;
    undefined field1058_0x66f;
    undefined field1059_0x670;
    undefined field1060_0x671;
    undefined field1061_0x672;
    undefined field1062_0x673;
    undefined field1063_0x674;
    undefined field1064_0x675;
    undefined field1065_0x676;
    undefined field1066_0x677;
    undefined field1067_0x678;
    undefined field1068_0x679;
    undefined field1069_0x67a;
    undefined field1070_0x67b;
    undefined field1071_0x67c;
    undefined field1072_0x67d;
    undefined field1073_0x67e;
    undefined field1074_0x67f;
    undefined field1075_0x680;
    undefined field1076_0x681;
    undefined field1077_0x682;
    undefined field1078_0x683;
    undefined field1079_0x684;
    undefined field1080_0x685;
    undefined field1081_0x686;
    undefined field1082_0x687;
    undefined field1083_0x688;
    undefined field1084_0x689;
    undefined field1085_0x68a;
    undefined field1086_0x68b;
    undefined field1087_0x68c;
    undefined field1088_0x68d;
    undefined field1089_0x68e;
    undefined field1090_0x68f;
    undefined field1091_0x690;
    undefined field1092_0x691;
    undefined field1093_0x692;
    undefined field1094_0x693;
    undefined field1095_0x694;
    undefined field1096_0x695;
    undefined field1097_0x696;
    undefined field1098_0x697;
    undefined field1099_0x698;
    undefined field1100_0x699;
    undefined field1101_0x69a;
    undefined field1102_0x69b;
    undefined field1103_0x69c;
    undefined field1104_0x69d;
    undefined field1105_0x69e;
    undefined field1106_0x69f;
    undefined field1107_0x6a0;
    undefined field1108_0x6a1;
    undefined field1109_0x6a2;
    undefined field1110_0x6a3;
    undefined field1111_0x6a4;
    undefined field1112_0x6a5;
    undefined field1113_0x6a6;
    undefined field1114_0x6a7;
    undefined field1115_0x6a8;
    undefined field1116_0x6a9;
    undefined field1117_0x6aa;
    undefined field1118_0x6ab;
    undefined field1119_0x6ac;
    undefined field1120_0x6ad;
    undefined field1121_0x6ae;
    undefined field1122_0x6af;
    undefined field1123_0x6b0;
    undefined field1124_0x6b1;
    undefined field1125_0x6b2;
    undefined field1126_0x6b3;
    undefined field1127_0x6b4;
    undefined field1128_0x6b5;
    undefined field1129_0x6b6;
    undefined field1130_0x6b7;
    undefined field1131_0x6b8;
    undefined field1132_0x6b9;
    undefined field1133_0x6ba;
    undefined field1134_0x6bb;
    undefined field1135_0x6bc;
    undefined field1136_0x6bd;
    undefined field1137_0x6be;
    undefined field1138_0x6bf;
    undefined field1139_0x6c0;
    undefined field1140_0x6c1;
    undefined field1141_0x6c2;
    undefined field1142_0x6c3;
    undefined field1143_0x6c4;
    undefined field1144_0x6c5;
    undefined field1145_0x6c6;
    undefined field1146_0x6c7;
    undefined field1147_0x6c8;
    undefined field1148_0x6c9;
    undefined field1149_0x6ca;
    undefined field1150_0x6cb;
    undefined field1151_0x6cc;
    undefined field1152_0x6cd;
    undefined field1153_0x6ce;
    undefined field1154_0x6cf;
    undefined field1155_0x6d0;
    undefined field1156_0x6d1;
    undefined field1157_0x6d2;
    undefined field1158_0x6d3;
    undefined field1159_0x6d4;
    undefined field1160_0x6d5;
    undefined field1161_0x6d6;
    undefined field1162_0x6d7;
    undefined field1163_0x6d8;
    undefined field1164_0x6d9;
    undefined field1165_0x6da;
    undefined field1166_0x6db;
    undefined field1167_0x6dc;
    undefined field1168_0x6dd;
    undefined field1169_0x6de;
    undefined field1170_0x6df;
    undefined field1171_0x6e0;
    undefined field1172_0x6e1;
    undefined field1173_0x6e2;
    undefined field1174_0x6e3;
    undefined field1175_0x6e4;
    undefined field1176_0x6e5;
    undefined field1177_0x6e6;
    undefined field1178_0x6e7;
    undefined field1179_0x6e8;
    undefined field1180_0x6e9;
    undefined field1181_0x6ea;
    undefined field1182_0x6eb;
    undefined field1183_0x6ec;
    undefined field1184_0x6ed;
    undefined field1185_0x6ee;
    undefined field1186_0x6ef;
    undefined field1187_0x6f0;
    undefined field1188_0x6f1;
    undefined field1189_0x6f2;
    undefined field1190_0x6f3;
    undefined field1191_0x6f4;
    undefined field1192_0x6f5;
    undefined field1193_0x6f6;
    undefined field1194_0x6f7;
    undefined field1195_0x6f8;
    undefined field1196_0x6f9;
    undefined field1197_0x6fa;
    undefined field1198_0x6fb;
    undefined field1199_0x6fc;
    undefined field1200_0x6fd;
    undefined field1201_0x6fe;
    undefined field1202_0x6ff;
    undefined field1203_0x700;
    undefined field1204_0x701;
    undefined field1205_0x702;
    undefined field1206_0x703;
    undefined field1207_0x704;
    undefined field1208_0x705;
    undefined field1209_0x706;
    undefined field1210_0x707;
    undefined field1211_0x708;
    undefined field1212_0x709;
    undefined field1213_0x70a;
    undefined field1214_0x70b;
    undefined field1215_0x70c;
    undefined field1216_0x70d;
    undefined field1217_0x70e;
    undefined field1218_0x70f;
    undefined field1219_0x710;
    undefined field1220_0x711;
    undefined field1221_0x712;
    undefined field1222_0x713;
    undefined field1223_0x714;
    undefined field1224_0x715;
    undefined field1225_0x716;
    undefined field1226_0x717;
    undefined field1227_0x718;
    undefined field1228_0x719;
    undefined field1229_0x71a;
    undefined field1230_0x71b;
    undefined field1231_0x71c;
    undefined field1232_0x71d;
    undefined field1233_0x71e;
    undefined field1234_0x71f;
    undefined field1235_0x720;
    undefined field1236_0x721;
    undefined field1237_0x722;
    undefined field1238_0x723;
    undefined field1239_0x724;
    undefined field1240_0x725;
    undefined field1241_0x726;
    undefined field1242_0x727;
    undefined field1243_0x728;
    undefined field1244_0x729;
    undefined field1245_0x72a;
    undefined field1246_0x72b;
    undefined field1247_0x72c;
    undefined field1248_0x72d;
    undefined field1249_0x72e;
    undefined field1250_0x72f;
    undefined field1251_0x730;
    undefined field1252_0x731;
    undefined field1253_0x732;
    undefined field1254_0x733;
    undefined field1255_0x734;
    undefined field1256_0x735;
    undefined field1257_0x736;
    undefined field1258_0x737;
    undefined field1259_0x738;
    undefined field1260_0x739;
    undefined field1261_0x73a;
    undefined field1262_0x73b;
    undefined field1263_0x73c;
    undefined field1264_0x73d;
    undefined field1265_0x73e;
    undefined field1266_0x73f;
    undefined field1267_0x740;
    undefined field1268_0x741;
    undefined field1269_0x742;
    undefined field1270_0x743;
    undefined field1271_0x744;
    undefined field1272_0x745;
    undefined field1273_0x746;
    undefined field1274_0x747;
    undefined field1275_0x748;
    undefined field1276_0x749;
    undefined field1277_0x74a;
    undefined field1278_0x74b;
    undefined field1279_0x74c;
    undefined field1280_0x74d;
    undefined field1281_0x74e;
    undefined field1282_0x74f;
    undefined field1283_0x750;
    undefined field1284_0x751;
    undefined field1285_0x752;
    undefined field1286_0x753;
    undefined field1287_0x754;
    undefined field1288_0x755;
    undefined field1289_0x756;
    undefined field1290_0x757;
    undefined field1291_0x758;
    undefined field1292_0x759;
    undefined field1293_0x75a;
    undefined field1294_0x75b;
    undefined field1295_0x75c;
    undefined field1296_0x75d;
    undefined field1297_0x75e;
    undefined field1298_0x75f;
    undefined field1299_0x760;
    undefined field1300_0x761;
    undefined field1301_0x762;
    undefined field1302_0x763;
    undefined field1303_0x764;
    undefined field1304_0x765;
    undefined field1305_0x766;
    undefined field1306_0x767;
    undefined field1307_0x768;
    undefined field1308_0x769;
    undefined field1309_0x76a;
    undefined field1310_0x76b;
    undefined field1311_0x76c;
    undefined field1312_0x76d;
    undefined field1313_0x76e;
    undefined field1314_0x76f;
    undefined field1315_0x770;
    undefined field1316_0x771;
    undefined field1317_0x772;
    undefined field1318_0x773;
    undefined field1319_0x774;
    undefined field1320_0x775;
    undefined field1321_0x776;
    undefined field1322_0x777;
    undefined field1323_0x778;
    undefined field1324_0x779;
    undefined field1325_0x77a;
    undefined field1326_0x77b;
    undefined field1327_0x77c;
    undefined field1328_0x77d;
    undefined field1329_0x77e;
    undefined field1330_0x77f;
    undefined field1331_0x780;
    undefined field1332_0x781;
    undefined field1333_0x782;
    undefined field1334_0x783;
    undefined field1335_0x784;
    undefined field1336_0x785;
    undefined field1337_0x786;
    undefined field1338_0x787;
    undefined field1339_0x788;
    undefined field1340_0x789;
    undefined field1341_0x78a;
    undefined field1342_0x78b;
    undefined field1343_0x78c;
    undefined field1344_0x78d;
    undefined field1345_0x78e;
    undefined field1346_0x78f;
    undefined field1347_0x790;
    undefined field1348_0x791;
    undefined field1349_0x792;
    undefined field1350_0x793;
    undefined field1351_0x794;
    undefined field1352_0x795;
    undefined field1353_0x796;
    undefined field1354_0x797;
    undefined field1355_0x798;
    undefined field1356_0x799;
    undefined field1357_0x79a;
    undefined field1358_0x79b;
    undefined field1359_0x79c;
    undefined field1360_0x79d;
    undefined field1361_0x79e;
    undefined field1362_0x79f;
    undefined field1363_0x7a0;
    undefined field1364_0x7a1;
    undefined field1365_0x7a2;
    undefined field1366_0x7a3;
    undefined field1367_0x7a4;
    undefined field1368_0x7a5;
    undefined field1369_0x7a6;
    undefined field1370_0x7a7;
    undefined field1371_0x7a8;
    undefined field1372_0x7a9;
    undefined field1373_0x7aa;
    undefined field1374_0x7ab;
    undefined field1375_0x7ac;
    undefined field1376_0x7ad;
    undefined field1377_0x7ae;
    undefined field1378_0x7af;
    undefined field1379_0x7b0;
    undefined field1380_0x7b1;
    undefined field1381_0x7b2;
    undefined field1382_0x7b3;
    undefined field1383_0x7b4;
    undefined field1384_0x7b5;
    undefined field1385_0x7b6;
    undefined field1386_0x7b7;
    undefined field1387_0x7b8;
    undefined field1388_0x7b9;
    undefined field1389_0x7ba;
    undefined field1390_0x7bb;
    undefined field1391_0x7bc;
    undefined field1392_0x7bd;
    undefined field1393_0x7be;
    undefined field1394_0x7bf;
    undefined field1395_0x7c0;
    undefined field1396_0x7c1;
    undefined field1397_0x7c2;
    undefined field1398_0x7c3;
    undefined field1399_0x7c4;
    undefined field1400_0x7c5;
    undefined field1401_0x7c6;
    undefined field1402_0x7c7;
    undefined field1403_0x7c8;
    undefined field1404_0x7c9;
    undefined field1405_0x7ca;
    undefined field1406_0x7cb;
    undefined field1407_0x7cc;
    undefined field1408_0x7cd;
    undefined field1409_0x7ce;
    undefined field1410_0x7cf;
    undefined field1411_0x7d0;
    undefined field1412_0x7d1;
    undefined field1413_0x7d2;
    undefined field1414_0x7d3;
    undefined field1415_0x7d4;
    undefined field1416_0x7d5;
    undefined field1417_0x7d6;
    undefined field1418_0x7d7;
    undefined field1419_0x7d8;
    undefined field1420_0x7d9;
    undefined field1421_0x7da;
    undefined field1422_0x7db;
    undefined field1423_0x7dc;
    undefined field1424_0x7dd;
    undefined field1425_0x7de;
    undefined field1426_0x7df;
    undefined field1427_0x7e0;
    undefined field1428_0x7e1;
    undefined field1429_0x7e2;
    undefined field1430_0x7e3;
    undefined field1431_0x7e4;
    undefined field1432_0x7e5;
    undefined field1433_0x7e6;
    undefined field1434_0x7e7;
    undefined field1435_0x7e8;
    undefined field1436_0x7e9;
    undefined field1437_0x7ea;
    undefined field1438_0x7eb;
    undefined field1439_0x7ec;
    undefined field1440_0x7ed;
    undefined field1441_0x7ee;
    undefined field1442_0x7ef;
    undefined field1443_0x7f0;
    undefined field1444_0x7f1;
    undefined field1445_0x7f2;
    undefined field1446_0x7f3;
    undefined field1447_0x7f4;
    undefined field1448_0x7f5;
    undefined field1449_0x7f6;
    undefined field1450_0x7f7;
    undefined field1451_0x7f8;
    undefined field1452_0x7f9;
    undefined field1453_0x7fa;
    undefined field1454_0x7fb;
    undefined field1455_0x7fc;
    undefined field1456_0x7fd;
    undefined field1457_0x7fe;
    undefined field1458_0x7ff;
    undefined field1459_0x800;
    undefined field1460_0x801;
    undefined field1461_0x802;
    undefined field1462_0x803;
    undefined field1463_0x804;
    undefined field1464_0x805;
    undefined field1465_0x806;
    undefined field1466_0x807;
    undefined field1467_0x808;
    undefined field1468_0x809;
    undefined field1469_0x80a;
    undefined field1470_0x80b;
    undefined field1471_0x80c;
    undefined field1472_0x80d;
    undefined field1473_0x80e;
    undefined field1474_0x80f;
    undefined field1475_0x810;
    undefined field1476_0x811;
    undefined field1477_0x812;
    undefined field1478_0x813;
    undefined field1479_0x814;
    undefined field1480_0x815;
    undefined field1481_0x816;
    undefined field1482_0x817;
    undefined field1483_0x818;
    undefined field1484_0x819;
    undefined field1485_0x81a;
    undefined field1486_0x81b;
    undefined field1487_0x81c;
    undefined field1488_0x81d;
    undefined field1489_0x81e;
    undefined field1490_0x81f;
    undefined field1491_0x820;
    undefined field1492_0x821;
    undefined field1493_0x822;
    undefined field1494_0x823;
    undefined field1495_0x824;
    undefined field1496_0x825;
    undefined field1497_0x826;
    undefined field1498_0x827;
    undefined field1499_0x828;
    undefined field1500_0x829;
    undefined field1501_0x82a;
    undefined field1502_0x82b;
    undefined field1503_0x82c;
    undefined field1504_0x82d;
    undefined field1505_0x82e;
    undefined field1506_0x82f;
    undefined field1507_0x830;
    undefined field1508_0x831;
    undefined field1509_0x832;
    undefined field1510_0x833;
    undefined field1511_0x834;
    undefined field1512_0x835;
    undefined field1513_0x836;
    undefined field1514_0x837;
    undefined field1515_0x838;
    undefined field1516_0x839;
    undefined field1517_0x83a;
    undefined field1518_0x83b;
    undefined field1519_0x83c;
    undefined field1520_0x83d;
    undefined field1521_0x83e;
    undefined field1522_0x83f;
    undefined field1523_0x840;
    undefined field1524_0x841;
    undefined field1525_0x842;
    undefined field1526_0x843;
    undefined field1527_0x844;
    undefined field1528_0x845;
    undefined field1529_0x846;
    undefined field1530_0x847;
    undefined field1531_0x848;
    undefined field1532_0x849;
    undefined field1533_0x84a;
    undefined field1534_0x84b;
    undefined field1535_0x84c;
    undefined field1536_0x84d;
    undefined field1537_0x84e;
    undefined field1538_0x84f;
    undefined field1539_0x850;
    undefined field1540_0x851;
    undefined field1541_0x852;
    undefined field1542_0x853;
    undefined field1543_0x854;
    undefined field1544_0x855;
    undefined field1545_0x856;
    undefined field1546_0x857;
    undefined field1547_0x858;
    undefined field1548_0x859;
    undefined field1549_0x85a;
    undefined field1550_0x85b;
    undefined field1551_0x85c;
    undefined field1552_0x85d;
    undefined field1553_0x85e;
    undefined field1554_0x85f;
    undefined field1555_0x860;
    undefined field1556_0x861;
    undefined field1557_0x862;
    undefined field1558_0x863;
    undefined field1559_0x864;
    undefined field1560_0x865;
    undefined field1561_0x866;
    undefined field1562_0x867;
    undefined field1563_0x868;
    undefined field1564_0x869;
    undefined field1565_0x86a;
    undefined field1566_0x86b;
    undefined field1567_0x86c;
    undefined field1568_0x86d;
    undefined field1569_0x86e;
    undefined field1570_0x86f;
    undefined field1571_0x870;
    undefined field1572_0x871;
    undefined field1573_0x872;
    undefined field1574_0x873;
    undefined field1575_0x874;
    undefined field1576_0x875;
    undefined field1577_0x876;
    undefined field1578_0x877;
    undefined field1579_0x878;
    undefined field1580_0x879;
    undefined field1581_0x87a;
    undefined field1582_0x87b;
    undefined field1583_0x87c;
    undefined field1584_0x87d;
    undefined field1585_0x87e;
    undefined field1586_0x87f;
    undefined field1587_0x880;
    undefined field1588_0x881;
    undefined field1589_0x882;
    undefined field1590_0x883;
    undefined field1591_0x884;
    undefined field1592_0x885;
    undefined field1593_0x886;
    undefined field1594_0x887;
    undefined field1595_0x888;
    undefined field1596_0x889;
    undefined field1597_0x88a;
    undefined field1598_0x88b;
    undefined field1599_0x88c;
    undefined field1600_0x88d;
    undefined field1601_0x88e;
    undefined field1602_0x88f;
    undefined field1603_0x890;
    undefined field1604_0x891;
    undefined field1605_0x892;
    undefined field1606_0x893;
    undefined field1607_0x894;
    undefined field1608_0x895;
    undefined field1609_0x896;
    undefined field1610_0x897;
    undefined field1611_0x898;
    undefined field1612_0x899;
    undefined field1613_0x89a;
    undefined field1614_0x89b;
    undefined field1615_0x89c;
    undefined field1616_0x89d;
    undefined field1617_0x89e;
    undefined field1618_0x89f;
    undefined field1619_0x8a0;
    undefined field1620_0x8a1;
    undefined field1621_0x8a2;
    undefined field1622_0x8a3;
    undefined field1623_0x8a4;
    undefined field1624_0x8a5;
    undefined field1625_0x8a6;
    undefined field1626_0x8a7;
    undefined field1627_0x8a8;
    undefined field1628_0x8a9;
    undefined field1629_0x8aa;
    undefined field1630_0x8ab;
    undefined field1631_0x8ac;
    undefined field1632_0x8ad;
    undefined field1633_0x8ae;
    undefined field1634_0x8af;
    undefined field1635_0x8b0;
    undefined field1636_0x8b1;
    undefined field1637_0x8b2;
    undefined field1638_0x8b3;
    undefined field1639_0x8b4;
    undefined field1640_0x8b5;
    undefined field1641_0x8b6;
    undefined field1642_0x8b7;
    undefined field1643_0x8b8;
    undefined field1644_0x8b9;
    undefined field1645_0x8ba;
    undefined field1646_0x8bb;
    undefined field1647_0x8bc;
    undefined field1648_0x8bd;
    undefined field1649_0x8be;
    undefined field1650_0x8bf;
    undefined field1651_0x8c0;
    undefined field1652_0x8c1;
    undefined field1653_0x8c2;
    undefined field1654_0x8c3;
    undefined field1655_0x8c4;
    undefined field1656_0x8c5;
    undefined field1657_0x8c6;
    undefined field1658_0x8c7;
    undefined field1659_0x8c8;
    undefined field1660_0x8c9;
    undefined field1661_0x8ca;
    undefined field1662_0x8cb;
    undefined field1663_0x8cc;
    undefined field1664_0x8cd;
    undefined field1665_0x8ce;
    undefined field1666_0x8cf;
    undefined field1667_0x8d0;
    undefined field1668_0x8d1;
    undefined field1669_0x8d2;
    undefined field1670_0x8d3;
    undefined field1671_0x8d4;
    undefined field1672_0x8d5;
    undefined field1673_0x8d6;
    undefined field1674_0x8d7;
    undefined field1675_0x8d8;
    undefined field1676_0x8d9;
    undefined field1677_0x8da;
    undefined field1678_0x8db;
    undefined field1679_0x8dc;
    undefined field1680_0x8dd;
    undefined field1681_0x8de;
    undefined field1682_0x8df;
    undefined field1683_0x8e0;
    undefined field1684_0x8e1;
    undefined field1685_0x8e2;
    undefined field1686_0x8e3;
    undefined field1687_0x8e4;
    undefined field1688_0x8e5;
    undefined field1689_0x8e6;
    undefined field1690_0x8e7;
    undefined field1691_0x8e8;
    undefined field1692_0x8e9;
    undefined field1693_0x8ea;
    undefined field1694_0x8eb;
    undefined field1695_0x8ec;
    undefined field1696_0x8ed;
    undefined field1697_0x8ee;
    undefined field1698_0x8ef;
    undefined field1699_0x8f0;
    undefined field1700_0x8f1;
    undefined field1701_0x8f2;
    undefined field1702_0x8f3;
    undefined field1703_0x8f4;
    undefined field1704_0x8f5;
    undefined field1705_0x8f6;
    undefined field1706_0x8f7;
    undefined field1707_0x8f8;
    undefined field1708_0x8f9;
    undefined field1709_0x8fa;
    undefined field1710_0x8fb;
    undefined field1711_0x8fc;
    undefined field1712_0x8fd;
    undefined field1713_0x8fe;
    undefined field1714_0x8ff;
    undefined field1715_0x900;
    undefined field1716_0x901;
    undefined field1717_0x902;
    undefined field1718_0x903;
    undefined field1719_0x904;
    undefined field1720_0x905;
    undefined field1721_0x906;
    undefined field1722_0x907;
    undefined field1723_0x908;
    undefined field1724_0x909;
    undefined field1725_0x90a;
    undefined field1726_0x90b;
    undefined field1727_0x90c;
    undefined field1728_0x90d;
    undefined field1729_0x90e;
    undefined field1730_0x90f;
    undefined field1731_0x910;
    undefined field1732_0x911;
    undefined field1733_0x912;
    undefined field1734_0x913;
    undefined field1735_0x914;
    undefined field1736_0x915;
    undefined field1737_0x916;
    undefined field1738_0x917;
    undefined field1739_0x918;
    undefined field1740_0x919;
    undefined field1741_0x91a;
    undefined field1742_0x91b;
    undefined field1743_0x91c;
    undefined field1744_0x91d;
    undefined field1745_0x91e;
    undefined field1746_0x91f;
    undefined field1747_0x920;
    undefined field1748_0x921;
    undefined field1749_0x922;
    undefined field1750_0x923;
    undefined field1751_0x924;
    undefined field1752_0x925;
    undefined field1753_0x926;
    undefined field1754_0x927;
    undefined field1755_0x928;
    undefined field1756_0x929;
    undefined field1757_0x92a;
    undefined field1758_0x92b;
    undefined field1759_0x92c;
    undefined field1760_0x92d;
    undefined field1761_0x92e;
    undefined field1762_0x92f;
    undefined field1763_0x930;
    undefined field1764_0x931;
    undefined field1765_0x932;
    undefined field1766_0x933;
    undefined field1767_0x934;
    undefined field1768_0x935;
    undefined field1769_0x936;
    undefined field1770_0x937;
    undefined field1771_0x938;
    undefined field1772_0x939;
    undefined field1773_0x93a;
    undefined field1774_0x93b;
    undefined field1775_0x93c;
    undefined field1776_0x93d;
    undefined field1777_0x93e;
    undefined field1778_0x93f;
    undefined field1779_0x940;
    undefined field1780_0x941;
    undefined field1781_0x942;
    undefined field1782_0x943;
    undefined field1783_0x944;
    undefined field1784_0x945;
    undefined field1785_0x946;
    undefined field1786_0x947;
    undefined field1787_0x948;
    undefined field1788_0x949;
    undefined field1789_0x94a;
    undefined field1790_0x94b;
    undefined field1791_0x94c;
    undefined field1792_0x94d;
    undefined field1793_0x94e;
    undefined field1794_0x94f;
    undefined field1795_0x950;
    undefined field1796_0x951;
    undefined field1797_0x952;
    undefined field1798_0x953;
    undefined field1799_0x954;
    undefined field1800_0x955;
    undefined field1801_0x956;
    undefined field1802_0x957;
    undefined field1803_0x958;
    undefined field1804_0x959;
    undefined field1805_0x95a;
    undefined field1806_0x95b;
    undefined field1807_0x95c;
    undefined field1808_0x95d;
    undefined field1809_0x95e;
    undefined field1810_0x95f;
    undefined field1811_0x960;
    undefined field1812_0x961;
    undefined field1813_0x962;
    undefined field1814_0x963;
    undefined field1815_0x964;
    undefined field1816_0x965;
    undefined field1817_0x966;
    undefined field1818_0x967;
    undefined field1819_0x968;
    undefined field1820_0x969;
    undefined field1821_0x96a;
    undefined field1822_0x96b;
    undefined field1823_0x96c;
    undefined field1824_0x96d;
    undefined field1825_0x96e;
    undefined field1826_0x96f;
    undefined field1827_0x970;
    undefined field1828_0x971;
    undefined field1829_0x972;
    undefined field1830_0x973;
    undefined field1831_0x974;
    undefined field1832_0x975;
    undefined field1833_0x976;
    undefined field1834_0x977;
    undefined field1835_0x978;
    undefined field1836_0x979;
    undefined field1837_0x97a;
    undefined field1838_0x97b;
    undefined field1839_0x97c;
    undefined field1840_0x97d;
    undefined field1841_0x97e;
    undefined field1842_0x97f;
    undefined field1843_0x980;
    undefined field1844_0x981;
    undefined field1845_0x982;
    undefined field1846_0x983;
    undefined field1847_0x984;
    undefined field1848_0x985;
    undefined field1849_0x986;
    undefined field1850_0x987;
    undefined field1851_0x988;
    undefined field1852_0x989;
    undefined field1853_0x98a;
    undefined field1854_0x98b;
    undefined field1855_0x98c;
    undefined field1856_0x98d;
    undefined field1857_0x98e;
    undefined field1858_0x98f;
    undefined field1859_0x990;
    undefined field1860_0x991;
    undefined field1861_0x992;
    undefined field1862_0x993;
    undefined field1863_0x994;
    undefined field1864_0x995;
    undefined field1865_0x996;
    undefined field1866_0x997;
    undefined field1867_0x998;
    undefined field1868_0x999;
    undefined field1869_0x99a;
    undefined field1870_0x99b;
    undefined field1871_0x99c;
    undefined field1872_0x99d;
    undefined field1873_0x99e;
    undefined field1874_0x99f;
    undefined field1875_0x9a0;
    undefined field1876_0x9a1;
    undefined field1877_0x9a2;
    undefined field1878_0x9a3;
    undefined field1879_0x9a4;
    undefined field1880_0x9a5;
    undefined field1881_0x9a6;
    undefined field1882_0x9a7;
    undefined field1883_0x9a8;
    undefined field1884_0x9a9;
    undefined field1885_0x9aa;
    undefined field1886_0x9ab;
    undefined field1887_0x9ac;
    undefined field1888_0x9ad;
    undefined field1889_0x9ae;
    undefined field1890_0x9af;
    undefined field1891_0x9b0;
    undefined field1892_0x9b1;
    undefined field1893_0x9b2;
    undefined field1894_0x9b3;
    undefined field1895_0x9b4;
    undefined field1896_0x9b5;
    undefined field1897_0x9b6;
    undefined field1898_0x9b7;
    undefined field1899_0x9b8;
    undefined field1900_0x9b9;
    undefined field1901_0x9ba;
    undefined field1902_0x9bb;
    undefined field1903_0x9bc;
    undefined field1904_0x9bd;
    undefined field1905_0x9be;
    undefined field1906_0x9bf;
    undefined field1907_0x9c0;
    undefined field1908_0x9c1;
    undefined field1909_0x9c2;
    undefined field1910_0x9c3;
    undefined field1911_0x9c4;
    undefined field1912_0x9c5;
    undefined field1913_0x9c6;
    undefined field1914_0x9c7;
    undefined field1915_0x9c8;
    undefined field1916_0x9c9;
    undefined field1917_0x9ca;
    undefined field1918_0x9cb;
    undefined field1919_0x9cc;
    undefined field1920_0x9cd;
    undefined field1921_0x9ce;
    undefined field1922_0x9cf;
    undefined field1923_0x9d0;
    undefined field1924_0x9d1;
    undefined field1925_0x9d2;
    undefined field1926_0x9d3;
    undefined field1927_0x9d4;
    undefined field1928_0x9d5;
    undefined field1929_0x9d6;
    undefined field1930_0x9d7;
    undefined field1931_0x9d8;
    undefined field1932_0x9d9;
    undefined field1933_0x9da;
    undefined field1934_0x9db;
    undefined field1935_0x9dc;
    undefined field1936_0x9dd;
    undefined field1937_0x9de;
    undefined field1938_0x9df;
    undefined field1939_0x9e0;
    undefined field1940_0x9e1;
    undefined field1941_0x9e2;
    undefined field1942_0x9e3;
    undefined field1943_0x9e4;
    undefined field1944_0x9e5;
    undefined field1945_0x9e6;
    undefined field1946_0x9e7;
    undefined field1947_0x9e8;
    undefined field1948_0x9e9;
    undefined field1949_0x9ea;
    undefined field1950_0x9eb;
    undefined field1951_0x9ec;
    undefined field1952_0x9ed;
    undefined field1953_0x9ee;
    undefined field1954_0x9ef;
    undefined field1955_0x9f0;
    undefined field1956_0x9f1;
    undefined field1957_0x9f2;
    undefined field1958_0x9f3;
    undefined field1959_0x9f4;
    undefined field1960_0x9f5;
    undefined field1961_0x9f6;
    undefined field1962_0x9f7;
    undefined field1963_0x9f8;
    undefined field1964_0x9f9;
    undefined field1965_0x9fa;
    undefined field1966_0x9fb;
    undefined field1967_0x9fc;
    undefined field1968_0x9fd;
    undefined field1969_0x9fe;
    undefined field1970_0x9ff;
    undefined field1971_0xa00;
    undefined field1972_0xa01;
    undefined field1973_0xa02;
    undefined field1974_0xa03;
    undefined field1975_0xa04;
    undefined field1976_0xa05;
    undefined field1977_0xa06;
    undefined field1978_0xa07;
    undefined field1979_0xa08;
    undefined field1980_0xa09;
    undefined field1981_0xa0a;
    undefined field1982_0xa0b;
    undefined field1983_0xa0c;
    undefined field1984_0xa0d;
    undefined field1985_0xa0e;
    undefined field1986_0xa0f;
    undefined field1987_0xa10;
    undefined field1988_0xa11;
    undefined field1989_0xa12;
    undefined field1990_0xa13;
    undefined field1991_0xa14;
    undefined field1992_0xa15;
    undefined field1993_0xa16;
    undefined field1994_0xa17;
    undefined field1995_0xa18;
    undefined field1996_0xa19;
    undefined field1997_0xa1a;
    undefined field1998_0xa1b;
    undefined field1999_0xa1c;
    undefined field2000_0xa1d;
    undefined field2001_0xa1e;
    undefined field2002_0xa1f;
    undefined field2003_0xa20;
    undefined field2004_0xa21;
    undefined field2005_0xa22;
    undefined field2006_0xa23;
    undefined field2007_0xa24;
    undefined field2008_0xa25;
    undefined field2009_0xa26;
    undefined field2010_0xa27;
    undefined field2011_0xa28;
    undefined field2012_0xa29;
    undefined field2013_0xa2a;
    undefined field2014_0xa2b;
    undefined field2015_0xa2c;
    undefined field2016_0xa2d;
    undefined field2017_0xa2e;
    undefined field2018_0xa2f;
    undefined field2019_0xa30;
    undefined field2020_0xa31;
    undefined field2021_0xa32;
    undefined field2022_0xa33;
};

typedef struct stAxisCaps stAxisCaps, *PstAxisCaps;

typedef struct stAxisCaps INO_tdstAxisCaps;

struct stAxisCaps {
    long m_lCenter;
    long m_lRange;
    long m_lThreshold;
};

typedef struct INO_stDIDevice INO_tdstDIDevice;

typedef struct IPT_tdstKeyWordElement_ IPT_tdstKeyWordElement_, *PIPT_tdstKeyWordElement_;

typedef struct IPT_tdstKeyWordElement_ *IPT_tdxHandleToKeyWordElement;

typedef uchar (IPT_tdfn_bIsKeyWordValid)(IPT_tdxHandleToKeyWordElement);

typedef struct LST2_tdstAnchorToIPT_tdxHandleToKeyWordElementDyn LST2_tdstAnchorToIPT_tdxHandleToKeyWordElementDyn, *PLST2_tdstAnchorToIPT_tdxHandleToKeyWordElementDyn;

typedef union tdu_KeyWordElementUnion_ tdu_KeyWordElementUnion_, *Ptdu_KeyWordElementUnion_;

typedef struct IPT_tdstEntryElement_ IPT_tdstEntryElement_, *PIPT_tdstEntryElement_;

typedef struct IPT_tdstEntryElement_ *IPT_tdxHandleToEntryElement;

typedef struct LST2_tdstAnchorToIPT_tdxHandleToEntryElementDyn LST2_tdstAnchorToIPT_tdxHandleToEntryElementDyn, *PLST2_tdstAnchorToIPT_tdxHandleToEntryElementDyn;

union tdu_KeyWordElementUnion_ {
    short swJoyNumber;
    short swJoyAction;
    short swJoyValueMin;
    short swJoyValueMax;
    short swPadNumber;
    short swPadAction;
    short swKey;
    short swKeyWord;
    IPT_tdxHandleToEntryElement hEntryElement;
    ulong ulNumberOfSequence;
};

struct LST2_tdstAnchorToIPT_tdxHandleToEntryElementDyn {
    IPT_tdxHandleToEntryElement hFirstElementDyn;
    IPT_tdxHandleToEntryElement hLastElementDyn;
    long lNumberOfElementsDyn;
};

struct LST2_tdstAnchorToIPT_tdxHandleToKeyWordElementDyn {
    IPT_tdxHandleToKeyWordElement hFirstElementDyn;
    IPT_tdxHandleToKeyWordElement hLastElementDyn;
    long lNumberOfElementsDyn;
};

struct IPT_tdstKeyWordElement_ {
    IPT_tdxHandleToKeyWordElement hNextBrotherDyn;
    IPT_tdxHandleToKeyWordElement hPrevBrotherDyn;
    struct LST2_tdstAnchorToIPT_tdxHandleToKeyWordElementDyn *hFatherDyn;
    union tdu_KeyWordElementUnion_ u_ElementUnion;
    uchar ucResult;
    uchar ucMinCounterInput;
    uchar ucMaxCounterInput;
};

struct IPT_tdstEntryElement_ {
    IPT_tdxHandleToEntryElement hNextBrotherDyn;
    IPT_tdxHandleToEntryElement hPrevBrotherDyn;
    struct LST2_tdstAnchorToIPT_tdxHandleToEntryElementDyn *hFatherDyn;
    struct LST2_tdstAnchorToIPT_tdxHandleToKeyWordElementDyn hKeyWordList;
    ulong ulNumberOfKeyWordElement;
    struct IPT_tdstKeyWordElement_ *d_stKeyWordElementArray;
    char *p_szActionName;
    char *p_szEntryName;
    long lState;
    float xAnalogicValue;
    uchar bIsActivate;
};

typedef struct IPT_tdstConvertValue_ IPT_tdstConvertValue_, *PIPT_tdstConvertValue_;

struct IPT_tdstConvertValue_ {
};

typedef struct IPT_tdstEntryElement_ IPT_tdstEntryElement;

typedef struct IPT_tdstHistoricElement_ IPT_tdstHistoricElement_, *PIPT_tdstHistoricElement_;

typedef struct IPT_tdstHistoricElement_ IPT_tdstHistoricElement;

struct IPT_tdstHistoricElement_ {
    uchar bf2State;
    uchar bf6DeviceType;
    uchar ucCounter;
    short swDeviceValue;
};

typedef struct IPT_tdstInput_ IPT_tdstInput_, *PIPT_tdstInput_;

typedef struct IPT_tdstInput_ IPT_tdstInput;

typedef struct SCR_tdst_Link_Table_ SCR_tdst_Link_Table_, *PSCR_tdst_Link_Table_;

typedef struct SCR_tdst_Link_Table_ SCR_tdst_Link_Table;

typedef struct IPT_tdstHistoricElement_ *IPT_tdxHandleToHistoricElement;

typedef struct SCR_tdst_DyAr_Header_ SCR_tdst_DyAr_Header_, *PSCR_tdst_DyAr_Header_;

typedef struct SCR_tdst_DyAr_Header_ SCR_tdst_DyAr_Header;

typedef struct SCR_tdst_DyAr_Description_ SCR_tdst_DyAr_Description_, *PSCR_tdst_DyAr_Description_;

typedef struct SCR_tdst_DyAr_Description_ SCR_tdst_DyAr_Description;

typedef struct SCR_tdst_DyAr_Element_ SCR_tdst_DyAr_Element_, *PSCR_tdst_DyAr_Element_;

typedef struct SCR_tdst_DyAr_Element_ SCR_tdst_DyAr_Element;

enum SCR_tde_DyAr_State {
    SCR_EDAS_DyAr_Invalid=0,
    SCR_EDAS_DyAr_Free=1,
    SCR_EDAS_DyAr_Occupy=2
};

struct SCR_tdst_DyAr_Description_ {
    SCR_tdst_DyAr_Element *d_stDynArray;
    uint uiNumValues;
    uint uiMaxValues;
};

struct SCR_tdst_DyAr_Header_ {
    uint uiIndexInArray;
    uchar ucMemLevel;
};

struct SCR_tdst_Link_Table_ {
    SCR_tdst_DyAr_Header stHeader;
    SCR_tdst_DyAr_Description stLinkArray;
    SCR_tda_st_Hash_Table a_stHashTableForValues;
    SCR_tda_st_Hash_Table a_stHashTableForKeys;
};

struct IPT_tdstInput_ {
    uchar ucOnePadActivate;
    uchar p_ucValideAndActiveDevice[0];
    uchar p_ucKeyboardCounter[256];
    uchar p_ucPadAndJoyCounter[0][0];
    SCR_tdst_Link_Table stEntryLink;
    SCR_tdst_Link_Table stCommandLink;
    uchar ucKeyboardType;
    ulong ulNumberOfEntryElement;
    struct IPT_tdstEntryElement_ *d_stEntryElementArray;
    struct LST2_tdstAnchorToIPT_tdxHandleToEntryElementDyn hEntryElement;
    short sEventHistoricSize;
    IPT_tdxHandleToHistoricElement hEventHistoric;
};

struct SCR_tdst_DyAr_Element_ {
    void *d_vElement;
    enum SCR_tde_DyAr_State eState;
};

typedef SCR_tdst_DyAr_Description SCR_tda_st_Hash_Table[256];

typedef struct IPT_tdstKeyAndPadDefine_ IPT_tdstKeyAndPadDefine_, *PIPT_tdstKeyAndPadDefine_;

typedef struct IPT_tdstKeyAndPadDefine_ IPT_tdstKeyAndPadDefine;

struct IPT_tdstKeyAndPadDefine_ {
    ushort uwBasedKey;
    char *p_szFrenchKey;
    char *p_szAmericanKey;
};

typedef struct IPT_tdstKeyWordElement_ IPT_tdstKeyWordElement;

typedef struct IPT_tdstScriptValue_ IPT_tdstScriptValue_, *PIPT_tdstScriptValue_;

struct IPT_tdstScriptValue_ {
};

typedef struct IPT_tdstInput_ *IPT_tdxHandleToInput;

typedef struct IPT_tdstScriptValue_ *IPT_tdxHandleToScriptValue;

typedef struct levelFixStruct levelFixStruct, *PlevelFixStruct;

typedef unsigned int    undefined4;
struct levelFixStruct {
    byte field0_0x0; /* stripped of usually */
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined field4_0x4;
    undefined field5_0x5;
    undefined field6_0x6;
    undefined field7_0x7;
    undefined field8_0x8;
    undefined field9_0x9;
    undefined field10_0xa;
    undefined field11_0xb;
    int fixClass;
    undefined field13_0x10;
    undefined field14_0x11;
    undefined field15_0x12;
    undefined field16_0x13;
    undefined field17_0x14;
    undefined field18_0x15;
    undefined field19_0x16;
    undefined field20_0x17;
    undefined field21_0x18;
    undefined field22_0x19;
    undefined field23_0x1a;
    undefined field24_0x1b;
    undefined field25_0x1c;
    undefined field26_0x1d;
    undefined field27_0x1e;
    undefined field28_0x1f;
    undefined field29_0x20;
    undefined field30_0x21;
    undefined field31_0x22;
    undefined field32_0x23;
    undefined field33_0x24;
    undefined field34_0x25;
    undefined field35_0x26;
    undefined field36_0x27;
    undefined field37_0x28;
    undefined field38_0x29;
    undefined field39_0x2a;
    undefined field40_0x2b;
    undefined field41_0x2c;
    undefined field42_0x2d;
    undefined field43_0x2e;
    undefined field44_0x2f;
    undefined field45_0x30;
    undefined field46_0x31;
    undefined field47_0x32;
    undefined field48_0x33;
    undefined field49_0x34;
    undefined field50_0x35;
    undefined field51_0x36;
    undefined field52_0x37;
    undefined field53_0x38;
    undefined field54_0x39;
    undefined field55_0x3a;
    undefined field56_0x3b;
    undefined field57_0x3c;
    undefined field58_0x3d;
    undefined field59_0x3e;
    undefined field60_0x3f;
    undefined field61_0x40;
    undefined field62_0x41;
    undefined field63_0x42;
    undefined field64_0x43;
    undefined4 field65_0x44;
};

typedef struct levelFixStructInner levelFixStructInner, *PlevelFixStructInner;

struct levelFixStructInner {
    undefined field0_0x0;
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined field4_0x4;
    undefined field5_0x5;
    undefined field6_0x6;
    undefined field7_0x7;
    undefined field8_0x8;
    undefined field9_0x9;
    undefined field10_0xa;
    int fixClass;
    undefined field12_0xf;
    undefined field13_0x10;
    undefined field14_0x11;
    undefined field15_0x12;
    undefined field16_0x13;
    undefined field17_0x14;
    undefined field18_0x15;
    undefined field19_0x16;
    undefined field20_0x17;
    undefined field21_0x18;
    undefined field22_0x19;
    undefined field23_0x1a;
    undefined field24_0x1b;
    undefined field25_0x1c;
    undefined field26_0x1d;
    undefined field27_0x1e;
    undefined field28_0x1f;
    undefined field29_0x20;
    undefined field30_0x21;
    undefined field31_0x22;
    undefined field32_0x23;
    undefined field33_0x24;
    undefined field34_0x25;
    undefined field35_0x26;
    undefined field36_0x27;
    undefined field37_0x28;
    undefined field38_0x29;
    undefined field39_0x2a;
    undefined field40_0x2b;
    undefined field41_0x2c;
    undefined field42_0x2d;
    undefined field43_0x2e;
    undefined field44_0x2f;
    undefined field45_0x30;
    undefined field46_0x31;
    undefined field47_0x32;
    undefined field48_0x33;
    undefined field49_0x34;
    undefined field50_0x35;
    undefined field51_0x36;
    undefined field52_0x37;
    undefined field53_0x38;
    undefined field54_0x39;
    undefined field55_0x3a;
    undefined field56_0x3b;
    undefined field57_0x3c;
    undefined field58_0x3d;
    undefined field59_0x3e;
    undefined field60_0x3f;
    undefined field61_0x40;
    undefined field62_0x41;
    undefined field63_0x42;
    undefined4 field64_0x43;
};

typedef struct LevelLoadState LevelLoadState, *PLevelLoadState;

struct LevelLoadState {
    undefined *ptrSized; /* len = size * 8 */
    dword ptrSize;
};

typedef DIACTION *LPCDIACTION;

typedef DIACTIONA *LPCDIACTIONA;

typedef DIACTIONFORMAT *LPCDIACTIONFORMAT;

typedef DIACTIONFORMATA *LPCDIACTIONFORMATA;

typedef DIACTIONFORMATW *LPCDIACTIONFORMATW;

typedef DIACTIONW *LPCDIACTIONW;

typedef DICOLORSET *LPCDICOLORSET;

typedef struct DICONDITION *LPCDICONDITION;

typedef DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS;

typedef DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;

typedef DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;

typedef struct DICONSTANTFORCE *LPCDICONSTANTFORCE;

typedef struct DICUSTOMFORCE *LPCDICUSTOMFORCE;

typedef DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO;

typedef DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;

typedef DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER;

typedef DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;

typedef DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;

typedef DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;

typedef DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE;

typedef DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3;

typedef struct DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;

typedef struct DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;

typedef struct DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX;

typedef DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE;

typedef DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3;

typedef struct DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;

typedef struct DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;

typedef struct DIEFFECT_DX5 *LPCDIEFFECT_DX5;

typedef DIEFFECTINFO *LPCDIEFFECTINFO;

typedef struct DIENVELOPE *LPCDIENVELOPE;

typedef DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;

typedef struct DIPERIODIC *LPCDIPERIODIC;

typedef struct DIPROPCAL *LPCDIPROPCAL;

typedef struct DIPROPCPOINTS *LPCDIPROPCPOINTS;

typedef struct DIPROPDWORD *LPCDIPROPDWORD;

typedef struct DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;

typedef struct DIPROPPOINTER *LPCDIPROPPOINTER;

typedef struct DIPROPRANGE *LPCDIPROPRANGE;

typedef struct DIPROPSTRING *LPCDIPROPSTRING;

typedef struct DIRAMPFORCE *LPCDIRAMPFORCE;

typedef GUID *LPCGUID;

typedef CLSID *LPCLSID;

typedef LPDIACTIONA LPDIACTION;

typedef LPDIACTIONFORMATA LPDIACTIONFORMAT;

typedef struct _DICOLORSET *LPDICOLORSET;

typedef struct DICONDITION *LPDICONDITION;

typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS;

typedef struct DICONSTANTFORCE *LPDICONSTANTFORCE;

typedef struct DICUSTOMFORCE *LPDICUSTOMFORCE;

typedef struct _DIDATAFORMAT *LPDIDATAFORMAT;

typedef struct DIDEVCAPS_DX3 *LPDIDEVCAPS_DX3;

typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO;

typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER;

typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;

typedef struct DIDEVICEINSTANCE_DX3A *LPDIDEVICEINSTANCE_DX3A;

typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;

typedef struct DIDEVICEINSTANCE_DX3W *LPDIDEVICEINSTANCE_DX3W;

typedef struct DIDEVICEOBJECTDATA_DX3 *LPDIDEVICEOBJECTDATA_DX3;

typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;

typedef struct DIDEVICEOBJECTINSTANCE_DX3A *LPDIDEVICEOBJECTINSTANCE_DX3A;

typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;

typedef struct DIDEVICEOBJECTINSTANCE_DX3W *LPDIDEVICEOBJECTINSTANCE_DX3W;

typedef struct DIEFFECT_DX5 *LPDIEFFECT_DX5;

typedef LPDIEFFECT LPDIEFFECT_DX6;

typedef LPDIEFFECTINFOA LPDIEFFECTINFO;

typedef struct DIJOYSTATE *LPDIJOYSTATE;

typedef struct DIJOYSTATE2 *LPDIJOYSTATE2;

typedef struct _DIMOUSESTATE *LPDIMOUSESTATE;

typedef struct _DIMOUSESTATE2 *LPDIMOUSESTATE2;

typedef struct DIPERIODIC *LPDIPERIODIC;

typedef struct DIPROPCAL *LPDIPROPCAL;

typedef struct DIPROPCPOINTS *LPDIPROPCPOINTS;

typedef struct DIPROPDWORD *LPDIPROPDWORD;

typedef struct DIPROPGUIDANDPATH *LPDIPROPGUIDANDPATH;

typedef struct DIPROPPOINTER *LPDIPROPPOINTER;

typedef struct DIPROPRANGE *LPDIPROPRANGE;

typedef struct DIPROPSTRING *LPDIPROPSTRING;

typedef struct DIRAMPFORCE *LPDIRAMPFORCE;

typedef struct IDirectInputA *LPDIRECTINPUT;

typedef struct IDirectInput2A *LPDIRECTINPUT2;

typedef struct IDirectInput2A *LPDIRECTINPUT2A;

typedef struct IDirectInput2W *LPDIRECTINPUT2W;

typedef struct IDirectInput7A *LPDIRECTINPUT7;

typedef struct IDirectInput7A *LPDIRECTINPUT7A;

typedef struct IDirectInput7W *LPDIRECTINPUT7W;

typedef struct IDirectInput8A *LPDIRECTINPUT8;

typedef struct IDirectInput8A *LPDIRECTINPUT8A;

typedef struct IDirectInput8W *LPDIRECTINPUT8W;

typedef struct IDirectInputA *LPDIRECTINPUTA;

typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;

typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;

typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7;

typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;

typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;

typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8;

typedef struct IDirectInputW *LPDIRECTINPUTW;

typedef FMTID *LPFMTID;


/* WARNING! conflicting data type names: /Guiddef.h/LPGUID - /guiddef.h/LPGUID */

typedef IID *LPIID;

typedef struct LST2_tdstAnchorToGLI_tdstNodeCameraDyn LST2_tdstAnchorToGLI_tdstNodeCameraDyn, *PLST2_tdstAnchorToGLI_tdstNodeCameraDyn;

struct LST2_tdstAnchorToGLI_tdstNodeCameraDyn {
};

typedef struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk, *PLST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk;

typedef struct tdstNodeMainCharacter_ tdstNodeMainCharacter_, *PtdstNodeMainCharacter_;

typedef struct tdstNodeMainCharacter_ *MC_tdxHandleToMainCharacterNode;

struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeSLk {
    MC_tdxHandleToMainCharacterNode hFirstElementSLk;
    MC_tdxHandleToMainCharacterNode hLastElementSLk;
    long lNumberOfElementsSLk;
};

struct tdstNodeMainCharacter_ {
};

typedef struct LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn, *PLST2_tdstAnchorTotdhHandleToObjectTypeElementDyn;

typedef struct tdstObjectTypeElement_ tdstObjectTypeElement_, *PtdstObjectTypeElement_;

typedef struct tdstObjectTypeElement_ *ObjectTypeElementHandle;

struct tdstObjectTypeElement_ {
    ObjectTypeElementHandle hNextBrotherDyn;
    ObjectTypeElementHandle hPrevBrotherDyn;
    struct LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn *hFatherDyn;
    char *szName;
    uchar ucElementPriority;
};

struct LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn {
    ObjectTypeElementHandle hFirstElementDyn;
    ObjectTypeElementHandle hLastElementDyn;
    long lNumberOfElementsDyn;
};

typedef struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk, *PLST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk;

typedef struct tdstAlwaysActiveCharacter_ tdstAlwaysActiveCharacter_, *PtdstAlwaysActiveCharacter_;

typedef struct tdstAlwaysActiveCharacter_ *tdxHandleToAlwaysActiveCharacterNode;

struct tdstAlwaysActiveCharacter_ {
};

struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeSLk {
    tdxHandleToAlwaysActiveCharacterNode hFirstElementSLk;
    tdxHandleToAlwaysActiveCharacterNode hLastElementSLk;
    long lNumberOfElementsSLk;
};

typedef struct LST2_tdstAnchorTotdxHandleToNodeCameraSLk LST2_tdstAnchorTotdxHandleToNodeCameraSLk, *PLST2_tdstAnchorTotdxHandleToNodeCameraSLk;

typedef struct NodeCamera NodeCamera, *PNodeCamera;

struct LST2_tdstAnchorTotdxHandleToNodeCameraSLk {
    struct NodeCamera *hFirstElementSLk;
    struct NodeCamera *hLastElementSLk;
    long lNumberOfElementsSLk;
};

struct NodeCamera {
};

typedef struct LST2_tdstAnchorTotdxHandleToObjectsTablesListSLk LST2_tdstAnchorTotdxHandleToObjectsTablesListSLk, *PLST2_tdstAnchorTotdxHandleToObjectsTablesListSLk;

typedef struct tdstObjectsTablesList_ tdstObjectsTablesList_, *PtdstObjectsTablesList_;

typedef struct tdstObjectsTablesList_ *tdxHandleToObjectsTablesList;

struct LST2_tdstAnchorTotdxHandleToObjectsTablesListSLk {
    tdxHandleToObjectsTablesList hFirstElementSLk;
    tdxHandleToObjectsTablesList hLastElementSLk;
    long lNumberOfElementsSLk;
};

struct tdstObjectsTablesList_ {
};

typedef struct LST2_tdstAnchorTotdxHandleToProhibitSLk LST2_tdstAnchorTotdxHandleToProhibitSLk, *PLST2_tdstAnchorTotdxHandleToProhibitSLk;

typedef struct tdstProhibit_ tdstProhibit_, *PtdstProhibit_;

typedef struct tdstProhibit_ *tdxHandleToProhibit;

struct LST2_tdstAnchorTotdxHandleToProhibitSLk {
    tdxHandleToProhibit hFirstElementSLk;
    tdxHandleToProhibit hLastElementSLk;
    long lNumberOfElementsSLk;
};

struct tdstProhibit_ {
};

typedef struct LST2_tdstAnchorTotdxHandleToStateSLk LST2_tdstAnchorTotdxHandleToStateSLk, *PLST2_tdstAnchorTotdxHandleToStateSLk;

typedef struct tdstState_ tdstState_, *PtdstState_;

typedef struct tdstState_ *tdxHandleToState;

struct tdstState_ {
};

struct LST2_tdstAnchorTotdxHandleToStateSLk {
    tdxHandleToState hFirstElementSLk;
    tdxHandleToState hLastElementSLk;
    long lNumberOfElementsSLk;
};

typedef struct LST2_tdstAnchorTotdxHandleToTransitionSLk LST2_tdstAnchorTotdxHandleToTransitionSLk, *PLST2_tdstAnchorTotdxHandleToTransitionSLk;

typedef struct tdstTransition_ tdstTransition_, *PtdstTransition_;

typedef struct tdstTransition_ *tdxHandleToTransition;

struct LST2_tdstAnchorTotdxHandleToTransitionSLk {
    tdxHandleToTransition hFirstElementSLk;
    tdxHandleToTransition hLastElementSLk;
    long lNumberOfElementsSLk;
};

struct tdstTransition_ {
};

typedef struct m7_init_struct m7_init_struct, *Pm7_init_struct;

typedef unsigned char    undefined1;
struct m7_init_struct {
    dword field0_0x0;
    dword field1_0x4;
    byte field2_0x8;
    byte field3_0x9;
    byte field4_0xa;
    byte field5_0xb;
    byte field6_0xc;
    byte field7_0xd;
    byte field8_0xe;
    byte field9_0xf;
    byte field10_0x10;
    byte field11_0x11;
    undefined1 field12_0x12;
    byte field13_0x13;
    byte field14_0x14;
    byte field15_0x15;
    byte field16_0x16;
    byte field17_0x17;
    byte field18_0x18;
};

typedef struct _MicroParam MicroParam;

typedef struct mod1_ptrs mod1_ptrs, *Pmod1_ptrs;

struct mod1_ptrs {
    pointer field0_0x0;
    pointer field1_0x4;
    pointer field2_0x8;
};

typedef void *MS_tdxHandleTo3dData;

typedef void *MS_tdxHandleToAnimEffect;

typedef struct tdstBrain_ tdstBrain_, *PtdstBrain_;

typedef struct tdstBrain_ *MS_tdxHandleToBrain;

struct tdstBrain_ {
    struct AI_tdstMind_ *p_stMind;
    GMT_tdxHandleToGameMaterial hLastCollidedGoThroughMaterial;
    bool bWarnMechanicsFlag;
};

typedef void *MS_tdxHandleToCineinfo;

typedef void *MS_tdxHandleToCollSet;

typedef void *MS_tdxHandleToDynam;

typedef void *MS_tdxHandleToMicro;

typedef void *MS_tdxHandleToMSLight;

typedef void *MS_tdxHandleToMSMagnet;

typedef void *MS_tdxHandleToMSPrtSrc;

typedef void *MS_tdxHandleToMSSound;

typedef void *MS_tdxHandleToMSWay;

typedef void *MS_tdxHandleToSectInfo;

typedef void *MS_tdxHandleToStandardGame;

typedef struct _CPOINT *PCPOINT;

typedef struct r3_astruct_2 r3_astruct_2, *Pr3_astruct_2;

struct r3_astruct_2 {
    struct GLI_Camera *camera0;
    float f1;
    float f2;
    float f3;
    struct IDirect3DSurface8 *d3dSurface;
    float field5_0x14[32];
};

typedef struct r3_graphics_data r3_graphics_data, *Pr3_graphics_data;

struct r3_graphics_data {
    int field0_0x0;
    int field1_0x4;
    uint field2_0x8;
    uint field3_0xc;
    float field4_0x10;
    float field5_0x14;
    float field6_0x18;
    int field7_0x1c;
    float field8_0x20;
    float field9_0x24;
    float field10_0x28;
    int field11_0x2c;
    int field12_0x30;
    int field13_0x34;
    int field14_0x38;
    undefined field15_0x3c;
    undefined field16_0x3d;
    undefined field17_0x3e;
    undefined field18_0x3f;
    int field19_0x40;
    int field20_0x44;
    int field21_0x48;
    undefined field22_0x4c;
    undefined field23_0x4d;
    undefined field24_0x4e;
    undefined field25_0x4f;
    float field26_0x50;
    float field27_0x54;
    uint field28_0x58;
    uint field29_0x5c;
    uint field30_0x60;
    struct IDirect3DVertexBuffer8 **field31_0x64;
    undefined field32_0x68;
    undefined field33_0x69;
    undefined field34_0x6a;
    undefined field35_0x6b;
    int field36_0x6c;
    int *field37_0x70;
    float **field38_0x74;
    int field39_0x78;
    undefined field40_0x7c;
    undefined field41_0x7d;
    undefined field42_0x7e;
    undefined field43_0x7f;
    undefined field44_0x80;
    undefined field45_0x81;
    undefined field46_0x82;
    undefined field47_0x83;
    undefined field48_0x84;
    undefined field49_0x85;
    undefined field50_0x86;
    undefined field51_0x87;
    undefined field52_0x88;
    undefined field53_0x89;
    undefined field54_0x8a;
    undefined field55_0x8b;
    undefined field56_0x8c;
    undefined field57_0x8d;
    undefined field58_0x8e;
    undefined field59_0x8f;
    undefined field60_0x90;
    undefined field61_0x91;
    undefined field62_0x92;
    undefined field63_0x93;
    undefined field64_0x94;
    undefined field65_0x95;
    undefined field66_0x96;
    undefined field67_0x97;
    undefined field68_0x98;
    undefined field69_0x99;
    undefined field70_0x9a;
    undefined field71_0x9b;
    undefined field72_0x9c;
    undefined field73_0x9d;
    undefined field74_0x9e;
    undefined field75_0x9f;
    undefined field76_0xa0;
    undefined field77_0xa1;
    undefined field78_0xa2;
    undefined field79_0xa3;
    undefined field80_0xa4;
    undefined field81_0xa5;
    undefined field82_0xa6;
    undefined field83_0xa7;
    undefined field84_0xa8;
    undefined field85_0xa9;
    undefined field86_0xaa;
    undefined field87_0xab;
    undefined field88_0xac;
    undefined field89_0xad;
    undefined field90_0xae;
    undefined field91_0xaf;
    undefined field92_0xb0;
    undefined field93_0xb1;
    undefined field94_0xb2;
    undefined field95_0xb3;
    undefined field96_0xb4;
    undefined field97_0xb5;
    undefined field98_0xb6;
    undefined field99_0xb7;
    undefined field100_0xb8;
    undefined field101_0xb9;
    undefined field102_0xba;
    undefined field103_0xbb;
    undefined field104_0xbc;
    undefined field105_0xbd;
    undefined field106_0xbe;
    undefined field107_0xbf;
    undefined field108_0xc0;
    undefined field109_0xc1;
    undefined field110_0xc2;
    undefined field111_0xc3;
    undefined field112_0xc4;
    undefined field113_0xc5;
    undefined field114_0xc6;
    undefined field115_0xc7;
    undefined field116_0xc8;
    undefined field117_0xc9;
    undefined field118_0xca;
    undefined field119_0xcb;
    undefined field120_0xcc;
    undefined field121_0xcd;
    undefined field122_0xce;
    undefined field123_0xcf;
    undefined field124_0xd0;
    undefined field125_0xd1;
    undefined field126_0xd2;
    undefined field127_0xd3;
    undefined field128_0xd4;
    undefined field129_0xd5;
    undefined field130_0xd6;
    undefined field131_0xd7;
    undefined field132_0xd8;
    undefined field133_0xd9;
    undefined field134_0xda;
    undefined field135_0xdb;
    undefined field136_0xdc;
    undefined field137_0xdd;
    undefined field138_0xde;
    undefined field139_0xdf;
    undefined field140_0xe0;
    undefined field141_0xe1;
    undefined field142_0xe2;
    undefined field143_0xe3;
    undefined field144_0xe4;
    undefined field145_0xe5;
    undefined field146_0xe6;
    undefined field147_0xe7;
    undefined field148_0xe8;
    undefined field149_0xe9;
    undefined field150_0xea;
    undefined field151_0xeb;
    int numVertices;
    int field153_0xf0;
    int field154_0xf4;
    struct IDirect3DVertexBuffer8 *baseVertexBuffer;
    struct IDirect3DVertexBuffer8 *texVertexBufer;
    struct IDirect3DIndexBuffer8 *indexBuffer;
    float *lockedVertexBuffer;
};

typedef struct r3_main_data r3_main_data, *Pr3_main_data;

struct r3_main_data {
    bool field0_0x0;
    bool field1_0x1;
    char gameDataDir[260];
};

typedef struct r3_math_interface r3_math_interface, *Pr3_math_interface;

struct r3_math_interface {
    undefined *field0_0x0;
    undefined *field1_0x4;
    undefined *field2_0x8;
    undefined *field3_0xc;
    undefined *float4x4_mul;
    undefined *field5_0x14;
    undefined *field6_0x18;
    void (*float3_normalize)(struct Float3 *, struct Float3 *);
    undefined *float4_normalize;
    undefined *float2_transformXZ;
    undefined *field10_0x28;
    undefined *field11_0x2c;
    undefined field12_0x30;
    undefined field13_0x31;
    undefined field14_0x32;
    undefined field15_0x33;
    undefined *field16_0x34;
    undefined field17_0x38;
    undefined field18_0x39;
    undefined field19_0x3a;
    undefined field20_0x3b;
    undefined field21_0x3c;
    undefined field22_0x3d;
    undefined field23_0x3e;
    undefined field24_0x3f;
    undefined *field25_0x40;
    undefined *field26_0x44;
    undefined *field27_0x48;
    undefined *field28_0x4c;
    undefined *field29_0x50;
    undefined *field30_0x54;
    undefined *field31_0x58;
    undefined field32_0x5c;
    undefined field33_0x5d;
    undefined field34_0x5e;
    undefined field35_0x5f;
    undefined *field36_0x60;
    undefined *field37_0x64;
    undefined field38_0x68;
    undefined field39_0x69;
    undefined field40_0x6a;
    undefined field41_0x6b;
    undefined *field42_0x6c;
    undefined *field43_0x70;
    undefined field44_0x74;
    undefined field45_0x75;
    undefined field46_0x76;
    undefined field47_0x77;
    undefined *field48_0x78;
    undefined *field49_0x7c;
    undefined field50_0x80;
    undefined field51_0x81;
    undefined field52_0x82;
    undefined field53_0x83;
    undefined field54_0x84;
    undefined field55_0x85;
    undefined field56_0x86;
    undefined field57_0x87;
    undefined field58_0x88;
    undefined field59_0x89;
    undefined field60_0x8a;
    undefined field61_0x8b;
    undefined field62_0x8c;
    undefined field63_0x8d;
    undefined field64_0x8e;
    undefined field65_0x8f;
    undefined field66_0x90;
    undefined field67_0x91;
    undefined field68_0x92;
    undefined field69_0x93;
    undefined field70_0x94;
    undefined field71_0x95;
    undefined field72_0x96;
    undefined field73_0x97;
    undefined field74_0x98;
    undefined field75_0x99;
    undefined field76_0x9a;
    undefined field77_0x9b;
    undefined field78_0x9c;
    undefined field79_0x9d;
    undefined field80_0x9e;
    undefined field81_0x9f;
    undefined field82_0xa0;
    undefined field83_0xa1;
    undefined field84_0xa2;
    undefined field85_0xa3;
    undefined field86_0xa4;
    undefined field87_0xa5;
    undefined field88_0xa6;
    undefined field89_0xa7;
    undefined field90_0xa8;
    undefined field91_0xa9;
    undefined field92_0xaa;
    undefined field93_0xab;
    undefined field94_0xac;
    undefined field95_0xad;
    undefined field96_0xae;
    undefined field97_0xaf;
    undefined field98_0xb0;
    undefined field99_0xb1;
    undefined field100_0xb2;
    undefined field101_0xb3;
    undefined field102_0xb4;
    undefined field103_0xb5;
    undefined field104_0xb6;
    undefined field105_0xb7;
    undefined field106_0xb8;
    undefined field107_0xb9;
    undefined field108_0xba;
    undefined field109_0xbb;
    undefined *field110_0xbc;
    undefined *field111_0xc0;
    undefined *field112_0xc4;
    undefined *field113_0xc8;
    undefined *field114_0xcc;
    undefined *field115_0xd0;
    undefined *field116_0xd4;
    undefined *field117_0xd8;
};

typedef struct r3_TaggedFloatUnk r3_TaggedFloatUnk, *Pr3_TaggedFloatUnk;

typedef uint uint32_t;

struct r3_TaggedFloatUnk {
    uint32_t type;
    struct Float4x4 mat0;
    struct Float4 unk;
};

typedef struct levelFixStruct *relPtr;

typedef struct _SampleParam SampleParam;

enum SCR_tde_Link_State_ {
    SCR_ELS_Link_NotInitialized=0,
    SCR_ELS_Link_Initialized=1
};

typedef enum SCR_tde_Link_State_ SCR_tde_Link_State;

typedef struct SCR_tdst_Link_AdditionalInfos_ SCR_tdst_Link_AdditionalInfos_, *PSCR_tdst_Link_AdditionalInfos_;

typedef struct SCR_tdst_Link_AdditionalInfos_ SCR_tdst_Link_AdditionalInfos;

struct SCR_tdst_Link_AdditionalInfos_ {
    ulong ulLong1;
    ulong ulLong2;
    ulong ulLong3;
    ulong ulLong4;
};

typedef struct SCR_tdst_Link_Value_ SCR_tdst_Link_Value_, *PSCR_tdst_Link_Value_;

typedef struct SCR_tdst_Link_Value_ SCR_tdst_Link_Value;

typedef uint SCR_tdx_Hash_Key;

struct SCR_tdst_Link_Value_ {
    SCR_tdst_DyAr_Header stHeader;
    char *p_szKey;
    ulong ulValue;
    SCR_tdx_Hash_Key xHashKeyForKey;
    uint uiIndexHashKeyKey;
    SCR_tdx_Hash_Key xHashKeyForValue;
    uint uiIndexHashKeyValue;
    SCR_tde_Link_State eState;
    SCR_tdst_Link_AdditionalInfos stInfos;
};

typedef struct SND_astruct_4 SND_astruct_4, *PSND_astruct_4;

struct SND_astruct_4 {
    int *field0_0x0;
    int *field1_0x4;
    int *field2_0x8;
    int *field3_0xc;
    int *field4_0x10;
    int *callback; /* callback? */
    int *field6_0x18;
    int *field7_0x1c;
};

typedef long SND_FileAsyncHandle;

typedef HANDLE SND_FileHandle;

typedef struct SND_Request3 SND_Request3, *PSND_Request3;

struct SND_Request3 {
    undefined4 g_sndReq0;
    undefined4 g_sndReq1;
    undefined4 g_sndReq2;
};

typedef struct _SND_tdstCallback SND_tdstCallback;

typedef struct _SND_tdstFormat SND_tdstFormat;

typedef struct _SND_tdstStackBuffer SND_tdstStackBuffer;

typedef struct _SND_tdstBlockEvent *SND_tdxHandleToSoundEvent;

typedef struct _virtual_module *SND_VirtualModuleHandle;

typedef long SndRealTwin;

typedef struct _SoundParam SoundParam;

typedef SndBool (*td_pfn_bRetChannelAbsCoord)(long, long);

typedef SndBool (*td_pfn_bRetRollOffFactor)(long, RollOffParam *);

typedef void (*td_pfn_vCopyString)(long, char *, long);

enum tdeObjectTreeInit_ {
    OTI_WhenGameStart=0,
    OTI_MapLoaded=1,
    OTI_ReinitTheMap=2,
    OTI_LoadSavedGame=3,
    OTI_PlayerDead=4,
    OTI_WhenGoOutOfZone=5,
    OTI_Always=6,
    OTI_AlwaysCreated=7
};

typedef enum tdeObjectTreeInit_ tdeObjectTreeInit;

typedef ulong (tdfn_ulSizeofHandleFunction)(void);

typedef struct tdstEngineObject_ tdstEngineObject_, *PtdstEngineObject_;

typedef void (tdfn_vAllocHandleFunction)(struct tdstEngineObject_ *);

struct tdstEngineObject_ {
    MS_tdxHandleTo3dData h_3dData;
    MS_tdxHandleToStandardGame h_StandardGame;
    MS_tdxHandleToDynam h_Dynam;
    MS_tdxHandleToBrain h_Brain;
    MS_tdxHandleToCineinfo h_Cineinfo;
    MS_tdxHandleToCollSet h_CollSet;
    MS_tdxHandleToMSWay h_MSWay;
    MS_tdxHandleToMSLight h_MSLight;
    MS_tdxHandleToSectInfo h_SectInfo;
    MS_tdxHandleToMicro h_Micro;
    MS_tdxHandleToMSPrtSrc h_MSPrtSrc;
    MS_tdxHandleToMSSound h_MSSound;
    MS_tdxHandleToAnimEffect h_AnimEffect;
    MS_tdxHandleToMSMagnet h_MSMagnet;
};

typedef void (tdfn_vCopyCloneMSFunction)(struct tdstEngineObject_ *, struct tdstEngineObject_ *);

typedef void (tdfn_vInitHandleFunction)(struct tdstEngineObject_ *, enum tdeObjectTreeInit_);

typedef char * (*tdpfnResNameCallback)(ulong);

typedef struct tdst_inputAction tdst_inputAction, *Ptdst_inputAction;

struct tdst_inputAction {
    undefined field0_0x0;
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined field4_0x4;
    undefined field5_0x5;
    undefined field6_0x6;
    undefined field7_0x7;
    undefined field8_0x8;
    undefined field9_0x9;
    undefined field10_0xa;
    undefined field11_0xb;
    undefined field12_0xc;
    undefined field13_0xd;
    undefined field14_0xe;
    undefined field15_0xf;
    int validated;
};

typedef struct _tdstAllRetChannelSound tdstAllRetChannelSound;

typedef struct _tdstAllRetMicroSound tdstAllRetMicroSound;

typedef struct _tdstAllRetObjectSound tdstAllRetObjectSound;

typedef struct tdstAviHeader_ tdstAviHeader_, *PtdstAviHeader_;

typedef struct tdstAviHeader_ tdstAviHeader;

struct tdstAviHeader_ {
    uchar ucRIFFMark[4];
    long lLength;
    uchar ucAVIMark[4];
};

typedef struct tdstBlockInfo_ tdstBlockInfo_, *PtdstBlockInfo_;

typedef struct tdstBlockInfo_ tdstBlockInfo;

struct tdstBlockInfo_ {
    char *p_cBeginBlock;
    char *p_cEndBlock;
    char *p_cFirstFree;
    char *p_cMaxMem;
};

typedef struct tdstBlockInfoPriv tdstBlockInfoPriv, *PtdstBlockInfoPriv;

struct tdstBlockInfoPriv {
    char *p_cBeginBlock;
    char *p_cEndBlock;
    char *p_cFirstFree;
    char *p_cMaxMem;
};

typedef struct _tdstBlockResourceDisk tdstBlockResourceDisk;

typedef struct _tdstBlockResourceMem tdstBlockResourceMem;

typedef struct tdstChannelInfo_ tdstChannelInfo_, *PtdstChannelInfo_;

typedef struct tdstChannelInfo_ tdstChannelInfo;

struct tdstChannelInfo_ {
    ulong ulThreadId;
    uchar ucGroupId;
};

typedef struct tdstChunkHeader_ tdstChunkHeader_, *PtdstChunkHeader_;

typedef struct tdstChunkHeader_ tdstChunkHeader;

struct tdstChunkHeader_ {
    uchar ucChunkMark[4];
    long lChunkLength;
};

typedef struct tdstCsaList_ tdstCsaList_, *PtdstCsaList_;

struct tdstCsaList_ {
};

typedef struct tdstCurrentModeInfo tdstCurrentModeInfo, *PtdstCurrentModeInfo;

struct tdstCurrentModeInfo {
    uchar ucModuleId;
    uchar ucMode;
    void *p_vTdstBlockInfoOrTdstDynInfo;
};

typedef struct tdstEngineObject_ tdstEngineObject;

typedef struct tdstGeneralChannelsInfo_ tdstGeneralChannelsInfo_, *PtdstGeneralChannelsInfo_;

struct tdstGeneralChannelsInfo_ {
    uchar ucNbchannelUsed;
    uchar ucMAxNbChannel;
    tdstChannelInfo *d_stTabChannelInfo;
};

typedef struct tdstInformationHeaderOfBlockWithoutFree_ tdstInformationHeaderOfBlockWithoutFree_, *PtdstInformationHeaderOfBlockWithoutFree_;

typedef struct tdstInformationHeaderOfBlockWithoutFree_ tdstInformationHeaderOfBlockWithoutFree;

struct tdstInformationHeaderOfBlockWithoutFree_ {
    uchar ucBoundededHeaderSize;
    uchar ucAlignment;
    uchar ucMode;
};

typedef struct _tdstInfoTrackDisk tdstInfoTrackDisk;

typedef struct _tdstInfoTrackList tdstInfoTrackList;

typedef struct _tdstInfoTrackMem tdstInfoTrackMem;

typedef struct tdstLastErrorInfo tdstLastErrorInfo, *PtdstLastErrorInfo;

struct tdstLastErrorInfo {
    word lastErr;
    char ucLastFailedModuleId;
    dword ulChannelId;
};

typedef struct tdstLastErrorInfo *tdstLastErrorInfo_ptr_2_char;

typedef struct tdstLastErrorInfo *tdstLastErrorInfo_ptr_4_char;

typedef struct tdstLastErrorInfo *tdstLastErrorInfo_ptr_4_dword;

typedef struct tdstLipsSynchroTable_ tdstLipsSynchroTable_, *PtdstLipsSynchroTable_;

struct tdstLipsSynchroTable_ {
};

typedef struct _tdstMidiMemory tdstMidiMemory;

typedef struct _tdstMidiStreaming tdstMidiStreaming;

typedef struct stMorphData tdstMorphData;

typedef struct tdstObjectsTableElement_ tdstObjectsTableElement_, *PtdstObjectsTableElement_;

struct tdstObjectsTableElement_ {
};

typedef struct tdstObjectType_ tdstObjectType_, *PtdstObjectType_;

typedef struct tdstObjectType_ tdstObjectType;

struct tdstObjectType_ {
    struct LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn hFamilyType;
    struct LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn hModelType;
    struct LST2_tdstAnchorTotdhHandleToObjectTypeElementDyn hPersonalType;
};

typedef struct tdstObjectTypeElement_ tdstObjectTypeElement;

typedef struct tdstParticleGenerator_ tdstParticleGenerator_, *PtdstParticleGenerator_;

struct tdstParticleGenerator_ {
};

typedef struct _tdstRandomElement tdstRandomElement;

typedef struct _tdstRangeSplitDisk tdstRangeSplitDisk;

typedef struct _tdstRangeSplitListDisk tdstRangeSplitListDisk;

typedef struct _tdstRangeSplitListMem tdstRangeSplitListMem;

typedef struct _tdstRangeSplitMem tdstRangeSplitMem;

typedef struct _tdstRefRes tdstRefRes;

typedef struct _tdstRefResList tdstRefResList;

typedef struct _tdstSampleMemory tdstSampleMemory;

typedef struct _tdstSampleStreaming tdstSampleStreaming;

typedef struct _tdstSndBankDescriptor tdstSndBankDescriptor;

typedef struct tdstSndBankDescriptorList_ tdstSndBankDescriptorList_, *PtdstSndBankDescriptorList_;

typedef struct tdstSndBankDescriptorList_ tdstSndBankDescriptorList;

struct tdstSndBankDescriptorList_ {
};

typedef struct _tdstSndBankHead tdstSndBankHead;

typedef struct _tdstSndBankHeader tdstSndBankHeader;

typedef struct _tdstSndPolyEvent tdstSndPolyEvent;

typedef struct _tdstSndPolyResource tdstSndPolyResource;

typedef struct tdstStructureHandleFunction tdstStructureHandleFunction, *PtdstStructureHandleFunction;

struct tdstStructureHandleFunction {
    tdfn_vCopyCloneMSFunction *p_fn_vCopyCloneMSFunction;
    tdfn_ulSizeofHandleFunction *p_fn_ulSizeOfFunction;
    tdfn_vAllocHandleFunction *p_fn_vAllocFunction;
    tdfn_vAllocHandleFunction *p_fn_vFreeFunction;
    tdfn_vInitHandleFunction *p_fn_vInitFunction;
    tdfn_vInitHandleFunction *p_fn_vDesinitFunction;
};

typedef struct tdstSubAnim3d_ tdstSubAnim3d_, *PtdstSubAnim3d_;

typedef struct tdstSubAnim3d_ tdstSubAnim3d;

struct tdstSubAnim3d_ {
    uchar ucCurrentFrame;
    uchar ucRepeatAnimation;
    uchar ucElement;
    struct tdstState_ *p_stCurrentState;
};

typedef struct _tdstSwitchElement tdstSwitchElement;

typedef struct _tdstSwitchList tdstSwitchList;

typedef struct _tdstThemeBridge tdstThemeBridge;

typedef struct _tdstThemePart tdstThemePart;

typedef struct _tdstThemePartOutro tdstThemePartOutro;

typedef struct _tdstTimer tdstTimer;

typedef struct tdstTimerCount tdstTimerCount, *PtdstTimerCount;

struct tdstTimerCount {
    ulong ulLowPart;
    ulong ulHighPart;
};

typedef struct _tdstTypeCD tdstTypeCD;

typedef struct _tdstTypeMidiDisk tdstTypeMidiDisk;

typedef struct _tdstTypeMidiMem tdstTypeMidiMem;

typedef struct _tdstTypeRandomDisk tdstTypeRandomDisk;

typedef struct _tdstTypeRandomMem tdstTypeRandomMem;

typedef struct _tdstTypeSampleDisk tdstTypeSampleDisk;

typedef struct _tdstTypeSampleMem tdstTypeSampleMem;

typedef struct _tdstTypeSequenceDisk tdstTypeSequenceDisk;

typedef struct _tdstTypeSequenceMem tdstTypeSequenceMem;

typedef struct _tdstTypeSplitDisk tdstTypeSplitDisk;

typedef struct _tdstTypeSplitMem tdstTypeSplitMem;

typedef struct _tdstTypeSwitchDisk tdstTypeSwitchDisk;

typedef struct _tdstTypeSwitchMem tdstTypeSwitchMem;

typedef struct _tdstTypeThemeDisk tdstTypeThemeDisk;

typedef struct _tdstTypeThemeMem tdstTypeThemeMem;

typedef struct tdstViewportManagement_ tdstViewportManagement_, *PtdstViewportManagement_;

struct tdstViewportManagement_ {
};

typedef struct tdstZdxList_ tdstZdxList_, *PtdstZdxList_;

struct tdstZdxList_ {
};

typedef struct tdstZoneSetList_ tdstZoneSetList_, *PtdstZoneSetList_;

struct tdstZoneSetList_ {
};

typedef union _tduBlockResource _tduBlockResource, *P_tduBlockResource;

typedef union _tduBlockResource tduBlockResource;

union _tduBlockResource {
};

typedef union _tduDataMidi _tduDataMidi, *P_tduDataMidi;

typedef union _tduDataMidi tduDataMidi;

union _tduDataMidi {
};

typedef union _tduDataSample _tduDataSample, *P_tduDataSample;

typedef union _tduDataSample tduDataSample;

union _tduDataSample {
};

typedef union _tduRefRes _tduRefRes, *P_tduRefRes;

typedef union _tduRefRes tduRefRes;

union _tduRefRes {
    tdxId Id;
    tdstBlockResourceMem *pstPtr;
};

typedef union _tduResDisk _tduResDisk, *P_tduResDisk;

typedef union _tduResDisk tduResDisk;

union _tduResDisk {
};

typedef union _tduResMem _tduResMem, *P_tduResMem;

typedef union _tduResMem tduResMem;

union _tduResMem {
};

typedef struct tdstLipsSynchroTable_ *tdxHandleOfLipsSynchroTable;

typedef struct tdstObjectsTableElement_ *tdxHandleToObjectsTableElement;

typedef struct tdstParticleGenerator_ *tdxHandleToParticleGenerator;

typedef struct tdstViewportManagement_ *tdxHandleToViewportManagement;

typedef void *tdxHandleToVoid;

typedef struct _s_TryBlockMapEntry TryBlockMapEntry;

typedef struct _s_UnwindMapEntry UnwindMapEntry;

typedef struct windowInnerParams windowInnerParams, *PwindowInnerParams;

struct windowInnerParams {
    undefined4 field0_0x0;
    undefined field1_0x4;
    undefined field2_0x5;
    undefined field3_0x6;
    undefined field4_0x7;
    undefined field5_0x8;
    undefined field6_0x9;
    undefined field7_0xa;
    undefined field8_0xb;
    undefined field9_0xc;
    undefined field10_0xd;
    undefined field11_0xe;
    undefined field12_0xf;
    undefined field13_0x10;
    undefined field14_0x11;
    undefined field15_0x12;
    undefined field16_0x13;
    undefined field17_0x14;
    undefined field18_0x15;
    undefined field19_0x16;
    undefined field20_0x17;
    undefined field21_0x18;
    undefined field22_0x19;
    undefined field23_0x1a;
    undefined field24_0x1b;
    undefined field25_0x1c;
};

typedef struct windowInnerUnkParams windowInnerUnkParams, *PwindowInnerUnkParams;

struct windowInnerUnkParams {
    int field0_0x0; /* Init equal to field_0x8 */
    int field1_0x4; /* Init equal to field_0xc */
    int field2_0x8;
    int field3_0xc;
    undefined4 field4_0x10;
    int field5_0x14;
    undefined4 field6_0x18;
    int field7_0x1c;
    int field8_0x20;
    uint field9_0x24;
    int field10_0x28;
    uint field11_0x2c;
    int unk2_100;
    int unk3_100;
    int field14_0x38;
    int field15_0x3c;
    int field16_0x40;
    int field17_0x44;
    int unk5_0;
    int unk1_1000; /* width? */
    int unk4_0;
    int unk0_1000; /* height? */
    int unk6_0;
    int unk7_0;
    undefined4 unk1_0;
    uint unk_ffffffff;
    undefined *unk0_0; /* set from r3_wndUnk1 */
    undefined field27_0x6c;
    undefined field28_0x6d;
    undefined field29_0x6e;
    undefined field30_0x6f;
};

typedef struct tdstCsaList_ *ZDX_tdxHandleToCsaList;

typedef struct tdstZdxList_ *ZDX_tdxHandleToZdxList;

typedef struct tdstZoneSetList_ *ZDX_tdxHandleToZoneSetList;

#endif // GH_GENERATED_STRUCTS_H
