text: #pragma once
  
  #include "Platform.h"
  #include "netadr.h"
  #include "Sequence.h"
  #include "common_types.h"
  #include "enums.h"
  
  #define MAX_ALIAS_NAME 32
  
  typedef struct cmdalias_s
  {
  	struct cmdalias_s* next;
  	char name[MAX_ALIAS_NAME];
  	char* value;
  } cmdalias_t;
  
  
  // ********************************************************
  // Functions exported by the client .dll
  // ********************************************************
  
  // Function type declarations for client exports
  typedef int (*INITIALIZE_FUNC)(struct cl_enginefuncs_s*, int);
  typedef void (*HUD_INIT_FUNC)(void);
  typedef int (*HUD_VIDINIT_FUNC)(void);
  typedef int (*HUD_REDRAW_FUNC)(float, int);
  typedef int (*HUD_UPDATECLIENTDATA_FUNC)(struct client_data_s*, float);
  typedef void (*HUD_RESET_FUNC)(void);
  typedef void (*HUD_CLIENTMOVE_FUNC)(struct playermove_s* ppmove, qboolean server);
  typedef void (*HUD_CLIENTMOVEINIT_FUNC)(struct playermove_s* ppmove);
  typedef char (*HUD_TEXTURETYPE_FUNC)(char* name);
  typedef void (*HUD_IN_ACTIVATEMOUSE_FUNC)(void);
  typedef void (*HUD_IN_DEACTIVATEMOUSE_FUNC)(void);
  typedef void (*HUD_IN_MOUSEEVENT_FUNC)(int mstate);
  typedef void (*HUD_IN_CLEARSTATES_FUNC)(void);
  typedef void (*HUD_IN_ACCUMULATE_FUNC)(void);
  typedef void (*HUD_CL_CREATEMOVE_FUNC)(float frametime, struct usercmd_s* cmd, int active);
  typedef int (*HUD_CL_ISTHIRDPERSON_FUNC)(void);
  typedef void (*HUD_CL_GETCAMERAOFFSETS_FUNC)(float* ofs);
  typedef struct kbutton_s* (*HUD_KB_FIND_FUNC)(const char* name);
  typedef void (*HUD_CAMTHINK_FUNC)(void);
  typedef void (*HUD_CALCREF_FUNC)(struct ref_params_s* pparams);
  typedef int (*HUD_ADDENTITY_FUNC)(int type, struct cl_entity_s* ent, const char* modelname);
  typedef void (*HUD_CREATEENTITIES_FUNC)(void);
  typedef void (*HUD_DRAWNORMALTRIS_FUNC)(void);
  typedef void (*HUD_DRAWTRANSTRIS_FUNC)(void);
  typedef void (*HUD_STUDIOEVENT_FUNC)(const struct mstudioevent_s* event, const struct cl_entity_s* entity);
  typedef void (*HUD_POSTRUNCMD_FUNC)(struct local_state_s* from, struct local_state_s* to, struct usercmd_s* cmd, int runfuncs, double time, unsigned int random_seed);
  typedef void (*HUD_SHUTDOWN_FUNC)(void);
  typedef void (*HUD_TXFERLOCALOVERRIDES_FUNC)(struct entity_state_s* state, const struct clientdata_s* client);
  typedef void (*HUD_PROCESSPLAYERSTATE_FUNC)(struct entity_state_s* dst, const struct entity_state_s* src);
  typedef void (*HUD_TXFERPREDICTIONDATA_FUNC)(struct entity_state_s* ps, const struct entity_state_s* pps, struct clientdata_s* pcd, const struct clientdata_s* ppcd, struct weapon_data_s* wd, const struct weapon_data_s* pwd);
  typedef void (*HUD_DEMOREAD_FUNC)(int size, unsigned char* buffer);
  typedef int (*HUD_CONNECTIONLESS_FUNC)(const struct netadr_s* net_from, const char* args, char* response_buffer, int* response_buffer_size);
  typedef int (*HUD_GETHULLBOUNDS_FUNC)(int hullnumber, float* mins, float* maxs);
  typedef void (*HUD_FRAME_FUNC)(double);
  typedef int (*HUD_KEY_EVENT_FUNC)(int eventcode, int keynum, const char* pszCurrentBinding);
  typedef void (*HUD_TEMPENTUPDATE_FUNC)(double frametime, double client_time, double cl_gravity, struct tempent_s** ppTempEntFree, struct tempent_s** ppTempEntActive, int (*Callback_AddVisibleEntity)(struct cl_entity_s* pEntity), void (*Callback_TempEntPlaySound)(struct tempent_s* pTemp, float damp));
  typedef struct cl_entity_s* (*HUD_GETUSERENTITY_FUNC)(int index);
  typedef void (*HUD_VOICESTATUS_FUNC)(int entindex, qboolean bTalking);
  typedef void (*HUD_DIRECTORMESSAGE_FUNC)(int iSize, void* pbuf);
  typedef int (*HUD_STUDIO_INTERFACE_FUNC)(int version, struct r_studio_interface_s** ppinterface, struct engine_studio_api_s* pstudio);
  typedef void (*HUD_CHATINPUTPOSITION_FUNC)(int* x, int* y);
  typedef int (*HUD_GETPLAYERTEAM)(int iplayer);
  typedef void* (*CLIENTFACTORY)(); // this should be CreateInterfaceFn but that means including interface.h
  								  // which is a C++ file and some of the client files a C only...
  								  // so we return a void * which we then do a typecast on later.
  
  
  // Pointers to the exported client functions themselves
  typedef struct
  {
  	INITIALIZE_FUNC pInitFunc;
  	HUD_INIT_FUNC pHudInitFunc;
  	HUD_VIDINIT_FUNC pHudVidInitFunc;
  	HUD_REDRAW_FUNC pHudRedrawFunc;
  	HUD_UPDATECLIENTDATA_FUNC pHudUpdateClientDataFunc;
  	HUD_RESET_FUNC pHudResetFunc;
  	HUD_CLIENTMOVE_FUNC pClientMove;
  	HUD_CLIENTMOVEINIT_FUNC pClientMoveInit;
  	HUD_TEXTURETYPE_FUNC pClientTextureType;
  	HUD_IN_ACTIVATEMOUSE_FUNC pIN_ActivateMouse;
  	HUD_IN_DEACTIVATEMOUSE_FUNC pIN_DeactivateMouse;
  	HUD_IN_MOUSEEVENT_FUNC pIN_MouseEvent;
  	HUD_IN_CLEARSTATES_FUNC pIN_ClearStates;
  	HUD_IN_ACCUMULATE_FUNC pIN_Accumulate;
  	HUD_CL_CREATEMOVE_FUNC pCL_CreateMove;
  	HUD_CL_ISTHIRDPERSON_FUNC pCL_IsThirdPerson;
  	HUD_CL_GETCAMERAOFFSETS_FUNC pCL_GetCameraOffsets;
  	HUD_KB_FIND_FUNC pFindKey;
  	HUD_CAMTHINK_FUNC pCamThink;
  	HUD_CALCREF_FUNC pCalcRefdef;
  	HUD_ADDENTITY_FUNC pAddEntity;
  	HUD_CREATEENTITIES_FUNC pCreateEntities;
  	HUD_DRAWNORMALTRIS_FUNC pDrawNormalTriangles;
  	HUD_DRAWTRANSTRIS_FUNC pDrawTransparentTriangles;
  	HUD_STUDIOEVENT_FUNC pStudioEvent;
  	HUD_POSTRUNCMD_FUNC pPostRunCmd;
  	HUD_SHUTDOWN_FUNC pShutdown;
  	HUD_TXFERLOCALOVERRIDES_FUNC pTxferLocalOverrides;
  	HUD_PROCESSPLAYERSTATE_FUNC pProcessPlayerState;
  	HUD_TXFERPREDICTIONDATA_FUNC pTxferPredictionData;
  	HUD_DEMOREAD_FUNC pReadDemoBuffer;
  	HUD_CONNECTIONLESS_FUNC pConnectionlessPacket;
  	HUD_GETHULLBOUNDS_FUNC pGetHullBounds;
  	HUD_FRAME_FUNC pHudFrame;
  	HUD_KEY_EVENT_FUNC pKeyEvent;
  	HUD_TEMPENTUPDATE_FUNC pTempEntUpdate;
  	HUD_GETUSERENTITY_FUNC pGetUserEntity;
  	HUD_VOICESTATUS_FUNC pVoiceStatus;			   // Possibly null on old client dlls.
  	HUD_DIRECTORMESSAGE_FUNC pDirectorMessage;	   // Possibly null on old client dlls.
  	HUD_STUDIO_INTERFACE_FUNC pStudioInterface;	   // Not used by all clients
  	HUD_CHATINPUTPOSITION_FUNC pChatInputPosition; // Not used by all clients
  	HUD_GETPLAYERTEAM pGetPlayerTeam;			   // Not used by all clients
  	CLIENTFACTORY pClientFactory;
  } cldll_func_t;
  
  // ********************************************************
  // Functions exported by the engine
  // ********************************************************
  
  // Function type declarations for engine exports
  typedef HSPRITE (*pfnEngSrc_pfnSPR_Load_t)(const char* szPicName);
  typedef int (*pfnEngSrc_pfnSPR_Frames_t)(HSPRITE hPic);
  typedef int (*pfnEngSrc_pfnSPR_Height_t)(HSPRITE hPic, int frame);
  typedef int (*pfnEngSrc_pfnSPR_Width_t)(HSPRITE hPic, int frame);
  typedef void (*pfnEngSrc_pfnSPR_Set_t)(HSPRITE hPic, int r, int g, int b);
  typedef void (*pfnEngSrc_pfnSPR_Draw_t)(int frame, int x, int y, const Rect* prc);
  typedef void (*pfnEngSrc_pfnSPR_DrawHoles_t)(int frame, int x, int y, const Rect* prc);
  typedef void (*pfnEngSrc_pfnSPR_DrawAdditive_t)(int frame, int x, int y, const Rect* prc);
  typedef void (*pfnEngSrc_pfnSPR_EnableScissor_t)(int x, int y, int width, int height);
  typedef void (*pfnEngSrc_pfnSPR_DisableScissor_t)(void);
  typedef struct client_sprite_s* (*pfnEngSrc_pfnSPR_GetList_t)(const char* psz, int* piCount);
  typedef void (*pfnEngSrc_pfnFillRGBA_t)(int x, int y, int width, int height, int r, int g, int b, int a);
  typedef int (*pfnEngSrc_pfnGetScreenInfo_t)(struct SCREENINFO_s* pscrinfo);
  typedef void (*pfnEngSrc_pfnSetCrosshair_t)(HSPRITE hspr, Rect rc, int r, int g, int b);
  typedef struct cvar_s* (*pfnEngSrc_pfnRegisterVariable_t)(const char* szName, const char* szValue, int flags);
  typedef float (*pfnEngSrc_pfnGetCvarFloat_t)(const char* szName);
  typedef const char* (*pfnEngSrc_pfnGetCvarString_t)(const char* szName);
  typedef int (*pfnEngSrc_pfnAddCommand_t)(const char* cmd_name, void (*pfnEngSrc_function)(void));
  typedef int (*pfnEngSrc_pfnHookUserMsg_t)(const char* szMsgName, pfnUserMsgHook pfn);
  typedef int (*pfnEngSrc_pfnServerCmd_t)(const char* szCmdString);
  typedef int (*pfnEngSrc_pfnClientCmd_t)(const char* szCmdString);
  typedef void (*pfnEngSrc_pfnPrimeMusicStream_t)(const char* szFilename, int looping);
  typedef void (*pfnEngSrc_pfnGetPlayerInfo_t)(int ent_num, struct hud_player_info_s* pinfo);
  typedef void (*pfnEngSrc_pfnPlaySoundByName_t)(const char* szSound, float volume);
  typedef void (*pfnEngSrc_pfnPlaySoundByNameAtPitch_t)(const char* szSound, float volume, int pitch);
  typedef void (*pfnEngSrc_pfnPlaySoundVoiceByName_t)(const char* szSound, float volume, int pitch);
  typedef void (*pfnEngSrc_pfnPlaySoundByIndex_t)(int iSound, float volume);
  typedef void (*pfnEngSrc_pfnAngleVectors_t)(const float* vecAngles, float* forward, float* right, float* up);
  typedef struct client_textmessage_s* (*pfnEngSrc_pfnTextMessageGet_t)(const char* pName);
  typedef int (*pfnEngSrc_pfnDrawCharacter_t)(int x, int y, int number, int r, int g, int b);
  typedef int (*pfnEngSrc_pfnDrawConsoleString_t)(int x, int y, char* string);
  typedef void (*pfnEngSrc_pfnDrawSetTextColor_t)(float r, float g, float b);
  typedef void (*pfnEngSrc_pfnDrawConsoleStringLen_t)(const char* string, int* length, int* height);
  typedef void (*pfnEngSrc_pfnConsolePrint_t)(const char* string);
  typedef void (*pfnEngSrc_pfnCenterPrint_t)(const char* string);
  typedef int (*pfnEngSrc_GetWindowCenterX_t)(void);
  typedef int (*pfnEngSrc_GetWindowCenterY_t)(void);
  typedef void (*pfnEngSrc_GetViewAngles_t)(float*);
  typedef void (*pfnEngSrc_SetViewAngles_t)(float*);
  typedef int (*pfnEngSrc_GetMaxClients_t)(void);
  typedef void (*pfnEngSrc_Cvar_SetValue_t)(const char* cvar, float value);
  typedef int (*pfnEngSrc_Cmd_Argc_t)(void);
  typedef const char* (*pfnEngSrc_Cmd_Argv_t)(int arg);
  typedef void (*pfnEngSrc_Con_Printf_t)(const char* fmt, ...);
  typedef void (*pfnEngSrc_Con_DPrintf_t)(const char* fmt, ...);
  typedef void (*pfnEngSrc_Con_NPrintf_t)(int pos, const char* fmt, ...);
  typedef void (*pfnEngSrc_Con_NXPrintf_t)(struct con_nprint_s* info, const char* fmt, ...);
  typedef const char* (*pfnEngSrc_PhysInfo_ValueForKey_t)(const char* key);
  typedef const char* (*pfnEngSrc_ServerInfo_ValueForKey_t)(const char* key);
  typedef float (*pfnEngSrc_GetClientMaxspeed_t)(void);
  typedef int (*pfnEngSrc_CheckParm_t)(const char* parm, const char** ppnext);
  typedef void (*pfnEngSrc_Key_Event_t)(int key, int down);
  typedef void (*pfnEngSrc_GetMousePosition_t)(int* mx, int* my);
  typedef int (*pfnEngSrc_IsNoClipping_t)(void);
  typedef struct cl_entity_s* (*pfnEngSrc_GetLocalPlayer_t)(void);
  typedef struct cl_entity_s* (*pfnEngSrc_GetViewModel_t)(void);
  typedef struct cl_entity_s* (*pfnEngSrc_GetEntityByIndex_t)(int idx);
  typedef float (*pfnEngSrc_GetClientTime_t)(void);
  typedef void (*pfnEngSrc_V_CalcShake_t)(void);
  typedef void (*pfnEngSrc_V_ApplyShake_t)(float* origin, float* angles, float factor);
  typedef int (*pfnEngSrc_PM_PointContents_t)(float* point, int* truecontents);
  typedef int (*pfnEngSrc_PM_WaterEntity_t)(float* p);
  typedef struct pmtrace_s* (*pfnEngSrc_PM_TraceLine_t)(float* start, float* end, int flags, int usehull, int ignore_pe);
  typedef struct model_s* (*pfnEngSrc_CL_LoadModel_t)(const char* modelname, int* index);
  typedef int (*pfnEngSrc_CL_CreateVisibleEntity_t)(int type, struct cl_entity_s* ent);
  typedef const struct model_s* (*pfnEngSrc_GetSpritePointer_t)(HSPRITE hSprite);
  typedef void (*pfnEngSrc_pfnPlaySoundByNameAtLocation_t)(const char* szSound, float volume, float* origin);
  typedef unsigned short (*pfnEngSrc_pfnPrecacheEvent_t)(int type, const char* psz);
  typedef void (*pfnEngSrc_pfnPlaybackEvent_t)(int flags, const struct edict_s* pInvoker, unsigned short eventindex, float delay, const float* origin, const float* angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2);
  typedef void (*pfnEngSrc_pfnWeaponAnim_t)(int iAnim, int body);
  typedef float (*pfnEngSrc_pfnRandomFloat_t)(float flLow, float flHigh);
  typedef int32 (*pfnEngSrc_pfnRandomLong_t)(int32 lLow, int32 lHigh);
  typedef void (*pfnEngSrc_pfnHookEvent_t)(const char* name, void (*pfnEvent)(struct event_args_s* args));
  typedef int (*pfnEngSrc_Con_IsVisible_t)();
  typedef const char* (*pfnEngSrc_pfnGetGameDirectory_t)(void);
  typedef struct cvar_s* (*pfnEngSrc_pfnGetCvarPointer_t)(const char* szName);
  typedef const char* (*pfnEngSrc_Key_LookupBinding_t)(const char* pBinding);
  typedef const char* (*pfnEngSrc_pfnGetLevelName_t)(void);
  typedef void (*pfnEngSrc_pfnGetScreenFade_t)(struct screenfade_s* fade);
  typedef void (*pfnEngSrc_pfnSetScreenFade_t)(struct screenfade_s* fade);
  typedef void* (*pfnEngSrc_VGui_GetPanel_t)();
  typedef void (*pfnEngSrc_VGui_ViewportPaintBackground_t)(int extents[4]);
  typedef byte* (*pfnEngSrc_COM_LoadFile_t)(const char* path, int usehunk, int* pLength);
  typedef char* (*pfnEngSrc_COM_ParseFile_t)(const char* data, char* token);
  typedef void (*pfnEngSrc_COM_FreeFile_t)(void* buffer);
  typedef struct triangleapi_s* pTriAPI;
  typedef struct efx_api_s* pEfxAPI;
  typedef struct event_api_s* pEventAPI;
  typedef struct demo_api_s* pDemoAPI;
  typedef struct net_api_s* pNetAPI;
  typedef struct IVoiceTweak_s* pVoiceTweak;
  typedef int (*pfnEngSrc_IsSpectateOnly_t)(void);
  typedef struct model_s* (*pfnEngSrc_LoadMapSprite_t)(const char* filename);
  typedef void (*pfnEngSrc_COM_AddAppDirectoryToSearchPath_t)(const char* pszBaseDir, const char* appName);
  typedef int (*pfnEngSrc_COM_ExpandFilename_t)(const char* fileName, char* nameOutBuffer, int nameOutBufferSize);
  typedef const char* (*pfnEngSrc_PlayerInfo_ValueForKey_t)(int playerNum, const char* key);
  typedef void (*pfnEngSrc_PlayerInfo_SetValueForKey_t)(const char* key, const char* value);
  typedef qboolean (*pfnEngSrc_GetPlayerUniqueID_t)(int iPlayer, char playerID[16]);
  typedef int (*pfnEngSrc_GetTrackerIDForPlayer_t)(int playerSlot);
  typedef int (*pfnEngSrc_GetPlayerForTrackerID_t)(int trackerID);
  typedef int (*pfnEngSrc_pfnServerCmdUnreliable_t)(char* szCmdString);
  typedef void (*pfnEngSrc_GetMousePos_t)(Point* ppt);
  typedef void (*pfnEngSrc_SetMousePos_t)(int x, int y);
  typedef void (*pfnEngSrc_SetMouseEnable_t)(qboolean fEnable);
  typedef struct cvar_s* (*pfnEngSrc_GetFirstCVarPtr_t)();
  typedef unsigned int (*pfnEngSrc_GetFirstCmdFunctionHandle_t)();
  typedef unsigned int (*pfnEngSrc_GetNextCmdFunctionHandle_t)(unsigned int cmdhandle);
  typedef const char* (*pfnEngSrc_GetCmdFunctionName_t)(unsigned int cmdhandle);
  typedef float (*pfnEngSrc_GetClientOldTime_t)();
  typedef float (*pfnEngSrc_GetServerGravityValue_t)();
  typedef struct model_s* (*pfnEngSrc_GetModelByIndex_t)(int index);
  typedef void (*pfnEngSrc_pfnSetFilterMode_t)(int mode);
  typedef void (*pfnEngSrc_pfnSetFilterColor_t)(float r, float g, float b);
  typedef void (*pfnEngSrc_pfnSetFilterBrightness_t)(float brightness);
  typedef sequenceEntry_s* (*pfnEngSrc_pfnSequenceGet_t)(const char* fileName, const char* entryName);
  typedef void (*pfnEngSrc_pfnSPR_DrawGeneric_t)(int frame, int x, int y, const Rect* prc, int src, int dest, int w, int h);
  typedef sentenceEntry_s* (*pfnEngSrc_pfnSequencePickSentence_t)(const char* sentenceName, int pickMethod, int* entryPicked);
  // draw a complete string
  typedef int (*pfnEngSrc_pfnDrawString_t)(int x, int y, const char* str, int r, int g, int b);
  typedef int (*pfnEngSrc_pfnDrawStringReverse_t)(int x, int y, const char* str, int r, int g, int b);
  typedef const char* (*pfnEngSrc_LocalPlayerInfo_ValueForKey_t)(const char* key);
  typedef int (*pfnEngSrc_pfnVGUI2DrawCharacter_t)(int x, int y, int ch, unsigned int font);
  typedef int (*pfnEngSrc_pfnVGUI2DrawCharacterAdd_t)(int x, int y, int ch, int r, int g, int b, unsigned int font);
  typedef unsigned int (*pfnEngSrc_COM_GetApproxWavePlayLength)(const char* filename);
  typedef void* (*pfnEngSrc_pfnGetCareerUI_t)();
  typedef void (*pfnEngSrc_Cvar_Set_t)(const char* cvar, const char* value);
  typedef int (*pfnEngSrc_pfnIsPlayingCareerMatch_t)();
  typedef double (*pfnEngSrc_GetAbsoluteTime_t)(void);
  typedef void (*pfnEngSrc_pfnProcessTutorMessageDecayBuffer_t)(int* buffer, int bufferLength);
  typedef void (*pfnEngSrc_pfnConstructTutorMessageDecayBuffer_t)(int* buffer, int bufferLength);
  typedef void (*pfnEngSrc_pfnResetTutorMessageDecayData_t)();
  typedef void (*pfnEngSrc_pfnFillRGBABlend_t)(int x, int y, int width, int height, int r, int g, int b, int a);
  typedef int (*pfnEngSrc_pfnGetAppID_t)(void);
  typedef cmdalias_t* (*pfnEngSrc_pfnGetAliases_t)(void);
  typedef void (*pfnEngSrc_pfnVguiWrap2_GetMouseDelta_t)(int* x, int* y);
  typedef int (*pfnEngSrc_pfnFilteredClientCmd_t)(const char* szCmdString);
  
  // Pointers to the exported engine functions themselves
  typedef struct cl_enginefuncs_s
  {
  	pfnEngSrc_pfnSPR_Load_t pfnSPR_Load;
  	pfnEngSrc_pfnSPR_Frames_t pfnSPR_Frames;
  	pfnEngSrc_pfnSPR_Height_t pfnSPR_Height;
  	pfnEngSrc_pfnSPR_Width_t pfnSPR_Width;
  	pfnEngSrc_pfnSPR_Set_t pfnSPR_Set;
  	pfnEngSrc_pfnSPR_Draw_t pfnSPR_Draw;
  	pfnEngSrc_pfnSPR_DrawHoles_t pfnSPR_DrawHoles;
  	pfnEngSrc_pfnSPR_DrawAdditive_t pfnSPR_DrawAdditive;
  	pfnEngSrc_pfnSPR_EnableScissor_t pfnSPR_EnableScissor;
  	pfnEngSrc_pfnSPR_DisableScissor_t pfnSPR_DisableScissor;
  	pfnEngSrc_pfnSPR_GetList_t pfnSPR_GetList;
  	pfnEngSrc_pfnFillRGBA_t pfnFillRGBA;
  	pfnEngSrc_pfnGetScreenInfo_t pfnGetScreenInfo;
  	pfnEngSrc_pfnSetCrosshair_t pfnSetCrosshair;
  	pfnEngSrc_pfnRegisterVariable_t pfnRegisterVariable;
  	pfnEngSrc_pfnGetCvarFloat_t pfnGetCvarFloat;
  	pfnEngSrc_pfnGetCvarString_t pfnGetCvarString;
  	pfnEngSrc_pfnAddCommand_t pfnAddCommand;
  	pfnEngSrc_pfnHookUserMsg_t pfnHookUserMsg;
  	pfnEngSrc_pfnServerCmd_t pfnServerCmd;
  	pfnEngSrc_pfnClientCmd_t pfnClientCmd;
  	pfnEngSrc_pfnGetPlayerInfo_t pfnGetPlayerInfo;
  	pfnEngSrc_pfnPlaySoundByName_t pfnPlaySoundByName;
  	pfnEngSrc_pfnPlaySoundByIndex_t pfnPlaySoundByIndex;
  	pfnEngSrc_pfnAngleVectors_t pfnAngleVectors;
  	pfnEngSrc_pfnTextMessageGet_t pfnTextMessageGet;
  	pfnEngSrc_pfnDrawCharacter_t pfnDrawCharacter;
  	pfnEngSrc_pfnDrawConsoleString_t pfnDrawConsoleString;
  	pfnEngSrc_pfnDrawSetTextColor_t pfnDrawSetTextColor;
  	pfnEngSrc_pfnDrawConsoleStringLen_t pfnDrawConsoleStringLen;
  	pfnEngSrc_pfnConsolePrint_t pfnConsolePrint;
  	pfnEngSrc_pfnCenterPrint_t pfnCenterPrint;
  	pfnEngSrc_GetWindowCenterX_t GetWindowCenterX;
  	pfnEngSrc_GetWindowCenterY_t GetWindowCenterY;
  	pfnEngSrc_GetViewAngles_t GetViewAngles;
  	pfnEngSrc_SetViewAngles_t SetViewAngles;
  	pfnEngSrc_GetMaxClients_t GetMaxClients;
  	pfnEngSrc_Cvar_SetValue_t Cvar_SetValue;
  	pfnEngSrc_Cmd_Argc_t Cmd_Argc;
  	pfnEngSrc_Cmd_Argv_t Cmd_Argv;
  	pfnEngSrc_Con_Printf_t Con_Printf;
  	pfnEngSrc_Con_DPrintf_t Con_DPrintf;
  	pfnEngSrc_Con_NPrintf_t Con_NPrintf;
  	pfnEngSrc_Con_NXPrintf_t Con_NXPrintf;
  	pfnEngSrc_PhysInfo_ValueForKey_t PhysInfo_ValueForKey;
  	pfnEngSrc_ServerInfo_ValueForKey_t ServerInfo_ValueForKey;
  	pfnEngSrc_GetClientMaxspeed_t GetClientMaxspeed;
  	pfnEngSrc_CheckParm_t CheckParm;
  	pfnEngSrc_Key_Event_t Key_Event;
  	pfnEngSrc_GetMousePosition_t GetMousePosition;
  	pfnEngSrc_IsNoClipping_t IsNoClipping;
  	pfnEngSrc_GetLocalPlayer_t GetLocalPlayer;
  	pfnEngSrc_GetViewModel_t GetViewModel;
  	pfnEngSrc_GetEntityByIndex_t GetEntityByIndex;
  	pfnEngSrc_GetClientTime_t GetClientTime;
  	pfnEngSrc_V_CalcShake_t V_CalcShake;
  	pfnEngSrc_V_ApplyShake_t V_ApplyShake;
  	pfnEngSrc_PM_PointContents_t PM_PointContents;
  	pfnEngSrc_PM_WaterEntity_t PM_WaterEntity;
  	pfnEngSrc_PM_TraceLine_t PM_TraceLine;
  	pfnEngSrc_CL_LoadModel_t CL_LoadModel;
  	pfnEngSrc_CL_CreateVisibleEntity_t CL_CreateVisibleEntity;
  	pfnEngSrc_GetSpritePointer_t GetSpritePointer;
  	pfnEngSrc_pfnPlaySoundByNameAtLocation_t pfnPlaySoundByNameAtLocation;
  	pfnEngSrc_pfnPrecacheEvent_t pfnPrecacheEvent;
  	pfnEngSrc_pfnPlaybackEvent_t pfnPlaybackEvent;
  	pfnEngSrc_pfnWeaponAnim_t pfnWeaponAnim;
  	pfnEngSrc_pfnRandomFloat_t pfnRandomFloat;
  	pfnEngSrc_pfnRandomLong_t pfnRandomLong;
  	pfnEngSrc_pfnHookEvent_t pfnHookEvent;
  	pfnEngSrc_Con_IsVisible_t Con_IsVisible;
  	pfnEngSrc_pfnGetGameDirectory_t pfnGetGameDirectory;
  	pfnEngSrc_pfnGetCvarPointer_t pfnGetCvarPointer;
  	pfnEngSrc_Key_LookupBinding_t Key_LookupBinding;
  	pfnEngSrc_pfnGetLevelName_t pfnGetLevelName;
  	pfnEngSrc_pfnGetScreenFade_t pfnGetScreenFade;
  	pfnEngSrc_pfnSetScreenFade_t pfnSetScreenFade;
  	pfnEngSrc_VGui_GetPanel_t VGui_GetPanel;
  	pfnEngSrc_VGui_ViewportPaintBackground_t VGui_ViewportPaintBackground;
  	pfnEngSrc_COM_LoadFile_t COM_LoadFile;
  	pfnEngSrc_COM_ParseFile_t COM_ParseFile;
  	pfnEngSrc_COM_FreeFile_t COM_FreeFile;
  	struct triangleapi_s* pTriAPI;
  	struct efx_api_s* pEfxAPI;
  	struct event_api_s* pEventAPI;
  	struct demo_api_s* pDemoAPI;
  	struct net_api_s* pNetAPI;
  	struct IVoiceTweak_s* pVoiceTweak;
  	pfnEngSrc_IsSpectateOnly_t IsSpectateOnly;
  	pfnEngSrc_LoadMapSprite_t LoadMapSprite;
  	pfnEngSrc_COM_AddAppDirectoryToSearchPath_t COM_AddAppDirectoryToSearchPath;
  	pfnEngSrc_COM_ExpandFilename_t COM_ExpandFilename;
  	pfnEngSrc_PlayerInfo_ValueForKey_t PlayerInfo_ValueForKey;
  	pfnEngSrc_PlayerInfo_SetValueForKey_t PlayerInfo_SetValueForKey;
  	pfnEngSrc_GetPlayerUniqueID_t GetPlayerUniqueID;
  	pfnEngSrc_GetTrackerIDForPlayer_t GetTrackerIDForPlayer;
  	pfnEngSrc_GetPlayerForTrackerID_t GetPlayerForTrackerID;
  	pfnEngSrc_pfnServerCmdUnreliable_t pfnServerCmdUnreliable;
  	pfnEngSrc_GetMousePos_t pfnGetMousePos;
  	pfnEngSrc_SetMousePos_t pfnSetMousePos;
  	pfnEngSrc_SetMouseEnable_t pfnSetMouseEnable;
  	pfnEngSrc_GetFirstCVarPtr_t GetFirstCvarPtr;
  	pfnEngSrc_GetFirstCmdFunctionHandle_t GetFirstCmdFunctionHandle;
  	pfnEngSrc_GetNextCmdFunctionHandle_t GetNextCmdFunctionHandle;
  	pfnEngSrc_GetCmdFunctionName_t GetCmdFunctionName;
  	pfnEngSrc_GetClientOldTime_t hudGetClientOldTime;
  	pfnEngSrc_GetServerGravityValue_t hudGetServerGravityValue;
  	pfnEngSrc_GetModelByIndex_t hudGetModelByIndex;
  	pfnEngSrc_pfnSetFilterMode_t pfnSetFilterMode;
  	pfnEngSrc_pfnSetFilterColor_t pfnSetFilterColor;
  	pfnEngSrc_pfnSetFilterBrightness_t pfnSetFilterBrightness;
  	pfnEngSrc_pfnSequenceGet_t pfnSequenceGet;
  	pfnEngSrc_pfnSPR_DrawGeneric_t pfnSPR_DrawGeneric;
  	pfnEngSrc_pfnSequencePickSentence_t pfnSequencePickSentence;
  	pfnEngSrc_pfnDrawString_t pfnDrawString;
  	pfnEngSrc_pfnDrawStringReverse_t pfnDrawStringReverse;
  	pfnEngSrc_LocalPlayerInfo_ValueForKey_t LocalPlayerInfo_ValueForKey;
  	pfnEngSrc_pfnVGUI2DrawCharacter_t pfnVGUI2DrawCharacter;
  	pfnEngSrc_pfnVGUI2DrawCharacterAdd_t pfnVGUI2DrawCharacterAdd;
  	pfnEngSrc_COM_GetApproxWavePlayLength COM_GetApproxWavePlayLength;
  	pfnEngSrc_pfnGetCareerUI_t pfnGetCareerUI;
  	pfnEngSrc_Cvar_Set_t Cvar_Set;
  	pfnEngSrc_pfnIsPlayingCareerMatch_t pfnIsCareerMatch;
  	pfnEngSrc_pfnPlaySoundVoiceByName_t pfnPlaySoundVoiceByName;
  	pfnEngSrc_pfnPrimeMusicStream_t pfnPrimeMusicStream;
  	pfnEngSrc_GetAbsoluteTime_t GetAbsoluteTime;
  	pfnEngSrc_pfnProcessTutorMessageDecayBuffer_t pfnProcessTutorMessageDecayBuffer;
  	pfnEngSrc_pfnConstructTutorMessageDecayBuffer_t pfnConstructTutorMessageDecayBuffer;
  	pfnEngSrc_pfnResetTutorMessageDecayData_t pfnResetTutorMessageDecayData;
  	pfnEngSrc_pfnPlaySoundByNameAtPitch_t pfnPlaySoundByNameAtPitch;
  	pfnEngSrc_pfnFillRGBABlend_t pfnFillRGBABlend;
  	pfnEngSrc_pfnGetAppID_t pfnGetAppID;
  	pfnEngSrc_pfnGetAliases_t pfnGetAliasList;
  	pfnEngSrc_pfnVguiWrap2_GetMouseDelta_t pfnVguiWrap2_GetMouseDelta;
  	pfnEngSrc_pfnFilteredClientCmd_t pfnFilteredClientCmd;
  } cl_enginefunc_t;
  