#ifndef GH_GENERATED_STRUCTS_H
#define GH_GENERATED_STRUCTS_H

// AUTO-GENERATED FILE 
#include <r3/binders/type.h>
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;

typedef unsigned char    uchar;
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 unsigned long    ulong;
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 astruct_2 astruct_2, *Pastruct_2;

typedef unsigned int    uint;
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 Bink Bink, *PBink;

typedef struct BinkInner0 BinkInner0, *PBinkInner0;

typedef struct _iobuf FILE;

struct Bink {
    struct BinkInner0 *inner;
    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;
    undefined field40_0x40;
    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;
};

struct BinkInner0 {
    undefined field0_0x0;
    undefined field1_0x1;
    undefined field2_0x2;
    undefined field3_0x3;
    undefined *field4_0x4;
    float field5_0x8;
    float field6_0xc;
    undefined field7_0x10;
    undefined field8_0x11;
    undefined field9_0x12;
    undefined field10_0x13;
    float field11_0x14;
    float field12_0x18;
    float field13_0x1c;
    undefined field14_0x20;
    undefined field15_0x21;
    undefined field16_0x22;
    undefined field17_0x23;
    undefined field18_0x24;
    undefined field19_0x25;
    undefined field20_0x26;
    undefined field21_0x27;
    undefined field22_0x28;
    undefined field23_0x29;
    undefined field24_0x2a;
    undefined field25_0x2b;
    undefined field26_0x2c;
    undefined field27_0x2d;
    undefined field28_0x2e;
    undefined field29_0x2f;
    undefined field30_0x30;
    undefined field31_0x31;
    undefined field32_0x32;
    undefined field33_0x33;
    undefined field34_0x34;
    undefined field35_0x35;
    undefined field36_0x36;
    undefined field37_0x37;
    undefined field38_0x38;
    undefined field39_0x39;
    undefined field40_0x3a;
    undefined field41_0x3b;
    undefined field42_0x3c;
    undefined field43_0x3d;
    undefined field44_0x3e;
    undefined field45_0x3f;
    undefined field46_0x40;
    undefined field47_0x41;
    undefined field48_0x42;
    undefined field49_0x43;
    undefined field50_0x44;
    undefined field51_0x45;
    undefined field52_0x46;
    undefined field53_0x47;
    undefined field54_0x48;
    undefined field55_0x49;
    undefined field56_0x4a;
    undefined field57_0x4b;
    undefined field58_0x4c;
    undefined field59_0x4d;
    undefined field60_0x4e;
    undefined field61_0x4f;
    undefined field62_0x50;
    undefined field63_0x51;
    undefined field64_0x52;
    undefined field65_0x53;
    undefined field66_0x54;
    undefined field67_0x55;
    undefined field68_0x56;
    undefined field69_0x57;
    undefined field70_0x58;
    undefined field71_0x59;
    undefined field72_0x5a;
    undefined field73_0x5b;
    undefined field74_0x5c;
    undefined field75_0x5d;
    undefined field76_0x5e;
    undefined field77_0x5f;
    undefined field78_0x60;
    undefined field79_0x61;
    undefined field80_0x62;
    undefined field81_0x63;
    undefined field82_0x64;
    undefined field83_0x65;
    undefined field84_0x66;
    undefined field85_0x67;
    undefined field86_0x68;
    undefined field87_0x69;
    undefined field88_0x6a;
    undefined field89_0x6b;
    undefined field90_0x6c;
    undefined field91_0x6d;
    undefined field92_0x6e;
    undefined field93_0x6f;
    undefined field94_0x70;
    undefined field95_0x71;
    undefined field96_0x72;
    undefined field97_0x73;
    undefined field98_0x74;
    undefined field99_0x75;
    undefined field100_0x76;
    undefined field101_0x77;
    undefined field102_0x78;
    undefined field103_0x79;
    undefined field104_0x7a;
    undefined field105_0x7b;
    undefined field106_0x7c;
    undefined field107_0x7d;
    undefined field108_0x7e;
    undefined field109_0x7f;
    undefined field110_0x80;
    undefined field111_0x81;
    undefined field112_0x82;
    undefined field113_0x83;
    undefined field114_0x84;
    undefined field115_0x85;
    undefined field116_0x86;
    undefined field117_0x87;
    undefined field118_0x88;
    undefined field119_0x89;
    undefined field120_0x8a;
    undefined field121_0x8b;
    undefined field122_0x8c;
    undefined field123_0x8d;
    undefined field124_0x8e;
    undefined field125_0x8f;
    undefined field126_0x90;
    undefined field127_0x91;
    undefined field128_0x92;
    undefined field129_0x93;
    undefined field130_0x94;
    undefined field131_0x95;
    undefined field132_0x96;
    undefined field133_0x97;
    undefined field134_0x98;
    undefined field135_0x99;
    undefined field136_0x9a;
    undefined field137_0x9b;
    undefined field138_0x9c;
    undefined field139_0x9d;
    undefined field140_0x9e;
    undefined field141_0x9f;
    undefined field142_0xa0;
    undefined field143_0xa1;
    undefined field144_0xa2;
    undefined field145_0xa3;
    undefined field146_0xa4;
    undefined field147_0xa5;
    undefined field148_0xa6;
    undefined field149_0xa7;
    undefined field150_0xa8;
    undefined field151_0xa9;
    undefined field152_0xaa;
    undefined field153_0xab;
    undefined field154_0xac;
    undefined field155_0xad;
    undefined field156_0xae;
    undefined field157_0xaf;
    undefined field158_0xb0;
    undefined field159_0xb1;
    undefined field160_0xb2;
    undefined field161_0xb3;
    undefined field162_0xb4;
    undefined field163_0xb5;
    undefined field164_0xb6;
    undefined field165_0xb7;
    undefined field166_0xb8;
    undefined field167_0xb9;
    undefined field168_0xba;
    undefined field169_0xbb;
    undefined field170_0xbc;
    undefined field171_0xbd;
    undefined field172_0xbe;
    undefined field173_0xbf;
    undefined field174_0xc0;
    undefined field175_0xc1;
    undefined field176_0xc2;
    undefined field177_0xc3;
    undefined field178_0xc4;
    undefined field179_0xc5;
    undefined field180_0xc6;
    undefined field181_0xc7;
    undefined field182_0xc8;
    undefined field183_0xc9;
    undefined field184_0xca;
    undefined field185_0xcb;
    undefined field186_0xcc;
    undefined field187_0xcd;
    undefined field188_0xce;
    undefined field189_0xcf;
    undefined field190_0xd0;
    undefined field191_0xd1;
    undefined field192_0xd2;
    undefined field193_0xd3;
    undefined field194_0xd4;
    undefined field195_0xd5;
    undefined field196_0xd6;
    undefined field197_0xd7;
    undefined field198_0xd8;
    undefined field199_0xd9;
    undefined field200_0xda;
    undefined field201_0xdb;
    undefined field202_0xdc;
    undefined field203_0xdd;
    undefined field204_0xde;
    undefined field205_0xdf;
    undefined field206_0xe0;
    undefined field207_0xe1;
    undefined field208_0xe2;
    undefined field209_0xe3;
    undefined field210_0xe4;
    undefined field211_0xe5;
    undefined field212_0xe6;
    undefined field213_0xe7;
    undefined field214_0xe8;
    undefined field215_0xe9;
    undefined field216_0xea;
    undefined field217_0xeb;
    undefined field218_0xec;
    undefined field219_0xed;
    undefined field220_0xee;
    undefined field221_0xef;
    undefined field222_0xf0;
    undefined field223_0xf1;
    undefined field224_0xf2;
    undefined field225_0xf3;
    undefined field226_0xf4;
    undefined field227_0xf5;
    undefined field228_0xf6;
    undefined field229_0xf7;
    undefined field230_0xf8;
    undefined field231_0xf9;
    undefined field232_0xfa;
    undefined field233_0xfb;
    undefined field234_0xfc;
    undefined field235_0xfd;
    undefined field236_0xfe;
    undefined field237_0xff;
    undefined field238_0x100;
    undefined field239_0x101;
    undefined field240_0x102;
    undefined field241_0x103;
    undefined field242_0x104;
    undefined field243_0x105;
    undefined field244_0x106;
    undefined field245_0x107;
    undefined field246_0x108;
    undefined field247_0x109;
    undefined field248_0x10a;
    undefined field249_0x10b;
    undefined field250_0x10c;
    undefined field251_0x10d;
    undefined field252_0x10e;
    undefined field253_0x10f;
    undefined field254_0x110;
    undefined field255_0x111;
    undefined field256_0x112;
    undefined field257_0x113;
    undefined field258_0x114;
    undefined field259_0x115;
    undefined field260_0x116;
    undefined field261_0x117;
    undefined field262_0x118;
    undefined field263_0x119;
    undefined field264_0x11a;
    undefined field265_0x11b;
    undefined field266_0x11c;
    undefined field267_0x11d;
    undefined field268_0x11e;
    undefined field269_0x11f;
    undefined field270_0x120;
    undefined field271_0x121;
    undefined field272_0x122;
    undefined field273_0x123;
    undefined field274_0x124;
    undefined field275_0x125;
    undefined field276_0x126;
    undefined field277_0x127;
    undefined field278_0x128;
    undefined field279_0x129;
    undefined field280_0x12a;
    undefined field281_0x12b;
    undefined field282_0x12c;
    undefined field283_0x12d;
    undefined field284_0x12e;
    undefined field285_0x12f;
    undefined field286_0x130;
    undefined field287_0x131;
    undefined field288_0x132;
    undefined field289_0x133;
    undefined field290_0x134;
    undefined field291_0x135;
    undefined field292_0x136;
    undefined field293_0x137;
    undefined field294_0x138;
    undefined field295_0x139;
    undefined field296_0x13a;
    undefined field297_0x13b;
    undefined field298_0x13c;
    undefined field299_0x13d;
    undefined field300_0x13e;
    undefined field301_0x13f;
    undefined field302_0x140;
    undefined field303_0x141;
    undefined field304_0x142;
    undefined field305_0x143;
    undefined field306_0x144;
    undefined field307_0x145;
    undefined field308_0x146;
    undefined field309_0x147;
    undefined field310_0x148;
    undefined field311_0x149;
    undefined field312_0x14a;
    undefined field313_0x14b;
    undefined field314_0x14c;
    undefined field315_0x14d;
    undefined field316_0x14e;
    undefined field317_0x14f;
    undefined field318_0x150;
    undefined field319_0x151;
    undefined field320_0x152;
    undefined field321_0x153;
    undefined field322_0x154;
    undefined field323_0x155;
    undefined field324_0x156;
    undefined field325_0x157;
    undefined field326_0x158;
    undefined field327_0x159;
    undefined field328_0x15a;
    undefined field329_0x15b;
    undefined field330_0x15c;
    undefined field331_0x15d;
    undefined field332_0x15e;
    undefined field333_0x15f;
    undefined field334_0x160;
    undefined field335_0x161;
    undefined field336_0x162;
    undefined field337_0x163;
    undefined field338_0x164;
    undefined field339_0x165;
    undefined field340_0x166;
    undefined field341_0x167;
    undefined field342_0x168;
    undefined field343_0x169;
    undefined field344_0x16a;
    undefined field345_0x16b;
    undefined field346_0x16c;
    undefined field347_0x16d;
    undefined field348_0x16e;
    undefined field349_0x16f;
    undefined field350_0x170;
    undefined field351_0x171;
    undefined field352_0x172;
    undefined field353_0x173;
    undefined field354_0x174;
    undefined field355_0x175;
    undefined field356_0x176;
    undefined field357_0x177;
    undefined field358_0x178;
    undefined field359_0x179;
    undefined field360_0x17a;
    undefined field361_0x17b;
    undefined field362_0x17c;
    undefined field363_0x17d;
    undefined field364_0x17e;
    undefined field365_0x17f;
    undefined field366_0x180;
    undefined field367_0x181;
    undefined field368_0x182;
    undefined field369_0x183;
    undefined field370_0x184;
    undefined field371_0x185;
    undefined field372_0x186;
    undefined field373_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 struct FIL_tdstConcatFile_ FIL_tdstConcatFile_, *PFIL_tdstConcatFile_;

typedef struct FIL_tdstConcatFile_ FIL_tdstConcatFile;

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 struct _s_FuncInfo FuncInfo;

typedef uchar GAM_tdeDisplayFixMode;

typedef uchar GAM_tdeEngineMode;

typedef uchar GAM_tdeInputMode;

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_tdstEngineStructure GAM_tdstEngineStructure, *PGAM_tdstEngineStructure;

typedef struct TMR_tdstEngineTimerStructure TMR_tdstEngineTimerStructure, *PTMR_tdstEngineTimerStructure;

typedef short GLD_tdhDevice;

typedef short GLD_tdhViewport;

typedef struct GLD_tdstViewportAttributes GLD_tdstViewportAttributes, *PGLD_tdstViewportAttributes;

typedef struct GLI_tdstCamera_ GLI_tdstCamera_, *PGLI_tdstCamera_;

typedef struct GLI_tdstCamera_ GLI_tdstCamera;

typedef struct GLI_tdstSpecificAttributesFor3D GLI_tdstSpecificAttributesFor3D, *PGLI_tdstSpecificAttributesFor3D;

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 struct GAM_tdstLanguageStructure GAM_tdstLanguageStructure, *PGAM_tdstLanguageStructure;

typedef struct POS_stCompletePosition POS_stCompletePosition, *PPOS_stCompletePosition;

typedef struct POS_stCompletePosition POS_tdstCompletePosition;

typedef float GLI_tdxValue;

typedef struct GLI_tdst2DVertex GLI_tdst2DVertex, *PGLI_tdst2DVertex;

typedef struct MTH3D_tdstVector_ MTH3D_tdstVector_, *PMTH3D_tdstVector_;

typedef struct MTH3D_tdstVector_ MTH3D_tdstVector;

typedef struct tdstFamilyList_ tdstFamilyList_, *PtdstFamilyList_;

typedef struct tdstFamilyList_ *tdxHandleToFamilyList;

typedef struct MTH3D_tdstMatrix_ MTH3D_tdstMatrix_, *PMTH3D_tdstMatrix_;

typedef struct MTH3D_tdstMatrix_ MTH3D_tdstMatrix;

struct GLI_tdstSpecificAttributesFor3D {
    struct GLI_tdstCamera_ *p_stCam;
    float xNear;
};

struct LST2_tdstAnchorToMC_tdxHandleToMainCharacterNodeDyn {
};

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

struct LST2_tdstAnchorTotdxHandleToNodeCameraDyn {
};

struct LST2_tdstAnchorTotdxHandleToAlwaysActiveCharacterNodeDyn {
};

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

struct MTH3D_tdstMatrix_ {
    MTH3D_tdstVector stCol_0;
    MTH3D_tdstVector stCol_1;
    MTH3D_tdstVector stCol_2;
};

struct POS_stCompletePosition {
    ulong ulType;
    MTH3D_tdstVector stTranslationVector;
    MTH3D_tdstMatrix stRotationMatrix;
    MTH3D_tdstMatrix stTransformMatrix;
};

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 GLD_tdstViewportAttributes {
    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_tdhDevice hDevice;
    GLD_tdhViewport hViewport;
};

struct GAM_tdstEngineStructure {
    GAM_tdeEngineMode eEngineMode;
    char szLevelName[30];
    char szNextLevelName[30];
    char szFirstLevelName[30];
    GAM_tdeInputMode eInputMode;
    GAM_tdeDisplayFixMode eDisplayFixMode;
    ulong ulDisplayMode;
    struct TMR_tdstEngineTimerStructure stEngineTimer;
    GLD_tdhDevice hGLDDevice;
    GLD_tdhViewport hGLDViewport;
    struct GLD_tdstViewportAttributes stViewportAttr;
    GLI_tdstCamera *p_stGameViewportCamera;
    void *hDrawSem;
    GLD_tdhViewport hGLDFixViewport;
    struct GLD_tdstViewportAttributes stFixViewportAttr;
    struct GLI_tdstSpecificAttributesFor3D stFixAttributes3D;
    GLI_tdstCamera *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;
    struct GAM_tdstLanguageStructure *p_stLanguageTable;
    FIL_tdxHandleToFileNameList hLevelNameList;
    POS_tdstCompletePosition stMainCharacterPosition;
    POS_tdstCompletePosition stMainCameraPosition;
    long lSubMapNumber;
    ACP_tdxBool bEngineIsInPaused;
    ACP_tdxBool bEngineHasInPaused;
    char a_szLevelName[80][30];
    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;
};

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

struct GLI_tdstCamera_ {
    long lSizeOfThis;
    long lTypeOfThis;
    long lCameraMode;
    POS_tdstCompletePosition 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;
    MTH3D_tdstVector stNormPlaneLeft;
    float xDistPlaneLeft;
    MTH3D_tdstVector stNormPlaneRight;
    float xDistPlaneRight;
    MTH3D_tdstVector stNormPlaneUp;
    float xDistPlaneUp;
    MTH3D_tdstVector stNormPlaneDown;
    float xDistPlaneDown;
    float xRatio;
};

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

struct HIE_tdstSuperObject {
};

struct tdstFamilyList_ {
};

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

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 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_stDevice GLD_stDevice, *PGLD_stDevice;

typedef struct GLD_tdstDeviceAttributes_ GLD_tdstDeviceAttributes_, *PGLD_tdstDeviceAttributes_;

typedef struct GLD_tdstDeviceAttributes_ GLD_tdstDeviceAttributes;

typedef struct GLD_stViewport GLD_stViewport, *PGLD_stViewport;

typedef struct GLD_stViewport *GLD_tdpstViewport;

typedef ulong DWORD;

typedef struct tagRECT RECT;

typedef float GLD_tdxValue;

typedef long LONG;

typedef struct tagPOINT POINT;

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

struct GLD_tdstDeviceAttributes_ {
    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_stDevice {
    GLD_tdstDeviceAttributes stDevAttrib;
    GLD_tdpstViewport pstViewports[16];
    uchar bIsLocked;
    DWORD dwStyleBeforeSwap;
    DWORD dwExStyleBeforeSwap;
    RECT rcWindowBeforeSwap;
    DWORD dwBackgroundColor;
};

typedef struct GLD_stDevice *GLD_tdpstDevice;

typedef struct GLD_tdstDeviceAttributes_ *GLD_tdpstDeviceAttributes;

typedef struct GLD_stDevice GLD_tdstDevice;

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;
    POS_tdstCompletePosition stMatrix;
    struct GLI_tdstZBufferForLight stZBuffer;
    struct GEO_tdstColor stColor;
    ACP_tdxBool bValid;
    uchar ucObjectPainted;
    ACP_tdxBool bIsPainting;
    uchar ucIsAlpha;
    MTH3D_tdstVector stInter_Min_Pos;
    MTH3D_tdstVector stExter_Min_Pos;
    MTH3D_tdstVector stInter_Max_Pos;
    MTH3D_tdstVector stExter_Max_Pos;
    MTH3D_tdstVector 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;

typedef struct POS_stCompletePosition *POS_tdxHandleToPosition;

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;
    MTH3D_tdstVector stSemiLookAtVector;
};

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 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_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 tdstNodeCamera_ tdstNodeCamera_, *PtdstNodeCamera_;

typedef struct tdstNodeCamera_ *tdxHandleToNodeCamera;

struct LST2_tdstAnchorTotdxHandleToNodeCameraSLk {
    tdxHandleToNodeCamera hFirstElementSLk;
    tdxHandleToNodeCamera hLastElementSLk;
    long lNumberOfElementsSLk;
};

struct tdstNodeCamera_ {
};

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 r3_astruct_2 r3_astruct_2, *Pr3_astruct_2;

struct r3_astruct_2 {
    GLI_tdstCamera *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;

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 struct SND_Request3 SND_Request3, *PSND_Request3;

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

typedef struct _virtual_module *SND_tdhVirtualModule;

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 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);

typedef HANDLE tdhSndFile;

typedef long tdhSndFileAsync;

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 tdstAnim3d_ tdstAnim3d_, *PtdstAnim3d_;

typedef struct tdstAnim3d_ tdstAnim3d;

typedef struct tdstFrame3d_ tdstFrame3d_, *PtdstFrame3d_;

typedef struct tdstEvent_ tdstEvent_, *PtdstEvent_;

typedef struct tdstAnimLights_ tdstAnimLights_, *PtdstAnimLights_;

typedef struct tdstAnimLights_ tdstAnimLights;

typedef struct tdstElement3d_ tdstElement3d_, *PtdstElement3d_;

typedef struct tdstPLA_Hierarchy_ tdstPLA_Hierarchy_, *PtdstPLA_Hierarchy_;

typedef struct tdstPLA_Hierarchy_ tdstPLA_Hierarchy;

typedef struct tdstEventInTable_ tdstEventInTable_, *PtdstEventInTable_;

typedef struct tdstEventInTable_ tdstEventInTable;

typedef struct tdstCouple_ tdstCouple_, *PtdstCouple_;

typedef struct tdstCouple_ tdstCouple;

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

struct tdstCouple_ {
    ushort wChild;
    ushort wFather;
};

struct tdstFrame3d_ {
    struct tdstElement3d_ *p_stArrayOfElts3d;
    struct MTH3D_tdstMatrix_ *p_stAngularSpeedMatrix;
    struct MTH3D_tdstVector_ *p_stLinearSpeedVector;
    tdstPLA_Hierarchy *p_stHierarchy;
};

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

struct tdstAnim3d_ {
    struct tdstFrame3d_ *d_stFrame3d;
    uchar ucNumberOfFrames;
    uchar ucFrameRate;
    uchar ucMaxNumberOfElements;
    struct tdstEvent_ *d_stAnimEvent;
    uchar ucNumberOfEvents;
    POS_tdstCompletePosition stOffsetMatrix;
    uchar bCompressedAnim;
    tdstAnimLights *p_stLights;
    struct stMorphData *d_stMorphDataArray;
    ushort uwNumOfA3dGENERAL;
};

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

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

struct tdstEvent_ {
    tdstEventInTable *p_stfEventInTBL;
    ushort usEventNumberInTBL;
    ushort uwFrameNumber;
    ushort uwChannelNumber;
};

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 tdstElement3d_ tdstElement3d;

typedef struct tdstEngineObject_ tdstEngineObject_, *PtdstEngineObject_;

typedef struct tdstEngineObject_ 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;
};


/* WARNING! conflicting data type names: /tdstEngineObject_ - /tdstEngineObject.h/tdstEngineObject_ */

typedef struct tdstEvent_ tdstEvent;

typedef struct tdstFrame3d_ tdstFrame3d;

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;

typedef unsigned short    word;
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 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 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
