From b8b0b5076f5b54458f92797b2ae0678f92ee17b3 Mon Sep 17 00:00:00 2001 From: superp00t Date: Thu, 17 Apr 2025 16:12:38 -0400 Subject: [PATCH] feat(profile): add a lot of symbols --- .../ida/batch/import_data_types.idc | 3 +- .../ida/batch/import_functions.idc | 486 +++++++++++++++- .../ida/batch/import_symbols.idc | 505 ++++++++++++++++- .../symbol/asyncfile/func.sym | 13 +- .../symbol/biginteger/func.sym | 13 + .../3.3.5a-windows-386/symbol/client/func.sym | 3 +- .../symbol/clientconnection/func.sym | 9 +- .../symbol/clientservices/func.sym | 2 - .../symbol/daynight/func.sym | 14 + .../symbol/detaildoodad/func.sym | 4 + .../symbol/framexml/func.sym | 1 + .../symbol/gruntclientlink/func.sym | 23 + .../symbol/gruntlogin/func.sym | 20 + .../symbol/grunttimer/func.sym | 4 + profile/3.3.5a-windows-386/symbol/gx/func.sym | 1 - .../3.3.5a-windows-386/symbol/gxbuf/func.sym | 1 - .../symbol/gxstring/func.sym | 14 + .../symbol/layoutframe/func.sym | 19 +- profile/3.3.5a-windows-386/symbol/m2/func.sym | 1 - .../symbol/m2cache/func.sym | 10 + .../symbol/m2light/func.sym | 8 + .../symbol/m2lighting/func.sym | 11 + .../symbol/m2model/func.sym | 57 ++ .../symbol/m2scene/func.sym | 19 + .../symbol/m2scenerender/func.sym | 12 + .../symbol/m2shared/func.sym | 25 + profile/3.3.5a-windows-386/symbol/main.sym | 529 +++++++++++++++++- .../3.3.5a-windows-386/symbol/map/func.sym | 11 + .../symbol/mapbaseobj/func.sym | 1 + .../symbol/mapchunk/func.sym | 1 + .../symbol/mapdoodaddef/func.sym | 1 + .../symbol/mapentity/func.sym | 1 + .../symbol/maplight/func.sym | 1 + .../3.3.5a-windows-386/symbol/mapobj/func.sym | 4 + .../3.3.5a-windows-386/symbol/md5/func.sym | 3 + .../symbol/neteventqueue/func.sym | 4 + .../symbol/nullsub/func.sym | 3 +- profile/3.3.5a-windows-386/symbol/os/func.sym | 1 + .../symbol/particleemitter2/func.sym | 13 + .../symbol/planeparticleemitter/func.sym | 1 + .../symbol/realmlist/func.sym | 4 +- .../symbol/ribbonemitter/func.sym | 11 + .../3.3.5a-windows-386/symbol/sha1/func.sym | 8 + .../symbol/shadereffect/func.sym | 19 +- .../symbol/shadereffectmanager/func.sym | 4 + .../symbol/shadowcache/func.sym | 3 + .../symbol/simplebutton/func.sym | 3 + .../symbol/simpleeditbox/func.sym | 14 + .../symbol/simpleframe/func.sym | 29 +- .../symbol/simplehtml/func.sym | 11 + .../symbol/simplehyperlinkedframe/func.sym | 1 + .../symbol/simplemodelffx/func.sym | 9 + .../symbol/simplescrollframe/func.sym | 14 + .../symbol/simpleslider/func.sym | 10 + .../symbol/simpletexture/func.sym | 9 + .../symbol/simpletop/func.sym | 9 + .../symbol/sphereparticleemitter/func.sym | 1 + .../symbol/splineparticleemitter/func.sym | 2 + .../3.3.5a-windows-386/symbol/srp6/func.sym | 5 + .../3.3.5a-windows-386/symbol/storm/func.sym | 2 + .../symbol/tempest/func.sym | 4 + .../symbol/wardenclient/func.sym | 2 + .../symbol/wowconnection/func.sym | 26 + profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 131616 -> 149472 bytes 64 files changed, 2013 insertions(+), 39 deletions(-) create mode 100644 profile/3.3.5a-windows-386/symbol/biginteger/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/detaildoodad/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/gruntclientlink/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/gruntlogin/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/grunttimer/func.sym delete mode 100644 profile/3.3.5a-windows-386/symbol/gxbuf/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/gxstring/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2cache/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2light/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2lighting/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2model/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2scene/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2scenerender/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/m2shared/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/map/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/mapbaseobj/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/mapchunk/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/mapdoodaddef/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/mapentity/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/maplight/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/mapobj/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/md5/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/neteventqueue/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/particleemitter2/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/planeparticleemitter/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/ribbonemitter/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/sha1/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/shadereffectmanager/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/shadowcache/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplebutton/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simpleeditbox/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplehtml/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplehyperlinkedframe/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplemodelffx/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplescrollframe/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simpleslider/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simpletexture/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/sphereparticleemitter/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/splineparticleemitter/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/srp6/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/wardenclient/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/wowconnection/func.sym diff --git a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc index 7d452be..a741c45 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc @@ -488,8 +488,7 @@ static import_data_types() { apply_type(0x0086BBA0, "uint64_t __stdcall func()"); apply_type(0x0086C6E0, "int32_t __stdcall func(void* parentWindow, int32_t style, const char* message, const char* title)"); apply_type(0x0086D430, "void __stdcall func(TimingMethod timingMethod)"); - apply_type(0x0086E200, "void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)"); - apply_type(0x008C8DE0, "EGxApi __stdcall func()"); + apply_type(0x008C8DE0, "int32_t __stdcall func()"); apply_type(0x0095BFB0, "int32_t __stdcall func()"); apply_type(0x0095F3A0, "void __thiscall func(CSimpleModel* this)"); apply_type(0x0095F420, "FrameScript_Object__ScriptIx* __thiscall func(CSimpleModel* this, char* name, FrameScript_Object__ScriptData* data)"); diff --git a/profile/3.3.5a-windows-386/ida/batch/import_functions.idc b/profile/3.3.5a-windows-386/ida/batch/import_functions.idc index 6381eaf..30ea37e 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_functions.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_functions.idc @@ -17,9 +17,36 @@ static import_functions() { set_func_cmt(0x00427500, "Blizzard::File::MakeAbsolutePath(char const*, char*, int, bool)", 0); set_func_cmt(0x00427560, "Blizzard::File::Move(char const*, char const*)", 0); set_func_cmt(0x00427720, "Blizzard::File::Read(Blizzard::File::StreamRecord*, void*, long long, int*, int)", 0); + set_func_cmt(0x00428300, "WowConnection::AddRef()", 0); set_func_cmt(0x00433510, "Blizzard::String::JoinPath(char*, int, char const*, char const*)", 0); set_func_cmt(0x0044FA10, "Blizzard::File::RemoveDirectoryAndContents(char const*, bool)::Internal::Callback(Blizzard::File::ProcessDirParms const&)", 0); set_func_cmt(0x00454220, "Blizzard::File::SetLastErrorStack(Blizzard::Debug::ErrorStackRecord*)", 0); + set_func_cmt(0x00465450, "ClientConnection::~ClientConnection()", 0); + set_func_cmt(0x004666D0, "WowConnection::SetResponse(WowConnectionResponse*, bool)", 0); + set_func_cmt(0x004667F0, "WowConnection::SetType(WOWC_TYPE)", 0); + set_func_cmt(0x00466820, "WowConnection::SetEncryption(WC_ENCRYPT_TYPE)", 0); + set_func_cmt(0x004669D0, "WowConnection::Init(WowConnectionResponse*, void (*)())", 0); + set_func_cmt(0x00466B50, "WowConnection::Disconnect()", 0); + set_func_cmt(0x00466BF0, "WowConnection::SetEncryptionKey(unsigned char const*, unsigned char, unsigned char, unsigned char const*, unsigned char)", 0); + set_func_cmt(0x00466DE0, "WowConnection::CloseSocket(int)", 0); + set_func_cmt(0x00466F00, "WowConnection::DoStreamReads()", 0); + set_func_cmt(0x00467270, "WowConnection::WowConnection(int, sockaddr_in*, WowConnectionResponse*)", 0); + set_func_cmt(0x00467330, "WowConnection::WowConnection(WowConnectionResponse*, void (*)())", 0); + set_func_cmt(0x004673C0, "WowConnection::~WowConnection()", 0); + set_func_cmt(0x004675F0, "WowConnection::Send(CDataStore*, int)", 0); + set_func_cmt(0x00467990, "WowConnection::SendRaw(unsigned char*, int)", 0); + set_func_cmt(0x00467BA0, "WowConnection::DoMessageReads()", 0); + set_func_cmt(0x00468200, "WowConnection::Release()", 0); + set_func_cmt(0x00468250, "WowConnection::DoDisconnect()", 0); + set_func_cmt(0x00468390, "WowConnection::CheckConnect()", 0); + set_func_cmt(0x00468580, "WowConnection::CheckAccept()", 0); + set_func_cmt(0x00468790, "WowConnection::DoWrites()", 0); + set_func_cmt(0x00468A90, "WowConnection::DoReads()", 0); + set_func_cmt(0x00468B30, "WowConnection::DoExceptions()", 0); + set_func_cmt(0x00468BA0, "WowConnection::StartConnect()", 0); + set_func_cmt(0x00468D20, "WowConnection::Connect(char const*, unsigned short, int)", 0); + set_func_cmt(0x00468D90, "WowConnection::InitOsNet(bool (*)(NETADDR const*), void (*)(), int, bool)", 0); + set_func_cmt(0x00468E50, "WowConnection::Connect(char const*, int)", 0); set_func_cmt(0x0047ADE0, "CDataStore::GetBufferParams(void const**, unsigned int*, unsigned int*)", 0); set_func_cmt(0x0047AE10, "CDataStore::DetachBuffer(void**, unsigned int*, unsigned int*)", 0); set_func_cmt(0x0047AE50, "virtual void __thiscall CDataStore::InternalDestroy(unsigned char * &,unsigned int &,unsigned int &)", 0); @@ -44,9 +71,87 @@ static import_functions() { set_func_cmt(0x0047B800, "void __cdecl quicksort(unsigned int, unsigned int, int, int (__cdecl *)(unsigned int, unsigned int, int), int)", 0); set_func_cmt(0x0047BD40, "int __cdecl sgetu8(_BYTE *, _DWORD *)", 0); set_func_cmt(0x0047F230, "IEvtSchedulerProcess as an independent function appears to be optimized out", 0); + set_func_cmt(0x00481590, "CSimpleTexture::SetTexture(CImVector const&)", 0); + set_func_cmt(0x00481620, "CSimpleTexture::SetBlendMode(EGxBlend)", 0); + set_func_cmt(0x00481640, "CSimpleTexture::SetTexCoord(C2Vector const*)", 0); + set_func_cmt(0x004831D0, "CSimpleTexture::SetTexCoord(CRect const&)", 0); + set_func_cmt(0x00484470, "CSimpleTexture::CSimpleTexture(CSimpleFrame*, unsigned int, int)", 0); + set_func_cmt(0x00485F40, "CSimpleTexture::LoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x00488CF0, "CLayoutFrame::IsResizePending()", 0); + set_func_cmt(0x00488D00, "CLayoutFrame::GetHeight()", 0); + set_func_cmt(0x00489230, "CLayoutFrame::GetRect(CRect*) const", 0); + set_func_cmt(0x00489330, "CLayoutFrame::Top()", 0); + set_func_cmt(0x004893C0, "CLayoutFrame::CalculateRect(CAaRect*)", 0); + set_func_cmt(0x00489570, "CLayoutFrame::OnFrameResize()", 0); + set_func_cmt(0x004896C0, "CLayoutFrame::SetProtectFlag(unsigned int)", 0); + set_func_cmt(0x004898B0, "CLayoutFrame::ResizePending()", 0); + set_func_cmt(0x00489C30, "CLayoutFrame::RegisterResize(CLayoutFrame*, unsigned int)", 0); + set_func_cmt(0x00489D70, "CLayoutFrame::UnregisterResize(CLayoutFrame*, unsigned int)", 0); + set_func_cmt(0x00489DE0, "CLayoutFrame::Resize(int)", 0); + set_func_cmt(0x00489E90, "CLayoutFrame::SetLayoutScale(float, bool)", 0); + set_func_cmt(0x0048A1D0, "CLayoutFrame::OnFrameSizeChanged(CAaRect const&)", 0); + set_func_cmt(0x0048A260, "CLayoutFrame::SetPoint(FRAMEPOINT, CLayoutFrame*, FRAMEPOINT, float, float, int)", 0); + set_func_cmt(0x0048A510, "CLayoutFrame::ClearAllPoints()", 0); + set_func_cmt(0x0048A520, "CLayoutFrame::SetDeferredResize(int)", 0); + set_func_cmt(0x0048B130, "CLayoutFrame::DestroyLayout()", 0); + set_func_cmt(0x0048C1C0, "CSimpleTexture_SetVertexColor(lua_State*)", 0); + set_func_cmt(0x0048C3E0, "CSimpleTexture_SetAlpha(lua_State*)", 0); + set_func_cmt(0x0048E170, "CSimpleTexture_SetTexCoord(lua_State*)", 0); + set_func_cmt(0x0048E680, "CSimpleFrame::GetScriptByName(char const*, FrameScript_Object::ScriptData&)", 0); + set_func_cmt(0x0048E9A0, "CSimpleFrame::Raise()", 0); + set_func_cmt(0x0048EA10, "CSimpleFrame::SetFrameAlpha(unsigned char)", 0); + set_func_cmt(0x0048EA80, "CSimpleFrame::UnregisterForEvents(int)", 0); + set_func_cmt(0x0048F580, "CSimpleFrame::SetFrameScale(float, bool)", 0); + set_func_cmt(0x0048F6A0, "CSimpleFrame::EnableEvent(CSimpleEventType, unsigned int)", 0); + set_func_cmt(0x0048F890, "CSimpleFrame::GetHitRect(CRect&)", 0); + set_func_cmt(0x0048FA20, "CSimpleFrame::OnFrameSizeChanged(CAaRect const&)", 0); + set_func_cmt(0x0048FEA0, "CSimpleFrame::NotifyScrollParent()", 0); + set_func_cmt(0x00490270, "CSimpleFrame::NotifyDrawLayerChanged(unsigned int)", 0); + set_func_cmt(0x00490330, "CSimpleFrame::OnFrameSizeChanged(float, float)", 0); + set_func_cmt(0x00490410, "CSimpleFrame::PostLoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x004905A0, "CSimpleFrame::SetBackdrop(CBackdropGenerator*)", 0); + set_func_cmt(0x00490770, "CSimpleFrame::OnLayerUpdate(float)", 0); + set_func_cmt(0x00490840, "CSimpleFrame::OnFrameRender(CRenderBatch*, unsigned int)", 0); + set_func_cmt(0x004908A0, "CSimpleFrame::OnScreenSizeChanged()", 0); + set_func_cmt(0x00490F60, "CSimpleFrame::SetBeingScrolled(int, int)", 0); + set_func_cmt(0x00491160, "CSimpleFrame::UnparentFrame(CSimpleFrame*)", 0); + set_func_cmt(0x004911B0, "CSimpleFrame::SetParent(CSimpleFrame*)", 0); + set_func_cmt(0x004913C0, "CSimpleFrame::GetBoundsRect(CRect&)", 0); + set_func_cmt(0x004915A0, "CSimpleFrame::UpdateScale(bool)", 0); + set_func_cmt(0x00491830, "CSimpleFrame::HideThis()", 0); + set_func_cmt(0x004918F0, "CSimpleFrame::ShowThis(bool)", 0); + set_func_cmt(0x00491E00, "CSimpleFrame::OnFrameRender()", 0); + set_func_cmt(0x004922F0, "CSimpleFrame::CSimpleFrame(CSimpleFrame*)", 0); + set_func_cmt(0x004932C0, "CSimpleFrame::LoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x00493E00, "CSimpleTop::RoundToPixelHeight(float)", 0); + set_func_cmt(0x00493F30, "CSimpleTop::HideFrame(CSimpleFrame*, int)", 0); + set_func_cmt(0x004945A0, "CSimpleTop::OnMouseMove(EVENT_DATA_MOUSE const*, void*)", 0); + set_func_cmt(0x00494FA0, "CSimpleTop::UnregisterFrame(CSimpleFrame*)", 0); + set_func_cmt(0x004955E0, "CSimpleTop::OnDisplaySizeChanged(EVENT_DATA_SIZE const*, void*)", 0); + set_func_cmt(0x00495880, "CSimpleTop::RegisterForEvent(CSimpleFrame*, CSimpleEventType, int, unsigned int)", 0); + set_func_cmt(0x004959F0, "CSimpleTop::EnableEvents()", 0); + set_func_cmt(0x00495EB0, "CSimpleTop::CSimpleTop()", 0); + set_func_cmt(0x004960D0, "CSimpleTop::ShowFrame(CSimpleFrame*, int)", 0); + set_func_cmt(0x0049E540, "CSimpleFrame::RegisterScriptMethods(lua_State*)", 0); set_func_cmt(0x004A2780, "_CBackdropGenerator::LoadXML(linkObject*, CStatus*)", 0); set_func_cmt(0x004A81B0, "FrameScript_GetObjectThis(lua_State*, int)", 0); + set_func_cmt(0x004B9B20, "AsyncFileReadPollHandler(void const*, void*)", 0); + set_func_cmt(0x004B9DE0, "AsyncFileReadDestroyObject(CAsyncObject*)", 0); + set_func_cmt(0x004B9EA0, "AsyncFileReadCancel(CAsyncObject*, void (*)(CAsyncObject*))", 0); + set_func_cmt(0x004BA060, "AsyncFileReadWait(CAsyncObject*)", 0); + set_func_cmt(0x004BAA40, "AsyncFileReadInitialize(unsigned int, unsigned int)", 0); + set_func_cmt(0x004BAB50, "AsyncFileReadObject(CAsyncObject*, int)", 0); set_func_cmt(0x004DBFD0, "thanks namreeb :^)", 0); + set_func_cmt(0x004DE960, "CRealmList::SetPreferredInfo(unsigned int, int, int)", 0); + set_func_cmt(0x004DF580, "CRealmList::Initialize()", 0); + set_func_cmt(0x004DF710, "CRealmList::UpdateList()", 0); + set_func_cmt(0x004E5ED0, "CSimpleModelFFX::SetModel(CM2Model*)", 0); + set_func_cmt(0x004E5F00, "CSimpleModelFFX::LoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x004E5F70, "CSimpleModelFFX::CSimpleModelFFX(CSimpleFrame*)", 0); + set_func_cmt(0x004E6190, "CSimpleModelFFX::Render(void*)", 0); + set_func_cmt(0x004E6300, "CSimpleModelFFX::Create(CSimpleFrame*)", 0); + set_func_cmt(0x004E6330, "CSimpleModelFFX::OnFrameRender(CRenderBatch*, unsigned int)", 0); + set_func_cmt(0x004E6F60, "CSimpleModelFFX::CreateScriptMetaTable()", 0); set_func_cmt(0x00532AF0, "public: class CGxCaps const & __thiscall CGxDevice::Caps(void)const", 0); set_func_cmt(0x005EEB70, "SErrDisplayAppFatal resolves to this in release mode?", 0); set_func_cmt(0x00631D30, "00005400", 0); @@ -74,6 +179,10 @@ static import_functions() { set_func_cmt(0x00632DB0, "00005400", 0); set_func_cmt(0x00632E00, "00005410", 0); set_func_cmt(0x00633330, "NetClient::WCMessageReady(WowConnection*, unsigned long, CDataStore*)", 0); + set_func_cmt(0x00633440, "NETEVENTQUEUE::NETEVENTQUEUE(NetClient*)", 0); + set_func_cmt(0x006334F0, "NETEVENTQUEUE::Poll()", 0); + set_func_cmt(0x00633650, "NETEVENTQUEUE::AddEvent(EVENTID, void*, NetClient*, void const*, unsigned long)", 0); + set_func_cmt(0x00633730, "NETEVENTQUEUE::~NETEVENTQUEUE()", 0); set_func_cmt(0x006337D0, "00005400", 0); set_func_cmt(0x00634C60, "00005400", 0); set_func_cmt(0x00634E00, "ClientDBInitialize()", 0); @@ -99,6 +208,32 @@ static import_functions() { set_func_cmt(0x006AA350, "UC", 0); set_func_cmt(0x006AA420, "private utility method", 0); set_func_cmt(0x006AB390, "public method", 0); + set_func_cmt(0x006B0940, "ClientConnection::Disconnect(DISCONNECT_REASON)", 0); + set_func_cmt(0x006B1100, "ClientConnection::PollStatus(WOWCS_OPS&, char const**, int&, int&)", 0); + set_func_cmt(0x006B1200, "ClientConnection::Cancel(int)", 0); + set_func_cmt(0x006B1260, "ClientConnection::HandleConnect()", 0); + set_func_cmt(0x006B1390, "ClientConnection::Connect()", 0); + set_func_cmt(0x006B14C0, "ClientConnection::GetCharacterList()", 0); + set_func_cmt(0x006C5E90, "CGxString::WriteGeometry(CGxVertexPCT*, int, int, int) const", 0); + set_func_cmt(0x006C6190, "CGxString::InitializeViewTranslation()", 0); + set_func_cmt(0x006C6410, "CGxString::SetStringPosition(C3Vector const&)", 0); + set_func_cmt(0x006C6A70, "CGxString::AddHyperlinkParseInfo(GXUFONTHYPERLINKINFO)", 0); + set_func_cmt(0x006C6B90, "CGxString::ClearInstanceData()", 0); + set_func_cmt(0x006C6C00, "CGxString::Tick()", 0); + set_func_cmt(0x006C6CD0, "CGxString::InitializeTextLine(char const*, unsigned int, CImVector&, C3Vector const&, unsigned int*, EMBEDDEDPARSEINFO&)", 0); + set_func_cmt(0x006C7440, "CGxString::AddShadow(C2Vector const&, CImVector const&)", 0); + set_func_cmt(0x006C7480, "CGxString::CheckGeometry()", 0); + set_func_cmt(0x006C75E0, "CGxString::Recycle()", 0); + set_func_cmt(0x006C7760, "CGxString::~CGxString()", 0); + set_func_cmt(0x006C78F0, "CGxString::SetGradient(int, int)", 0); + set_func_cmt(0x006C7AA0, "CGxString::GetNewString(int)", 0); + set_func_cmt(0x006C7B10, "CGxString::CreateGeometry()", 0); + set_func_cmt(0x006CA180, "SHA1::Process(void const*, unsigned int)", 0); + set_func_cmt(0x006CA270, "SHA1::Finish(SHA1::Digest&)", 0); + set_func_cmt(0x006CB5F0, "SHA1_Init(SHA1_CONTEXT*)", 0); + set_func_cmt(0x006CB630, "SHA1_Update(SHA1_CONTEXT*, unsigned char const*, unsigned int)", 0); + set_func_cmt(0x006CB6F0, "SHA1_Final(unsigned char*, SHA1_CONTEXT*)", 0); + set_func_cmt(0x006CB7C0, "SHA1_InterleaveHash(unsigned char*, unsigned char const*, unsigned int)", 0); set_func_cmt(0x00763730, "UC", 0); set_func_cmt(0x00763AB0, "static void CONSOLELINE::Backspace()", 0); set_func_cmt(0x00763B10, "void CONSOLELINE::Delete()", 0); @@ -121,6 +256,10 @@ static import_functions() { set_func_cmt(0x0076B3F0, "void SetDefaults(DefaultSettings&, const Hardware&)", 0); set_func_cmt(0x0076B520, "ConsoleDetectSetDefaultsFormat(DefaultSettings&, const Hardware&)", 0); set_func_cmt(0x0076BA30, "ConsoleDetectDetectHardware(Hardware&, bool&)", 0); + set_func_cmt(0x00779340, "00005410", 0); + set_func_cmt(0x00779A30, "00005410", 0); + set_func_cmt(0x00779AE0, "00005410", 0); + set_func_cmt(0x0077AAA0, "SHA1::Prepare()", 0); set_func_cmt(0x0077ACF0, "public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const", 0); set_func_cmt(0x0077AE80, "public: __thiscall BigStack::~BigStack(void)", 0); set_func_cmt(0x0077AEC0, "public: unsigned int & __thiscall BigBuffer::operator[](unsigned int)const", 0); @@ -137,6 +276,46 @@ static import_functions() { set_func_cmt(0x0077BAC0, "void __fastcall Div(class BigBuffer &,class BigBuffer &,class BigBuffer const &,class BigBuffer const &,class BigStack &)", 0); set_func_cmt(0x0077BFF0, "void Mul(class BigBuffer &,class BigBuffer const &,class BigBuffer const &,class BigStack &)", 0); set_func_cmt(0x0077C330, "void __fastcall Square(class BigBuffer &,class BigBuffer const &,class BigStack &)", 0); + set_func_cmt(0x007816F0, "DayNight::Update(unsigned int, float, float)", 0); + set_func_cmt(0x007AE300, "CMapObj::Init()", 0); + set_func_cmt(0x007B0580, "CMapObj::CMapObj()", 0); + set_func_cmt(0x007B0CC0, "CMapObj::Create(char const*)", 0); + set_func_cmt(0x007B1270, "CDetailDoodad::UpdateAlphaRampTexture(EGxTexCommand, unsigned int, unsigned int, unsigned int, unsigned int, void*, unsigned int&, void const*&)", 0); + set_func_cmt(0x007B15D0, "CDetailDoodad::InitializeShaderConstants()", 0); + set_func_cmt(0x007B2760, "CDetailDoodad::Initialize()", 0); + set_func_cmt(0x007B2D30, "CDetailDoodad::InitializeRenderState()", 0); + set_func_cmt(0x007B5020, "00005410", 0); + set_func_cmt(0x007BF8B0, "CMap::LoadWdt()", 0); + set_func_cmt(0x007BFCE0, "public: static void __cdecl CMap::Load(char const *, int)", 0); + set_func_cmt(0x007BFF20, "CMap::AllocMapObj()", 0); + set_func_cmt(0x007C08A0, "public: static class CMapLight * __fastcall CMap::AllocLight(void)", 0); + set_func_cmt(0x007C1150, "CMapDoodadDef::SelectLights(CM2Lighting*)", 0); + set_func_cmt(0x007C1730, "CMapEntity::SelectLights(CM2Lighting*)", 0); + set_func_cmt(0x007C65A0, "public: void __thiscall CMapChunk::UpdateLights(void)", 0); + set_func_cmt(0x007D7260, "CMapBaseObj::CMapBaseObj()", 0); + set_func_cmt(0x007D80C0, "CMapObj::Read(char const*)", 0); + set_func_cmt(0x007D9B10, "public: __thiscall CMapLight::CMapLight(void)", 0); + set_func_cmt(0x007D9BD0, "CMap::CreateLight(bool, bool)", 0); + set_func_cmt(0x007D9C80, "public: static void __cdecl CMap::UpdateLightBounds(class CMapLight *)", 0); + set_func_cmt(0x007D9D50, "public: static void __cdecl CMap::EnableLight(class CMapLight *)", 0); + set_func_cmt(0x007D9D70, "public: static void __cdecl CMap::DestroyLight(class CMapLight *)", 0); + set_func_cmt(0x007D9DE0, "CMap::LinkLightToChunks(class CMapLight *)", 0); + set_func_cmt(0x007D9F90, "CMap::LinkLightToMapObjDefs(class CMapLight *)", 0); + set_func_cmt(0x007DA100, "CMap::UpdateLight(class CMapLight *)", 0); + set_func_cmt(0x007DA420, "WardenClient_Destroy()", 0); + set_func_cmt(0x007DA8C0, "WardenClient_Initialize()", 0); + set_func_cmt(0x007ECD00, "DayNight::CalcFogRate(float, float)", 0); + set_func_cmt(0x007ECEC0, "DayNight::SetOverrideLightParamsID(int)", 0); + set_func_cmt(0x007ECEE0, "DayNight::ClearOverrideLightParamsID()", 0); + set_func_cmt(0x007ED3B0, "DayNight::InterpTable(C2Vector const*, unsigned int, float)", 0); + set_func_cmt(0x007ED820, "DayNight::ClearOverrideFog()", 0); + set_func_cmt(0x007ED870, "DayNight::SetOverrideFog(float, float, CImVector, int)", 0); + set_func_cmt(0x007EEA90, "DayNight::SetDirection()", 0); + set_func_cmt(0x007EECC0, "DayNight::SetPlanets()", 0); + set_func_cmt(0x007F16F0, "DayNight::UpdateFog()", 0); + set_func_cmt(0x007F3230, "DayNight::SetColors()", 0); + set_func_cmt(0x007F3920, "DayNight::UpdateLighting()", 0); + set_func_cmt(0x00812B90, "FrameXML_FreeHashNodes()", 0); set_func_cmt(0x00816790, "FrameScript_Object::CreateScriptMetaTable(lua_State*, void (*)(lua_State*))", 0); set_func_cmt(0x008167E0, "FrameScript_Object::FillScriptMethodTable(lua_State*, FrameScript_Method*, int)", 0); set_func_cmt(0x00818070, "startIndex is the index of starting argument on stack", 0); @@ -148,11 +327,316 @@ static import_functions() { set_func_cmt(0x0081AC90, "vFrameScript_SignalEvent(unsigned int, char const*, char*)", 0); set_func_cmt(0x0081B530, "FrameScript_SignalEvent(unsigned int, char const*, ...)", 0); set_func_cmt(0x0081B5F0, "FrameScript_CreateEvents(char const**, unsigned int)", 0); + set_func_cmt(0x0081BFA0, "CM2Cache::BeginThread(void (*)(void*), void*)", 0); + set_func_cmt(0x0081BFD0, "CM2Cache::WaitThread()", 0); + set_func_cmt(0x0081BFE0, "CM2Cache::ThreadProc(void*)", 0); + set_func_cmt(0x0081C0D0, "CM2Cache::Initialize(unsigned int)", 0); + set_func_cmt(0x0081C290, "CM2Cache::GarbageCollect(int)", 0); + set_func_cmt(0x0081C300, "CM2Cache::Destroy()", 0); + set_func_cmt(0x0081C390, "CM2Cache::CreateShared(char const*, unsigned int)", 0); + set_func_cmt(0x0081C790, "CM2Cache::UpdateShared()", 0); + set_func_cmt(0x0081C840, "CM2Cache::LinkToSharedUpdateList(CM2Shared*)", 0); + set_func_cmt(0x0081C900, "CM2Cache::CM2Cache()", 0); + set_func_cmt(0x0081C9C0, "CM2Scene::AdvanceTime(unsigned int)", 0); + set_func_cmt(0x0081CE70, "CM2Scene::AnimateThread(void*)", 0); + set_func_cmt(0x0081E400, "CM2Scene::SelectLights(CM2Lighting*)", 0); + set_func_cmt(0x0081EA90, "CM2Scene::SortDoodadProxy(unsigned int, unsigned int, void const*)", 0); + set_func_cmt(0x0081EAD0, "CM2Scene::SortOpaqueGeoBatches(M2Element*, M2Element*)", 0); + set_func_cmt(0x0081ED10, "CM2Scene::SortOpaqueRibbons(M2Element*, M2Element*)", 0); + set_func_cmt(0x0081EDF0, "CM2Scene::SortOpaqueParticles(M2Element*, M2Element*)", 0); + set_func_cmt(0x0081EEA0, "CM2Scene::SortOpaque(unsigned int, unsigned int, void const*)", 0); + set_func_cmt(0x0081EF30, "CM2Scene::SortTransparent(unsigned int, unsigned int, void const*)", 0); + set_func_cmt(0x0081F0E0, "CM2Scene::SortAdditiveParticles(unsigned int, unsigned int, void const*)", 0); + set_func_cmt(0x0081F1D0, "CM2Scene::ComputeElementShaders(M2Element*)", 0); + set_func_cmt(0x0081F330, "CM2SceneRender::CM2SceneRender(CM2Scene*)", 0); + set_func_cmt(0x0081F450, "CM2SceneRender::SetupTextures()", 0); + set_func_cmt(0x0081F700, "CM2SceneRender::SetBatchVertices(int)", 0); + set_func_cmt(0x0081F8F0, "CM2Scene::CreateModel(char const*, unsigned int)", 0); + set_func_cmt(0x0081F970, "CM2Scene::DuplicateModel(CM2Model*, unsigned int)", 0); + set_func_cmt(0x0081F9E0, "CM2Scene::SortAdditiveParticleElements(unsigned int)", 0); + set_func_cmt(0x0081FB10, "CM2SceneRender::SetupLighting()", 0); + set_func_cmt(0x0081FE90, "CM2SceneRender::SetupMaterial()", 0); + set_func_cmt(0x008203B0, "CM2SceneRender::DrawBatch()", 0); + set_func_cmt(0x00820720, "CM2SceneRender::DrawBatchProj()", 0); + set_func_cmt(0x00820AE0, "CM2SceneRender::DrawBatchDoodad(M2Element*, unsigned int*)", 0); + set_func_cmt(0x00820F40, "CM2SceneRender::DrawRibbon()", 0); + set_func_cmt(0x008214E0, "CM2SceneRender::DrawParticle(unsigned int, M2Element*, unsigned int*, unsigned int)", 0); + set_func_cmt(0x008216C0, "CM2Scene::CM2Scene(CM2Cache*)", 0); + set_func_cmt(0x00821850, "CM2Scene::~CM2Scene()", 0); + set_func_cmt(0x00821A20, "CM2Scene::Animate(C3Vector const&)", 0); + set_func_cmt(0x00823040, "CM2Scene::Release()", 0); + set_func_cmt(0x008230D0, "CM2SceneRender::DrawCallback()", 0); + set_func_cmt(0x00823130, "CM2SceneRender::Draw(M2PASS, M2Element*, unsigned int*, unsigned int*)", 0); + set_func_cmt(0x00823CB0, "CM2Scene::Draw(M2PASS)", 0); + set_func_cmt(0x00823ED0, "CM2Model::WaitForLoad(char const*)", 0); + set_func_cmt(0x00823F10, "CM2Model::SetAnimating(int)", 0); + set_func_cmt(0x00823FE0, "CM2Model::SetSequenceCallback(void (*)(CM2Model*, unsigned int, unsigned int, int, unsigned int, unsigned long long, int), unsigned long long)", 0); + set_func_cmt(0x00824060, "CM2Model::SetEventCallback(void (*)(CM2Model*, unsigned int, unsigned int, unsigned int, C3Vector const&, unsigned int, unsigned long long), unsigned long long)", 0); + set_func_cmt(0x00824170, "CM2Model::GetCameraByIndex(unsigned int)", 0); + set_func_cmt(0x008244F0, "CM2Model::LinkToCallbackListTail()", 0); + set_func_cmt(0x00824510, "CM2Model::UnlinkFromCallbackList()", 0); + set_func_cmt(0x00824550, "CM2Model::IsBatchDoodadCompatible(M2Batch*) const", 0); + set_func_cmt(0x00824ED0, "CM2Model::Release()", 0); + set_func_cmt(0x00824F00, "CM2Model::IsLoaded(int, int)", 0); + set_func_cmt(0x00824FC0, "CM2Model::IsDrawable(int, int)", 0); + set_func_cmt(0x00825170, "CM2Model::UpdateLoaded()", 0); + set_func_cmt(0x008251B0, "CM2Model::SetLoadedCallback(void (*)(CM2Model*, void*), void*)", 0); + set_func_cmt(0x008251D0, "CM2Model::SetWorldTransform(C3Vector const&, float, float)", 0); + set_func_cmt(0x00825D70, "CM2Model::UnoptimizeVisibleGeometry()", 0); + set_func_cmt(0x00826350, "CM2Model::SequenceFallbackById(M2SequenceFallback*, unsigned int) const", 0); + set_func_cmt(0x00826B00, "CM2Model::SetupBoneSequence(unsigned short, M2SequenceFallback, unsigned int, float, M2ModelBoneSeq*)", 0); + set_func_cmt(0x00826C40, "CM2Model::SetPrimaryBoneSequence(unsigned short, unsigned short, M2SequenceFallback, unsigned int, float, int)", 0); + set_func_cmt(0x00826DD0, "CM2Model::SetSecondaryBoneSequence(unsigned short, unsigned short, M2SequenceFallback, unsigned int, float)", 0); + set_func_cmt(0x00827560, "CM2Model::DetachAllChildrenById(unsigned int)", 0); + set_func_cmt(0x00827960, "CM2Model::GetCameraById(unsigned int)", 0); + set_func_cmt(0x008284D0, "CM2Model::FindKey(M2ModelBoneSeq*, M2TrackBase const&, unsigned int&, unsigned int&, float&)", 0); + set_func_cmt(0x00828A00, "CM2Model::AnimateST()", 0); + set_func_cmt(0x00828F90, "CM2Model::SetIndices() const", 0); + set_func_cmt(0x00829160, "CM2Model::SetVertices(int, M2SkinSection*, unsigned int) const", 0); + set_func_cmt(0x00829AA0, "CM2Model::RenderModelBatchesForProjectedTexture()", 0); + set_func_cmt(0x0082BE60, "CM2Model::CM2Model()", 0); + set_func_cmt(0x0082C970, "CM2Model::OptimizeVisibleGeometry()", 0); + set_func_cmt(0x0082D2F0, "CM2Model::AnimateParticlesMT()", 0); + set_func_cmt(0x0082D6F0, "CM2Model::AnimateTextureTransformsMT()", 0); + set_func_cmt(0x0082D910, "CM2Model::SetVerticesMultiSample(int, M2SkinSection*)", 0); + set_func_cmt(0x0082DD80, "CM2Model::SetWorldTransform(C3Vector const&, float, float, C3Vector const&, unsigned int)", 0); + set_func_cmt(0x0082E140, "CM2Model::AnimateMTSimple(C44Matrix const*, C3Vector const&, C3Vector const&, float, float)", 0); + set_func_cmt(0x0082E550, "CM2Model::AnimateAttachmentsMT()", 0); + set_func_cmt(0x0082E790, "CM2Model::ProcessSequenceCallback(unsigned int, unsigned int, unsigned int, unsigned int)", 0); + set_func_cmt(0x0082EC30, "CM2Model::GetCollisionFacets(CAaBox const&, C44Matrix const&, TSGrowableArray&)", 0); + set_func_cmt(0x0082F0F0, "CM2Model::AnimateMT(C44Matrix const*, C3Vector const&, C3Vector const&, float, float)", 0); + set_func_cmt(0x008309C0, "CM2Model::AnimateParticleST(float, unsigned int)", 0); + set_func_cmt(0x00830DC0, "CM2Model::Animate()", 0); + set_func_cmt(0x00830FB0, "CM2Model::ProcessEventCallbacks(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)", 0); + set_func_cmt(0x00831410, "CM2Model::GetAttachmentWorldTransform(unsigned int)", 0); + set_func_cmt(0x00831630, "CM2Model::AttachToParent(CM2Model*, unsigned int, C3Vector const*, int)", 0); + set_func_cmt(0x00831AF0, "CM2Model::SetupLighting()", 0); + set_func_cmt(0x00831C30, "CM2Model::SetBoneSequenceDeferred(unsigned short, M2Data*, unsigned short, unsigned int, float, M2SequenceFallback, int, int, int, unsigned int)", 0); + set_func_cmt(0x00831EC0, "CM2Model::CancelDeferredSequences(unsigned int, bool)", 0); + set_func_cmt(0x00831FC0, "CM2Model::CallSequenceCallback(M2ModelCallback*)", 0); + set_func_cmt(0x008321E0, "CM2Model::CallCallbacks()", 0); + set_func_cmt(0x00832260, "CM2Model::ProcessCallbacks()", 0); + set_func_cmt(0x00832450, "CM2Model::ProcessCallbacksRecursive()", 0); + set_func_cmt(0x00832640, "CM2Model::~CM2Model()", 0); + set_func_cmt(0x00832840, "CM2Model::UnsetBoneSequence(unsigned int, int, int)", 0); + set_func_cmt(0x00832AB0, "CM2Model::SetBoneSequence(unsigned int, unsigned int, unsigned int, unsigned int, float, int, int)", 0); + set_func_cmt(0x00832EA0, "CM2Model::InitializeLoaded()", 0); + set_func_cmt(0x00834540, "CM2Model::AttachToScene(CM2Scene*)", 0); + set_func_cmt(0x00834630, "CM2Model::AttachToSceneRecursive(CM2Scene*)", 0); + set_func_cmt(0x00834810, "CM2Model::Initialize(CM2Scene*, CM2Shared*, CM2Model*, unsigned int)", 0); + set_func_cmt(0x008348D0, "CM2Light::Initialize(CM2Scene*)", 0); + set_func_cmt(0x00834900, "CM2Lighting::Initialize(CM2Scene*, CAaSphere const&)", 0); + set_func_cmt(0x00834940, "CM2Lighting::SetFog(C3Vector const&, float, float)", 0); + set_func_cmt(0x00834990, "CM2Lighting::SetFog(C3Vector const&, float, float, float)", 0); + set_func_cmt(0x008349E0, "CM2Lighting::GetPointLight(unsigned int, C3Vector&, C3Vector&, C3Vector&)", 0); + set_func_cmt(0x00834A40, "CM2Light::CM2Light()", 0); + set_func_cmt(0x00834AB0, "CM2Light::~CM2Light()", 0); + set_func_cmt(0x00834AE0, "CM2Light::SetDirection(C3Vector const&)", 0); + set_func_cmt(0x00834C70, "CM2Light::Link()", 0); + set_func_cmt(0x00834D90, "CM2Lighting::AddAmbient(C3Vector const&)", 0); + set_func_cmt(0x00834DC0, "CM2Lighting::AddDiffuse(C3Vector const&, C3Vector const&)", 0); + set_func_cmt(0x00834F60, "CM2Lighting::AddLight(CM2Light*)", 0); + set_func_cmt(0x008350A0, "CM2Lighting::CameraSpace()", 0); + set_func_cmt(0x00835280, "CM2Lighting::SetupSunlight()", 0); + set_func_cmt(0x008353D0, "CM2Lighting::SetupGxLights(C3Vector const*)", 0); + set_func_cmt(0x008355D0, "CM2Lighting::GetSunLight(C3Vector&, C3Vector&, C3Vector&, C3Vector&)", 0); + set_func_cmt(0x00835640, "CM2Light::SetLightType(M2LIGHTTYPE)", 0); + set_func_cmt(0x00835690, "CM2Light::SetPosition(NTempest::C3Vector const&)", 0); + set_func_cmt(0x008356F0, "CM2Light::SetVisible(int)", 0); + set_func_cmt(0x00835970, "CM2Shared::AddRef()", 0); + set_func_cmt(0x008359C0, "CM2Shared::CallbackWhenLoaded(CM2Model*)", 0); + set_func_cmt(0x00835A00, "CM2Shared::LoadFailedCallback(CAsyncObject*)", 0); + set_func_cmt(0x008360A0, "CM2Shared::SetIndices()", 0); + set_func_cmt(0x008362B0, "CM2Shared::SetVertices(unsigned int)", 0); + set_func_cmt(0x00836C90, "CM2Shared::GetEffect(M2Batch*)", 0); + set_func_cmt(0x00837250, "CM2Shared::ConvertTextureValuesToCombos()", 0); + set_func_cmt(0x008374A0, "CM2Shared::AssignBatchTextureComboIndices()", 0); + set_func_cmt(0x00837680, "CM2Shared::SubstituteSpecializedShaders()", 0); + set_func_cmt(0x00837A40, "CM2Shared::InitializeSkinProfile()", 0); + set_func_cmt(0x00838490, "CM2Shared::FinishLoadingSkinProfile(unsigned int)", 0); + set_func_cmt(0x0083C5F0, "CM2Shared::CM2Shared(CM2Cache*)", 0); + set_func_cmt(0x0083C6E0, "CM2Shared::InitLowPrioritySequence(unsigned int, unsigned char*, unsigned int)", 0); + set_func_cmt(0x0083CA90, "CM2Shared::FinishLoadingLowPrioritySequence(unsigned int, CAsyncObject*)", 0); + set_func_cmt(0x0083CB10, "CM2Shared::SkinProfileLoadedCallback(void*)", 0); + set_func_cmt(0x0083CB40, "CM2Shared::LoadSkinProfile(unsigned int)", 0); + set_func_cmt(0x0083CC80, "CM2Shared::Initialize()", 0); + set_func_cmt(0x0083D340, "CM2Shared::LoadSucceededCallback(CAsyncObject*)", 0); + set_func_cmt(0x0083D410, "CM2Shared::Load(SFile*, int, CAaBox*)", 0); + set_func_cmt(0x0083D510, "CM2Shared::CancelAllDeferredSequences()", 0); + set_func_cmt(0x0083D5B0, "CM2Shared::~CM2Shared()", 0); + set_func_cmt(0x0083D840, "CM2Shared::LowPrioritySequenceLoadedCallback(void*)", 0); + set_func_cmt(0x0083D9F0, "CM2Shared::LowPrioritySequenceFailedCallback(void*)", 0); + set_func_cmt(0x0083DA10, "CM2Shared::LoadLowPrioritySequence(unsigned short)", 0); + set_func_cmt(0x0083DC90, "CM2Shared::Release()", 0); set_func_cmt(0x0086B9A0, "OsGetProcessorFeaturesEx(int&)", 0); set_func_cmt(0x0086BBA0, "Invented name", 0); + set_func_cmt(0x0086E200, "00005410", 0); set_func_cmt(0x0086F5F0, "00005410", 0); + set_func_cmt(0x008728C0, "CShaderEffect::InitFixedFuncPass(EGxTexOp const*, EGxTexOp const*, unsigned int)", 0); + set_func_cmt(0x00872AD0, "CShaderEffect::SetUsePcfFiltering(unsigned int)", 0); + set_func_cmt(0x00872B00, "CShaderEffect::UpdateWorldViewMatrix()", 0); + set_func_cmt(0x00872C10, "CShaderEffect::UpdateProjMatrix()", 0); + set_func_cmt(0x00872CE0, "CShaderEffect::InitShaderSystem(int, int)", 0); + set_func_cmt(0x00872D30, "CShaderEffect::InitEffect(char const*, char const*)", 0); + set_func_cmt(0x00872F90, "CShaderEffect::SetCurrent()", 0); + set_func_cmt(0x00873060, "CShaderEffect::SetShaders(unsigned int, unsigned int)", 0); + set_func_cmt(0x00873160, "CShaderEffect::SetDefaultShaders(unsigned int)", 0); + set_func_cmt(0x00873210, "CShaderEffect::SetFogParams(float, float, float, CImVector const&)", 0); + set_func_cmt(0x00873390, "CShaderEffect::SetFogEnabled(int)", 0); + set_func_cmt(0x00873480, "CShaderEffect::SetTexMtx_Identity(unsigned int)", 0); + set_func_cmt(0x00873550, "CShaderEffect::SetTexMtx_SphereMap(unsigned int)", 0); + set_func_cmt(0x00873620, "CShaderEffect::SetTexMtx(C44Matrix const&, unsigned int)", 0); + set_func_cmt(0x00873900, "CShaderEffect::SetDiffuse(C4Vector const&)", 0); + set_func_cmt(0x00873A50, "CShaderEffect::SetEmissive(C4Vector const&)", 0); + set_func_cmt(0x00873BA0, "CShaderEffect::SetAlphaRef(float)", 0); + set_func_cmt(0x00873CA0, "CShaderEffect::SetLocalLighting(CM2Lighting*, int, C3Vector const*)", 0); + set_func_cmt(0x00873FE0, "CShadowCache::NotifyTexturesRecreate()", 0); + set_func_cmt(0x008744E0, "CShadowCache::SetShadowMapGenericGlobal()", 0); + set_func_cmt(0x008745D0, "CShadowCache::SetShadowMapGenericInterior(int)", 0); + set_func_cmt(0x00876530, "CShaderEffectManager::GetEffect(char const*)", 0); + set_func_cmt(0x00876BE0, "CShaderEffectManager::CreateEffect(char const*)", 0); + set_func_cmt(0x00876CA0, "CShaderEffectManager::ParseEffectCallback(CShaderEffectParser::ParsedEffect const&, void*)", 0); + set_func_cmt(0x00876D90, "CShaderEffectManager::AddEffectFile(char const*)", 0); set_func_cmt(0x008A1420, "known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback", 0); - set_func_cmt(0x008E5250, "Script_ToggleTris", 0); + set_func_cmt(0x008C8DE0, "Known names: GxDefaultApi, CCommand_Perf", 0); + set_func_cmt(0x008CA0B0, "GruntLogin::Connected(NETADDR const&)", 0); + set_func_cmt(0x008CA140, "GruntLogin::CantConnect()", 0); + set_func_cmt(0x008CA260, "GruntLogin::GetVersionProof(unsigned char const*)", 0); + set_func_cmt(0x008CA360, "GruntLogin::SetPinInfo(bool, unsigned int, unsigned char const*)", 0); + set_func_cmt(0x008CA400, "GruntLogin::SetTokenInfo(bool, unsigned char)", 0); + set_func_cmt(0x008CA450, "GruntLogin::ProveVersion(unsigned char const*)", 0); + set_func_cmt(0x008CA4F0, "GruntLogin::NextSecurityState(LOGIN_STATE)", 0); + set_func_cmt(0x008CA580, "GruntLogin::GetLogonMethod()", 0); + set_func_cmt(0x008CA700, "GruntLogin::Reconnect()", 0); + set_func_cmt(0x008CA730, "GruntLogin::GetRealmList()", 0); + set_func_cmt(0x008CA740, "GruntLogin::Logon(char const*, char const*)", 0); + set_func_cmt(0x008CA7F0, "GruntLogin::Wait(char const*, LoginData&)", 0); + set_func_cmt(0x008CA880, "GruntLogin::EnterPIN(int, unsigned char*)", 0); + set_func_cmt(0x008CAC00, "GruntLogin::GetVersionChallenge()", 0); + set_func_cmt(0x008CAC50, "GruntLogin::Init(LoginResponse*)", 0); + set_func_cmt(0x008CACA0, "GruntLogin::GruntLogin()", 0); + set_func_cmt(0x008CAD20, "GruntLogin::Logoff()", 0); + set_func_cmt(0x008CAD40, "GruntLogin::SetMatrixInfo(bool, unsigned char, unsigned char, unsigned char, unsigned char, bool, unsigned char, unsigned long long, unsigned char const*, unsigned int)", 0); + set_func_cmt(0x008CB020, "GruntLogin::ReconnectResult(Grunt::Result, unsigned char const*, unsigned int, unsigned short)", 0); + set_func_cmt(0x008CB160, "GruntLogin::LogonResult(Grunt::Result, unsigned char const*, unsigned int, unsigned short)", 0); + set_func_cmt(0x008CBA40, "00005410", 0); + set_func_cmt(0x008CBA90, "Grunt::ClientLink::Shutdown()", 0); + set_func_cmt(0x008CBAE0, "Grunt::ClientLink::Disconnect()", 0); + set_func_cmt(0x008CBB10, "00005410", 0); + set_func_cmt(0x008CBB40, "Grunt::ClientLink::Connect(char const*)", 0); + set_func_cmt(0x008CC250, "Grunt::ClientLink::CmdRealmList(CDataStore&)", 0); + set_func_cmt(0x008CC3E0, "Grunt::ClientLink::CmdAuthLogonChallenge(CDataStore&)", 0); + set_func_cmt(0x008CC7A0, "Grunt::ClientLink::CmdAuthLogonProof(CDataStore&)", 0); + set_func_cmt(0x008CC980, "Grunt::ClientLink::CmdAuthReconnectChallenge(CDataStore&)", 0); + set_func_cmt(0x008CCA50, "Grunt::ClientLink::CmdAuthReconnectProof(CDataStore&)", 0); + set_func_cmt(0x008CCB40, "Grunt::ClientLink::CmdXferInitiate(CDataStore&)", 0); + set_func_cmt(0x008CCC20, "Grunt::ClientLink::CmdXferData(CDataStore&)", 0); + set_func_cmt(0x008CCCB0, "Grunt::ClientLink::WCConnected(WowConnection*, WowConnection*, unsigned long, NETCONNADDR const*)", 0); + set_func_cmt(0x008CCD40, "Grunt::ClientLink::WCDisconnected(WowConnection*, unsigned long, NETCONNADDR const*)", 0); + set_func_cmt(0x008CCDA0, "Grunt::ClientLink::WCCantConnect(WowConnection*, unsigned long, NETCONNADDR const*)", 0); + set_func_cmt(0x008CCE00, "Grunt::ClientLink::PackLogon(CDataStore&, Grunt::ClientLink::Logon const&)", 0); + set_func_cmt(0x008CD710, "Grunt::ClientLink::WCDataReady(WowConnection*, unsigned long, unsigned char*, int)", 0); + set_func_cmt(0x008CD7E0, "Grunt::ClientLink::LogonNewSession(Grunt::ClientLink::Logon const&)", 0); + set_func_cmt(0x008CD9F0, "Grunt::ClientLink::LogonStoredSession(Grunt::ClientLink::Logon const&)", 0); + set_func_cmt(0x008CE0F0, "Grunt::ClientLink::GetRealmList()", 0); + set_func_cmt(0x008CE5C0, "Grunt::Timer::Insert(Grunt::Timer::Event&)", 0); + set_func_cmt(0x008CE720, "Grunt::ClientLink::ProveVersion(unsigned char const*)", 0); + set_func_cmt(0x008CED90, "Grunt::Timer::Pump()", 0); + set_func_cmt(0x008CF600, "Grunt::ClientLink::Call()", 0); + set_func_cmt(0x008CF770, "Grunt::Timer::ThreadProc(void*)", 0); + set_func_cmt(0x008CF7A0, "Grunt::Timer::Timer()", 0); + set_func_cmt(0x008CF800, "Grunt::ClientLink::ClientLink(Grunt::ClientResponse&)", 0); + set_func_cmt(0x008E5250, "known names Script_ToggleTris, CLayoutFrame::IsAttachmentOrigin()", 0); set_func_cmt(0x0095D110, "CDataAllocator::GetData(int, char const*, int)", 0); set_func_cmt(0x0095D1B0, "CDataAllocator::PutData(void*, char const*, int)", 0); + set_func_cmt(0x00962F90, "DeleteSubString(int, int, int)", 0); + set_func_cmt(0x00963140, "HighlightText(int, int)", 0); + set_func_cmt(0x009650E0, "FontUpdated(CSimpleFontedFrameFont*, int)", 0); + set_func_cmt(0x009656D0, "OnFrameSizeChanged(float, float)", 0); + set_func_cmt(0x00965960, "Insert(char const*, char const*, int, int, int)", 0); + set_func_cmt(0x00965F20, "SetMultiLine(int)", 0); + set_func_cmt(0x00966580, "SetText(char const*, char const*)", 0); + set_func_cmt(0x00966FD0, "SetHistoryLines(int)", 0); + set_func_cmt(0x00967290, "LoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x0096B060, "CSimpleScrollFrame::UnparentFrame(CSimpleFrame*)", 0); + set_func_cmt(0x0096B1C0, "void __thiscall CSimpleScrollFrame::UpdateScrollChild(void)", 0); + set_func_cmt(0x0096B210, "CSimpleScrollFrame::OnFrameSizeChanged(float, float)", 0); + set_func_cmt(0x0096B2D0, "CSimpleScrollFrame::CSimpleScrollFrame(CSimpleFrame*)", 0); + set_func_cmt(0x0096B3A0, "CSimpleScrollFrame::SetScrollChild(CSimpleFrame*)", 0); + set_func_cmt(0x0096B480, "CSimpleScrollFrame::SetVerticalScroll(float)", 0); + set_func_cmt(0x0096B4C0, "CSimpleScrollFrame::UpdateScrollChildRect(float, float)", 0); + set_func_cmt(0x0096B5A0, "CSimpleScrollFrame::OnLayerUpdate(float)", 0); + set_func_cmt(0x0096B610, "CSimpleScrollFrame::RenderScrollChild(void*)", 0); + set_func_cmt(0x0096B920, "CSimpleScrollFrame::LoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x0096B9A0, "CSimpleScrollFrame::OnFrameRender(CRenderBatch*, unsigned int)", 0); + set_func_cmt(0x0096B9D0, "CSimpleScrollFrame::GetBoundsRect(CRect&)", 0); + set_func_cmt(0x0096BE50, "CSimpleSlider::CSimpleSlider(CSimpleFrame*)", 0); + set_func_cmt(0x0096BF00, "CSimpleSlider::IsA(int) const", 0); + set_func_cmt(0x0096C090, "CSimpleSlider::SetValue(float, bool)", 0); + set_func_cmt(0x0096C470, "CSimpleSlider::SetMinMaxValues(float, float)", 0); + set_func_cmt(0x0096C750, "CSimpleHTML::FontUpdated(CSimpleFontedFrameFont*, int)", 0); + set_func_cmt(0x0096C820, "CSimpleHTML::CSimpleHTML(CSimpleFrame*)", 0); + set_func_cmt(0x0096C960, "CSimpleHTML::IsA(int) const", 0); + set_func_cmt(0x0096C9E0, "CSimpleHTML::ParseIMG(XMLNode const*, CStatus*)", 0); + set_func_cmt(0x0096CC90, "CSimpleHTML::AddText(char const*, HTML_TEXT_TYPE, unsigned int)", 0); + set_func_cmt(0x0096D090, "CSimpleHTML::ClearContent()", 0); + set_func_cmt(0x0096D170, "CSimpleHTML::ParseP(XMLNode const*, HTML_TEXT_TYPE, CStatus*)", 0); + set_func_cmt(0x0096D740, "CSimpleHTML::ParseBODY(XMLNode const*, CStatus*)", 0); + set_func_cmt(0x0096D890, "CSimpleHTML::SetText(char const*, CStatus*)", 0); + set_func_cmt(0x0096DA40, "CSimpleHTML::LoadXML(XMLNode*, CStatus*)", 0); + set_func_cmt(0x00971A40, "CSimpleSlider::RegisterScriptMethods(lua_State*)", 0); + set_func_cmt(0x00972560, "CSimpleScrollFrame_SetVerticalScroll(lua_State*)", 0); + set_func_cmt(0x00977A70, "CSimpleButton_SetStateTexture(lua_State*, CSimpleButtonState, char const*)", 0); + set_func_cmt(0x00977C70, "CSimpleButton_SetNormalTexture(lua_State*)", 0); + set_func_cmt(0x00978900, "CSimpleHyperlinkedFrame::CSimpleHyperlinkedFrame(CSimpleFrame*)", 0); + set_func_cmt(0x00978B30, "CParticleEmitter2::SetModel(CM2Scene*, char const*)", 0); + set_func_cmt(0x00978BF0, "CParticleEmitter2::SetMaterial(CParticleMat const&, CTexture*)", 0); + set_func_cmt(0x00978C70, "CParticleEmitter2::SetTextureDimensions(unsigned int, unsigned int)", 0); + set_func_cmt(0x00978D00, "CParticleEmitter2::SetParticleStyle(int, int, float, int)", 0); + set_func_cmt(0x00978DD0, "CParticleEmitter2::SetFollowParams(float, float, float, float)", 0); + set_func_cmt(0x00978E30, "CParticleEmitter2::SetChooseRandomTexture(int)", 0); + set_func_cmt(0x009791E0, "CParticleEmitter2::Destroy()", 0); + set_func_cmt(0x0097A990, "CParticleEmitter2::SetParticleColors(CImVector const&, CImVector const&, CImVector const&)", 0); + set_func_cmt(0x0097AB10, "CParticleEmitter2::GetReplacementColors(CImVector&, CImVector&, CImVector&)", 0); + set_func_cmt(0x0097AC00, "CParticleEmitter2::SetTwinkleScale(CRange const&)", 0); + set_func_cmt(0x0097AEB0, "CParticleEmitter2::CreateChildEmittersFromModel(CM2Scene*, char const*)", 0); + set_func_cmt(0x0097D370, "CParticleEmitter2::DetermineIfSimple()", 0); + set_func_cmt(0x0097E150, "CParticleEmitter2::CParticleEmitter2()", 0); + set_func_cmt(0x0097F570, "CRibbonEmitter::SetDataEnabled(int)", 0); + set_func_cmt(0x0097F5F0, "CRibbonEmitter::SetTexSlot(unsigned int)", 0); + set_func_cmt(0x0097F610, "CRibbonEmitter::SetAbove(float)", 0); + set_func_cmt(0x0097F620, "CRibbonEmitter::SetBelow(float)", 0); + set_func_cmt(0x0097F630, "CRibbonEmitter::SetGravity(float)", 0); + set_func_cmt(0x0097F940, "CRibbonEmitter::SetPos(C44Matrix const&, C3Vector const&, C44Matrix const*)", 0); + set_func_cmt(0x0097FB60, "CRibbonEmitter::SetColor(float, float, float)", 0); + set_func_cmt(0x0097FBA0, "CRibbonEmitter::SetAlpha(float)", 0); + set_func_cmt(0x00980090, "CRibbonEmitter::Update(float, int)", 0); + set_func_cmt(0x00980630, "CRibbonEmitter::CRibbonEmitter()", 0); + set_func_cmt(0x009808A0, "CRibbonEmitter::Initialize(float, float, CImVector const&, TSGrowableArray const&, TSGrowableArray const&, TSGrowableArray const&, CAaRect const&, unsigned int, unsigned int)", 0); + set_func_cmt(0x00981310, "CPlaneParticleEmitter::CPlaneParticleEmitter()", 0); + set_func_cmt(0x009813F0, "CSphereParticleEmitter::CSphereParticleEmitter()", 0); + set_func_cmt(0x00981500, "CSplineParticleEmitter::SetSpline(C3Vector const*, unsigned int)", 0); + set_func_cmt(0x009820F0, "CSplineParticleEmitter::CSplineParticleEmitter()", 0); + set_func_cmt(0x00982460, "C4Quaternion::Slerp(float, C4Quaternion const&, C4Quaternion const&)", 0); + set_func_cmt(0x00982630, "C4Quaternion::Nlerp(float, C4Quaternion const&, C4Quaternion const&)", 0); + set_func_cmt(0x00982970, "C3Vector::C3Vector(CImVector const&)", 0); + set_func_cmt(0x00984C90, "C4Vector::C4Vector(CImVector const&)", 0); + set_func_cmt(0x009A8300, "SRP6_Client::BeginAuthentication(char const*, char const*)", 0); + set_func_cmt(0x009A83E0, "SRP6_Client::CalculateProof(unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char const*, unsigned int, SRP6_Random&)", 0); + set_func_cmt(0x009A88C0, "SRP6_Client::VerifyServerProof(unsigned char const*, unsigned int)", 0); + set_func_cmt(0x009A8980, "SRP6_Random::SRP6_Random(void const*, unsigned int)", 0); + set_func_cmt(0x009A89F0, "SRP6_Random::GenerateRandomBytes(unsigned char*, unsigned int)", 0); + set_func_cmt(0x009A8AA0, "BigIntegerFromInt(unsigned int)", 0); + set_func_cmt(0x009A8AD0, "BigIntegerFromBytes(unsigned char const*, int)", 0); + set_func_cmt(0x009A8B00, "BigIntegerToBytes(void*, unsigned char*, unsigned int)", 0); + set_func_cmt(0x009A8B40, "BigIntegerCmp(void*, void*)", 0); + set_func_cmt(0x009A8B60, "BigIntegerCmpInt(void*, unsigned int)", 0); + set_func_cmt(0x009A8BA0, "BigIntegerAdd(void*, void*, void*)", 0); + set_func_cmt(0x009A8BC0, "BigIntegerAddInt(void*, void*, unsigned int)", 0); + set_func_cmt(0x009A8C00, "BigIntegerSub(void*, void*, void*)", 0); + set_func_cmt(0x009A8C20, "BigIntegerMul(void*, void*, void*)", 0); + set_func_cmt(0x009A8C40, "BigIntegerMod(void*, void*, void*)", 0); + set_func_cmt(0x009A8C60, "BigIntegerModExp(void*, void*, void*, void*)", 0); + set_func_cmt(0x009A8C80, "BigIntegerFree(void*)", 0); + set_func_cmt(0x009A8C90, "BigIntegerBitLen(void*)", 0); } diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index 52664cb..6a705f5 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -11,8 +11,10 @@ static import_symbols() { set_name(0x00401130, "CDataStore__Finalize"); set_name(0x00401200, "PatchFiles__qsortpatchfiles"); set_name(0x00401520, "MovementInit"); + set_name(0x00401B00, "CCommand_ReloadUI"); set_name(0x00402670, "AsyncFileReadThreadSleepCallback"); set_name(0x00402690, "AsyncFileReadHandlerTimeoutCallback"); + set_name(0x004026B0, "AsyncFileInitialize"); set_name(0x00402B20, "SetPaths"); set_name(0x00403200, "TimingMethodCallback"); set_name(0x004032A0, "CCommand_TimingInfo"); @@ -102,6 +104,7 @@ static import_symbols() { set_name(0x004281D0, "Blizzard__File__IsDirectory"); set_name(0x004281F0, "Blizzard__File__IsFile"); set_name(0x00428210, "Blizzard__File__SimpleGlob"); + set_name(0x00428300, "WowConnection__AddRef"); set_name(0x00428500, "Blizzard__String__FindFilename"); set_name(0x00428640, "Blizzard__String__FirstPathSeparator"); set_name(0x00428670, "Blizzard__String__Copy"); @@ -186,6 +189,32 @@ static import_symbols() { set_name(0x00461F70, "OsFileGetDownloadFolder"); set_name(0x00461FA0, "OsCreateFile"); set_name(0x00462000, "OsFileList"); + set_name(0x00465450, "ClientConnection__destructor"); + set_name(0x004666D0, "WowConnection__SetResponse"); + set_name(0x004667F0, "WowConnection__SetType"); + set_name(0x00466820, "WowConnection__SetEncryption"); + set_name(0x004669D0, "WowConnection__Init"); + set_name(0x00466B50, "WowConnection__Disconnect"); + set_name(0x00466BF0, "WowConnection__SetEncryptionKey"); + set_name(0x00466DE0, "WowConnection__CloseSocket"); + set_name(0x00466F00, "WowConnection__DoStreamReads"); + set_name(0x00467270, "WowConnection__WowConnection"); + set_name(0x00467330, "WowConnection__WowConnection@2"); + set_name(0x004673C0, "WowConnection__destructor"); + set_name(0x004675F0, "WowConnection__Send"); + set_name(0x00467990, "WowConnection__SendRaw"); + set_name(0x00467BA0, "WowConnection__DoMessageReads"); + set_name(0x00468200, "WowConnection__Release"); + set_name(0x00468250, "WowConnection__DoDisconnect"); + set_name(0x00468390, "WowConnection__CheckConnect"); + set_name(0x00468580, "WowConnection__CheckAccept"); + set_name(0x00468790, "WowConnection__DoWrites"); + set_name(0x00468A90, "WowConnection__DoReads"); + set_name(0x00468B30, "WowConnection__DoExceptions"); + set_name(0x00468BA0, "WowConnection__StartConnect"); + set_name(0x00468D20, "WowConnection__Connect"); + set_name(0x00468D90, "WowConnection__InitOsNet"); + set_name(0x00468E50, "WowConnection__Connect@2"); set_name(0x0047ADD0, "nullsub_2"); set_name(0x0047ADE0, "CDataStore__GetBufferParams"); set_name(0x0047AE10, "CDataStore__DetachBuffer"); @@ -289,12 +318,18 @@ static import_symbols() { set_name(0x00481100, "IEvtTimerDispatch"); set_name(0x00481290, "IEvtTimerKill"); set_name(0x00481390, "IEvtTimerSet"); + set_name(0x00481590, "CSimpleTexture__SetTexture"); + set_name(0x00481620, "CSimpleTexture__SetBlendMode"); + set_name(0x00481640, "CSimpleTexture__SetTexCoord"); set_name(0x004829D0, "GxBufLock"); set_name(0x004829F0, "GxBufUnlock"); set_name(0x00482A20, "GxBufStream"); set_name(0x00482A40, "GxDraw"); set_name(0x00482C20, "CSimpleRegion__Hide"); + set_name(0x004831D0, "CSimpleTexture__SetTexCoord@2"); set_name(0x00483910, "CSimpleFontString__SetText"); + set_name(0x00484470, "CSimpleTexture__CSimpleTexture"); + set_name(0x00485F40, "CSimpleTexture__LoadXML"); set_name(0x00487A10, "CSimpleRegion__SetVertexColor"); set_name(0x00487AB0, "CSimpleRegion__GetVertexColor"); set_name(0x00487BF0, "CSimpleRegion__HideThis"); @@ -304,16 +339,70 @@ static import_symbols() { set_name(0x004880E0, "CSimpleRegion__CSimpleRegion"); set_name(0x004881D0, "CSimpleRegion__destructor"); set_name(0x00488310, "CScriptRegion__CScriptRegion"); + set_name(0x00488CF0, "CLayoutFrame__IsResizePending"); + set_name(0x00488D00, "CLayoutFrame__GetHeight"); + set_name(0x00489230, "CLayoutFrame__GetRect"); + set_name(0x00489330, "CLayoutFrame__Top"); + set_name(0x004893C0, "CLayoutFrame__CalculateRect"); + set_name(0x00489570, "CLayoutFrame__OnFrameResize"); + set_name(0x004896C0, "CLayoutFrame__SetProtectFlag"); set_name(0x004898B0, "CLayoutFrame__ResizePending"); + set_name(0x00489980, "CLayoutFrame__CLayoutFrame"); + set_name(0x00489C30, "CLayoutFrame__RegisterResize"); + set_name(0x00489D70, "CLayoutFrame__UnregisterResize"); + set_name(0x00489DE0, "CLayoutFrame__Resize"); + set_name(0x00489E90, "CLayoutFrame__SetLayoutScale"); + set_name(0x0048A1D0, "CLayoutFrame__OnFrameSizeChanged"); + set_name(0x0048A260, "CLayoutFrame__SetPoint"); + set_name(0x0048A510, "CLayoutFrame__ClearAllPoints"); + set_name(0x0048A520, "CLayoutFrame__SetDeferredResize"); + set_name(0x0048B130, "CLayoutFrame__DestroyLayout"); set_name(0x0048B5F0, "CScriptObject__GetScriptObjectByName"); + set_name(0x0048C1C0, "CSimpleTexture_SetVertexColor"); + set_name(0x0048C3E0, "CSimpleTexture_SetAlpha"); set_name(0x0048D800, "CSimpleFontString_SetFormattedText"); + set_name(0x0048E170, "CSimpleTexture_SetTexCoord"); + set_name(0x0048E680, "CSimpleFrame__GetScriptByName"); + set_name(0x0048E9A0, "CSimpleFrame__Raise"); set_name(0x0048EA10, "CSimpleFrame__SetFrameAlpha"); + set_name(0x0048EA80, "CSimpleFrame__UnregisterForEvents"); set_name(0x0048F580, "CSimpleFrame__SetFrameScale"); set_name(0x0048F5D0, "CSimpleFrame__SetFrameDepth"); + set_name(0x0048F6A0, "CSimpleFrame__EnableEvent"); + set_name(0x0048F890, "CSimpleFrame__GetHitRect"); + set_name(0x0048FA20, "CSimpleFrame__OnFrameSizeChanged"); + set_name(0x0048FEA0, "CSimpleFrame__NotifyScrollParent"); + set_name(0x00490270, "CSimpleFrame__NotifyDrawLayerChanged"); + set_name(0x00490330, "CSimpleFrame__OnFrameSizeChanged@2"); + set_name(0x00490410, "CSimpleFrame__PostLoadXML"); + set_name(0x004905A0, "CSimpleFrame__SetBackdrop"); + set_name(0x00490770, "CSimpleFrame__OnLayerUpdate"); + set_name(0x00490840, "CSimpleFrame__OnFrameRender"); + set_name(0x004908A0, "CSimpleFrame__OnScreenSizeChanged"); + set_name(0x00490F60, "CSimpleFrame__SetBeingScrolled"); + set_name(0x00491160, "CSimpleFrame__UnparentFrame"); + set_name(0x004911B0, "CSimpleFrame__SetParent"); + set_name(0x004913C0, "CSimpleFrame__GetBoundsRect"); + set_name(0x004915A0, "CSimpleFrame__UpdateScale"); + set_name(0x00491830, "CSimpleFrame__HideThis"); + set_name(0x004918F0, "CSimpleFrame__ShowThis"); + set_name(0x00491E00, "CSimpleFrame__OnFrameRender@2"); + set_name(0x004922F0, "CSimpleFrame__CSimpleFrame"); + set_name(0x004932C0, "CSimpleFrame__LoadXML"); set_name(0x00493BF0, "GxCapsWindowSizeInScreenCoords"); + set_name(0x00493E00, "CSimpleTop__RoundToPixelHeight"); + set_name(0x00493F30, "CSimpleTop__HideFrame"); + set_name(0x004945A0, "CSimpleTop__OnMouseMove"); set_name(0x00494EE0, "CFrameStrata__BuildBatches"); set_name(0x00494F30, "CFrameStrata__RenderBatch"); + set_name(0x00494FA0, "CSimpleTop__UnregisterFrame"); set_name(0x00495410, "CSimpleTop__OnLayerRender"); + set_name(0x004955E0, "CSimpleTop__OnDisplaySizeChanged"); + set_name(0x00495880, "CSimpleTop__RegisterForEvent"); + set_name(0x004959F0, "CSimpleTop__EnableEvents"); + set_name(0x00495EB0, "CSimpleTop__CSimpleTop"); + set_name(0x004960D0, "CSimpleTop__ShowFrame"); + set_name(0x0049E540, "CSimpleFrame__RegisterScriptMethods"); set_name(0x0049F9E0, "CSimpleFrame_SetAlpha"); set_name(0x004A2630, "CBackdropGenerator__SetBorderVertexColor"); set_name(0x004A2780, "CBackdropGenerator__LoadXML"); @@ -355,8 +444,16 @@ static import_symbols() { set_name(0x004B9B20, "AsyncFileReadPollHandler"); set_name(0x004B9C60, "AsyncFileReadAddPollHandler"); set_name(0x004B9D20, "AsyncFileReadAddStatusHandler"); + set_name(0x004B9DE0, "AsyncFileReadDestroyObject"); + set_name(0x004B9EA0, "AsyncFileReadCancel"); + set_name(0x004BA060, "AsyncFileReadWait"); + set_name(0x004BA170, "AsyncFileReadAllocObject"); + set_name(0x004BA3D0, "AsyncFileReadLinkObject"); + set_name(0x004BA680, "AsyncFileReadThread"); set_name(0x004BAA40, "AsyncFileReadInitialize"); + set_name(0x004BAB50, "AsyncFileReadObject"); set_name(0x004BAD80, "AsyncFileReadIsReading"); + set_name(0x004BAE10, "AsyncFileReadWaitAll"); set_name(0x004BD9D0, "TextBlockGetFontPtr"); set_name(0x004BDAA0, "TextBlockCreate"); set_name(0x004BDBF0, "TextBlockSetStringPos"); @@ -451,7 +548,9 @@ static import_symbols() { set_name(0x004DDC20, "Script_GetExpansionLevel"); set_name(0x004DE4D0, "RealmListRegisterScriptFunctions"); set_name(0x004DE500, "RealmListUnregisterScriptFunctions"); + set_name(0x004DE960, "CRealmList__SetPreferredInfo"); set_name(0x004DF580, "CRealmList__Initialize"); + set_name(0x004DF710, "CRealmList__UpdateList"); set_name(0x004DFD30, "CharacterCreateUnregisterScriptFunctions"); set_name(0x004E2570, "CharSelectRegisterScriptFunctions"); set_name(0x004E25A0, "CharSelectUnregisterScriptFunctions"); @@ -467,6 +566,15 @@ static import_symbols() { set_name(0x004E53A0, "CGlueMgr__PatchDownloadCancel"); set_name(0x004E5420, "CGlueMgr__PatchFailed"); set_name(0x004E54D0, "CGlueMgr__PatchDownloadIdle"); + set_name(0x004E5ED0, "CSimpleModelFFX__SetModel"); + set_name(0x004E5F00, "CSimpleModelFFX__LoadXML"); + set_name(0x004E5F70, "CSimpleModelFFX__CSimpleModelFFX"); + set_name(0x004E6190, "CSimpleModelFFX__Render"); + set_name(0x004E6300, "CSimpleModelFFX__Create"); + set_name(0x004E6330, "CSimpleModelFFX__OnFrameRender"); + set_name(0x004E6BE0, "CSimpleModelFFX_ResetLights"); + set_name(0x004E6C60, "CSimpleModelFFX_AddLight"); + set_name(0x004E6F60, "CSimpleModelFFX__CreateScriptMetaTable"); set_name(0x004F4500, "CPassenger__GetRawPosition"); set_name(0x004F5960, "CGWorldFrame__GetActiveCamera"); set_name(0x004F5980, "CGWorldFrame__SendObjectTrackEvent"); @@ -474,6 +582,7 @@ static import_symbols() { set_name(0x004F5A90, "CGWorldFrame__OnFrameSizeChanged"); set_name(0x004F5C10, "CGWorldFrame__OnLayerCursorExit"); set_name(0x004F5D80, "CGWorldFrame__SetNamePlateUpdate"); + set_name(0x004F5E20, "CM2Model__GetBoundingBox"); set_name(0x004F6680, "CGWorldFrame__GetCameraFacing"); set_name(0x004F66C0, "CGWorldFrame__OnLayerTrackTerrain"); set_name(0x004F6C10, "CGWorldFrame__OnLayerMouseDown"); @@ -2541,6 +2650,10 @@ static import_symbols() { set_name(0x00632DB0, "NetClient__HandleIdle"); set_name(0x00632E00, "NetClient__RedirectHandler"); set_name(0x00633330, "NetClient__WCMessageReady"); + set_name(0x00633440, "NETEVENTQUEUE__NETEVENTQUEUE"); + set_name(0x006334F0, "NETEVENTQUEUE__Poll"); + set_name(0x00633650, "NETEVENTQUEUE__AddEvent"); + set_name(0x00633730, "NETEVENTQUEUE__destructor"); set_name(0x006337D0, "StaticDBLoadAll"); set_name(0x00634C60, "ClientDBShutdown"); set_name(0x00634E00, "ClientDBInitialize"); @@ -2816,8 +2929,9 @@ static import_symbols() { set_name(0x006AFF10, "CBLPFile__Open"); set_name(0x006AFFD0, "CBLPFile__LockChain2"); set_name(0x006B0190, "ClientServices__LoadCDKey"); + set_name(0x006B0250, "ClientConnection__ClientConnection"); set_name(0x006B0850, "ClientConnection__Cleanup"); - set_name(0x006B0940, "ClientServices__Disconnect"); + set_name(0x006B0940, "ClientConnection__Disconnect"); set_name(0x006B0960, "nullsub_154"); set_name(0x006B0970, "ClientServices__Connection"); set_name(0x006B0990, "ClientServices__LoginConnection"); @@ -2853,8 +2967,11 @@ static import_symbols() { set_name(0x006B1080, "ClientServices__GetCharacterClass"); set_name(0x006B1090, "ClientServices__GetCharacterSex"); set_name(0x006B10A0, "ClientServices__GetCharacterLevel"); - set_name(0x006B1100, "ClientServices__PollStatus"); + set_name(0x006B1100, "ClientConnection__PollStatus"); set_name(0x006B1200, "ClientConnection__Cancel"); + set_name(0x006B1260, "ClientConnection__HandleConnect"); + set_name(0x006B1390, "ClientConnection__Connect"); + set_name(0x006B14C0, "ClientConnection__GetCharacterList"); set_name(0x006B1620, "ClientServices__RequestCharacterCreate"); set_name(0x006B1840, "ClientServices__CharacterSetInGame"); set_name(0x006B1930, "ClientServices__CharacterLogout"); @@ -2925,7 +3042,28 @@ static import_symbols() { set_name(0x006BFDA0, "GxuUpdateSingleColorTexture"); set_name(0x006BFE00, "GxuXformCreateProjection_SG"); set_name(0x006BFE60, "GxuXformCreateLookAtSgCompat"); + set_name(0x006C5E90, "CGxString__WriteGeometry"); + set_name(0x006C6190, "CGxString__InitializeViewTranslation"); + set_name(0x006C6410, "CGxString__SetStringPosition"); + set_name(0x006C6A70, "CGxString__AddHyperlinkParseInfo"); + set_name(0x006C6B90, "CGxString__ClearInstanceData"); + set_name(0x006C6C00, "CGxString__Tick"); + set_name(0x006C6CD0, "CGxString__InitializeTextLine"); + set_name(0x006C7440, "CGxString__AddShadow"); + set_name(0x006C7480, "CGxString__CheckGeometry"); + set_name(0x006C75E0, "CGxString__Recycle"); + set_name(0x006C7760, "CGxString__destructor"); + set_name(0x006C78F0, "CGxString__SetGradient"); + set_name(0x006C7AA0, "CGxString__GetNewString"); + set_name(0x006C7B10, "CGxString__CreateGeometry"); set_name(0x006C8CC0, "IGxuFontGlyphRenderGlyph"); + set_name(0x006CA180, "SHA1__Process"); + set_name(0x006CA270, "SHA1__Finish"); + set_name(0x006CA330, "SHA1_Transform"); + set_name(0x006CB5F0, "SHA1_Init"); + set_name(0x006CB630, "SHA1_Update"); + set_name(0x006CB6F0, "SHA1_Final"); + set_name(0x006CB7C0, "SHA1_InterleaveHash"); set_name(0x006CEDD0, "CGPlayer_C__ClearLootingObject"); set_name(0x006CF290, "CGPlayer_C__GetPendingMovie"); set_name(0x006F0C30, "MovementDestroy"); @@ -3140,7 +3278,9 @@ static import_symbols() { set_name(0x00777940, "SRgnDelete"); set_name(0x00777980, "SRgnCreate"); set_name(0x00779340, "MD5Init"); + set_name(0x00779A30, "MD5Update"); set_name(0x00779AE0, "MD5Final"); + set_name(0x0077AAA0, "SHA1__Prepare"); set_name(0x0077AC80, "TSFixedArray_uint32_t_Set"); set_name(0x0077ACF0, "BigBuffer__operator_index"); set_name(0x0077AD10, "Compare"); @@ -3178,6 +3318,34 @@ static import_symbols() { set_name(0x0077C980, "SBigPowMod"); set_name(0x0077EC90, "World__SetLoadProgressCallback"); set_name(0x00781500, "World__Preload"); + set_name(0x007816F0, "DayNight__Update"); + set_name(0x007AE300, "CMapObj__Init"); + set_name(0x007B0580, "CMapObj__CMapObj"); + set_name(0x007B0CC0, "CMapObj__Create"); + set_name(0x007B1270, "CDetailDoodad__UpdateAlphaRampTexture"); + set_name(0x007B15D0, "CDetailDoodad__InitializeShaderConstants"); + set_name(0x007B2760, "CDetailDoodad__Initialize"); + set_name(0x007B2D30, "CDetailDoodad__InitializeRenderState"); + set_name(0x007B5020, "TSList__LinkToHead"); + set_name(0x007BF8B0, "CMap__LoadWdt"); + set_name(0x007BFCE0, "CMap__Load"); + set_name(0x007BFF20, "CMap__AllocMapObj"); + set_name(0x007C08A0, "CMap__AllocLight"); + set_name(0x007C1150, "CMapDoodadDef__SelectLights"); + set_name(0x007C1730, "CMapEntity__SelectLights"); + set_name(0x007C65A0, "CMapChunk__UpdateLights"); + set_name(0x007D7260, "CMapBaseObj__CMapBaseObj"); + set_name(0x007D80C0, "CMapObj__Read"); + set_name(0x007D9B10, "CMapLight__CMapLight"); + set_name(0x007D9BD0, "CMap__CreateLight"); + set_name(0x007D9C80, "CMap__UpdateLightBounds"); + set_name(0x007D9D50, "CMap__EnableLight"); + set_name(0x007D9D70, "CMap__DestroyLight"); + set_name(0x007D9DE0, "CMap__LinkLightToChunks"); + set_name(0x007D9F90, "CMap__LinkLightToMapObjDefs"); + set_name(0x007DA100, "CMap__UpdateLight"); + set_name(0x007DA420, "WardenClient_Destroy"); + set_name(0x007DA8C0, "WardenClient_Initialize"); set_name(0x007DAB80, "Script_VoiceEnumerateOutputDevices"); set_name(0x007DAC40, "Script_VoiceEnumerateCaptureDevices"); set_name(0x007DACF0, "Script_VoiceSelectOutputDevice"); @@ -3194,6 +3362,19 @@ static import_symbols() { set_name(0x007DEEF0, "Script_GetVoiceSessionMemberInfoBySessionID"); set_name(0x007DF0B0, "Script_UnitIsTalking"); set_name(0x007E1030, "IsRussian"); + set_name(0x007ECD00, "DayNight__CalcFogRate"); + set_name(0x007ECEC0, "DayNight__SetOverrideLightParamsID"); + set_name(0x007ECEE0, "DayNight__ClearOverrideLightParamsID"); + set_name(0x007ECEF0, "DayNightGetInfo"); + set_name(0x007ED3B0, "DayNight__InterpTable"); + set_name(0x007ED820, "DayNight__ClearOverrideFog"); + set_name(0x007ED870, "DayNight__SetOverrideFog"); + set_name(0x007EEA90, "DayNight__SetDirection"); + set_name(0x007EECC0, "DayNight__SetPlanets"); + set_name(0x007F16F0, "DayNight__UpdateFog"); + set_name(0x007F2790, "DayNightInitialize"); + set_name(0x007F3230, "DayNight__SetColors"); + set_name(0x007F3920, "DayNight__UpdateLighting"); set_name(0x007F4990, "MinimapSetCorpsePOI"); set_name(0x007FC9F0, "SpellVisualsClear"); set_name(0x007FD620, "Spell_C_IsTargeting"); @@ -3213,6 +3394,7 @@ static import_symbols() { set_name(0x0080DC00, "Script_SpellTargetUnit"); set_name(0x00812530, "FrameXML_LoadXML"); set_name(0x00812840, "FrameXML_RegisterLoadProgressCallback"); + set_name(0x00812B90, "FrameXML_FreeHashNodes"); set_name(0x00812FA0, "FrameXML_CreateFrame"); set_name(0x00813D20, "FrameXML_RegisterFactory"); set_name(0x00813DF0, "FrameXML_RegisterDefault"); @@ -3244,10 +3426,150 @@ static import_symbols() { set_name(0x0081BAB0, "Script_GetNumFrames"); set_name(0x0081BB20, "Script_CreateFrame"); set_name(0x0081BE70, "Script_GetFramesRegisteredForEvent"); + set_name(0x0081BFA0, "CM2Cache__BeginThread"); + set_name(0x0081BFD0, "CM2Cache__WaitThread"); + set_name(0x0081BFE0, "CM2Cache__ThreadProc"); set_name(0x0081C0B0, "M2GetCacheFlags"); set_name(0x0081C0C0, "M2SetCacheFlags"); + set_name(0x0081C0D0, "CM2Cache__Initialize"); + set_name(0x0081C290, "CM2Cache__GarbageCollect"); + set_name(0x0081C300, "CM2Cache__Destroy"); + set_name(0x0081C390, "CM2Cache__CreateShared"); set_name(0x0081C6E0, "M2Initialize"); + set_name(0x0081C790, "CM2Cache__UpdateShared"); + set_name(0x0081C840, "CM2Cache__LinkToSharedUpdateList"); + set_name(0x0081C900, "CM2Cache__CM2Cache"); + set_name(0x0081C9C0, "CM2Scene__AdvanceTime"); + set_name(0x0081CE70, "CM2Scene__AnimateThread"); + set_name(0x0081E400, "CM2Scene__SelectLights"); + set_name(0x0081EA90, "CM2Scene__SortDoodadProxy"); + set_name(0x0081EAD0, "CM2Scene__SortOpaqueGeoBatches"); + set_name(0x0081ED10, "CM2Scene__SortOpaqueRibbons"); + set_name(0x0081EDF0, "CM2Scene__SortOpaqueParticles"); + set_name(0x0081EEA0, "CM2Scene__SortOpaque"); + set_name(0x0081EF30, "CM2Scene__SortTransparent"); + set_name(0x0081F0E0, "CM2Scene__SortAdditiveParticles"); + set_name(0x0081F1D0, "CM2Scene__ComputeElementShaders"); + set_name(0x0081F330, "CM2SceneRender__CM2SceneRender"); + set_name(0x0081F450, "CM2SceneRender__SetupTextures"); + set_name(0x0081F700, "CM2SceneRender__SetBatchVertices"); + set_name(0x0081F8F0, "CM2Scene__CreateModel"); + set_name(0x0081F970, "CM2Scene__DuplicateModel"); + set_name(0x0081F9E0, "CM2Scene__SortAdditiveParticleElements"); + set_name(0x0081FB10, "CM2SceneRender__SetupLighting"); + set_name(0x0081FE90, "CM2SceneRender__SetupMaterial"); + set_name(0x008203B0, "CM2SceneRender__DrawBatch"); + set_name(0x00820720, "CM2SceneRender__DrawBatchProj"); + set_name(0x00820AE0, "CM2SceneRender__DrawBatchDoodad"); + set_name(0x00820F40, "CM2SceneRender__DrawRibbon"); + set_name(0x008214E0, "CM2SceneRender__DrawParticle"); + set_name(0x008216C0, "CM2Scene__CM2Scene"); + set_name(0x00821850, "CM2Scene__destructor"); + set_name(0x00821A20, "CM2Scene__Animate"); + set_name(0x00823040, "CM2Scene__Release"); + set_name(0x008230D0, "CM2SceneRender__DrawCallback"); + set_name(0x00823130, "CM2SceneRender__Draw"); + set_name(0x00823CB0, "CM2Scene__Draw"); + set_name(0x00823ED0, "CM2Model__WaitForLoad"); + set_name(0x00823F10, "CM2Model__SetAnimating"); + set_name(0x00823FE0, "CM2Model__SetSequenceCallback"); + set_name(0x00824060, "CM2Model__SetEventCallback"); set_name(0x00824170, "CM2Model__GetCameraByIndex"); + set_name(0x008244F0, "CM2Model__LinkToCallbackListTail"); + set_name(0x00824510, "CM2Model__UnlinkFromCallbackList"); + set_name(0x00824550, "CM2Model__IsBatchDoodadCompatible"); + set_name(0x00824ED0, "CM2Model__Release"); + set_name(0x00824F00, "CM2Model__IsLoaded"); + set_name(0x00824FC0, "CM2Model__IsDrawable"); + set_name(0x00825170, "CM2Model__UpdateLoaded"); + set_name(0x008251B0, "CM2Model__SetLoadedCallback"); + set_name(0x008251D0, "CM2Model__SetWorldTransform"); + set_name(0x00825D70, "CM2Model__UnoptimizeVisibleGeometry"); + set_name(0x00826350, "CM2Model__SequenceFallbackById"); + set_name(0x00826B00, "CM2Model__SetupBoneSequence"); + set_name(0x00826C40, "CM2Model__SetPrimaryBoneSequence"); + set_name(0x00826DD0, "CM2Model__SetSecondaryBoneSequence"); + set_name(0x00827560, "CM2Model__DetachAllChildrenById"); + set_name(0x00827960, "CM2Model__GetCameraById"); + set_name(0x008284D0, "CM2Model__FindKey"); + set_name(0x00828A00, "CM2Model__AnimateST"); + set_name(0x00828F90, "CM2Model__SetIndices"); + set_name(0x00829160, "CM2Model__SetVertices"); + set_name(0x00829AA0, "CM2Model__RenderModelBatchesForProjectedTexture"); + set_name(0x0082BE60, "CM2Model__CM2Model"); + set_name(0x0082C970, "CM2Model__OptimizeVisibleGeometry"); + set_name(0x0082D2F0, "CM2Model__AnimateParticlesMT"); + set_name(0x0082D6F0, "CM2Model__AnimateTextureTransformsMT"); + set_name(0x0082D910, "CM2Model__SetVerticesMultiSample"); + set_name(0x0082DD80, "CM2Model__SetWorldTransform@2"); + set_name(0x0082E140, "CM2Model__AnimateMTSimple"); + set_name(0x0082E550, "CM2Model__AnimateAttachmentsMT"); + set_name(0x0082E790, "CM2Model__ProcessSequenceCallback"); + set_name(0x0082EC30, "CM2Model__GetCollisionFacets"); + set_name(0x0082F0F0, "CM2Model__AnimateMT"); + set_name(0x008309C0, "CM2Model__AnimateParticleST"); + set_name(0x00830DC0, "CM2Model__Animate"); + set_name(0x00830FB0, "CM2Model__ProcessEventCallbacks"); + set_name(0x00831410, "CM2Model__GetAttachmentWorldTransform"); + set_name(0x00831630, "CM2Model__AttachToParent"); + set_name(0x00831AF0, "CM2Model__SetupLighting"); + set_name(0x00831C30, "CM2Model__SetBoneSequenceDeferred"); + set_name(0x00831EC0, "CM2Model__CancelDeferredSequences"); + set_name(0x00831FC0, "CM2Model__CallSequenceCallback"); + set_name(0x008321E0, "CM2Model__CallCallbacks"); + set_name(0x00832260, "CM2Model__ProcessCallbacks"); + set_name(0x00832450, "CM2Model__ProcessCallbacksRecursive"); + set_name(0x00832640, "CM2Model__destructor"); + set_name(0x00832840, "CM2Model__UnsetBoneSequence"); + set_name(0x00832AB0, "CM2Model__SetBoneSequence"); + set_name(0x00832EA0, "CM2Model__InitializeLoaded"); + set_name(0x00834540, "CM2Model__AttachToScene"); + set_name(0x00834630, "CM2Model__AttachToSceneRecursive"); + set_name(0x00834810, "CM2Model__Initialize"); + set_name(0x008348D0, "CM2Light__Initialize"); + set_name(0x00834900, "CM2Lighting__Initialize"); + set_name(0x00834940, "CM2Lighting__SetFog"); + set_name(0x00834990, "CM2Lighting__SetFog@2"); + set_name(0x008349E0, "CM2Lighting__GetPointLight"); + set_name(0x00834A40, "CM2Light__CM2Light"); + set_name(0x00834AB0, "CM2Light__destructor"); + set_name(0x00834AE0, "CM2Light__SetDirection"); + set_name(0x00834C70, "CM2Light__Link"); + set_name(0x00834D90, "CM2Lighting__AddAmbient"); + set_name(0x00834DC0, "CM2Lighting__AddDiffuse"); + set_name(0x00834F60, "CM2Lighting__AddLight"); + set_name(0x008350A0, "CM2Lighting__CameraSpace"); + set_name(0x00835280, "CM2Lighting__SetupSunlight"); + set_name(0x008353D0, "CM2Lighting__SetupGxLights"); + set_name(0x008355D0, "CM2Lighting__GetSunLight"); + set_name(0x00835640, "CM2Light__SetLightType"); + set_name(0x00835690, "CM2Light__SetPosition"); + set_name(0x008356F0, "CM2Light__SetVisible"); + set_name(0x00835970, "CM2Shared__AddRef"); + set_name(0x008359C0, "CM2Shared__CallbackWhenLoaded"); + set_name(0x00835A00, "CM2Shared__LoadFailedCallback"); + set_name(0x008360A0, "CM2Shared__SetIndices"); + set_name(0x008362B0, "CM2Shared__SetVertices"); + set_name(0x00836C90, "CM2Shared__GetEffect"); + set_name(0x00837250, "CM2Shared__ConvertTextureValuesToCombos"); + set_name(0x008374A0, "CM2Shared__AssignBatchTextureComboIndices"); + set_name(0x00837680, "CM2Shared__SubstituteSpecializedShaders"); + set_name(0x00837A40, "CM2Shared__InitializeSkinProfile"); + set_name(0x00838490, "CM2Shared__FinishLoadingSkinProfile"); + set_name(0x0083C5F0, "CM2Shared__CM2Shared"); + set_name(0x0083C6E0, "CM2Shared__InitLowPrioritySequence"); + set_name(0x0083CA90, "CM2Shared__FinishLoadingLowPrioritySequence"); + set_name(0x0083CB10, "CM2Shared__SkinProfileLoadedCallback"); + set_name(0x0083CB40, "CM2Shared__LoadSkinProfile"); + set_name(0x0083CC80, "CM2Shared__Initialize"); + set_name(0x0083D340, "CM2Shared__LoadSucceededCallback"); + set_name(0x0083D410, "CM2Shared__Load"); + set_name(0x0083D510, "CM2Shared__CancelAllDeferredSequences"); + set_name(0x0083D5B0, "CM2Shared__destructor"); + set_name(0x0083D840, "CM2Shared__LowPrioritySequenceLoadedCallback"); + set_name(0x0083D9F0, "CM2Shared__LowPrioritySequenceFailedCallback"); + set_name(0x0083DA10, "CM2Shared__LoadLowPrioritySequence"); + set_name(0x0083DC90, "CM2Shared__Release"); set_name(0x0084DBD0, "_lua_gettop"); set_name(0x0084DBF0, "_lua_settop"); set_name(0x0084DCC0, "_lua_insert"); @@ -3325,7 +3647,7 @@ static import_symbols() { set_name(0x0086D430, "OsTimeStartup"); set_name(0x0086D440, "OsTimeShutdown"); set_name(0x0086D6D0, "OsTlsGetValue"); - set_name(0x0086E200, "TSExplicitList_CGxBuf__LinkToTail"); + set_name(0x0086E200, "TSList__LinkToTail"); set_name(0x0086F5A0, "OsCallSetContext"); set_name(0x0086F5F0, "OsCallResetContext"); set_name(0x0086F760, "OsCallInitialize"); @@ -3333,11 +3655,83 @@ static import_symbols() { set_name(0x00872280, "OsClipboardGetString"); set_name(0x008722A0, "OsClipboardPutString"); set_name(0x008726F0, "IOsClipboardGetString"); + set_name(0x008727C0, "OsClipboardFreeString"); set_name(0x008727E0, "IOsClipboardPutString"); + set_name(0x008728C0, "CShaderEffect__InitFixedFuncPass"); + set_name(0x00872AD0, "CShaderEffect__SetUsePcfFiltering"); + set_name(0x00872B00, "CShaderEffect__UpdateWorldViewMatrix"); set_name(0x00872C10, "CShaderEffect__UpdateProjMatrix"); + set_name(0x00872CE0, "CShaderEffect__InitShaderSystem"); + set_name(0x00872D30, "CShaderEffect__InitEffect"); + set_name(0x00872F90, "CShaderEffect__SetCurrent"); + set_name(0x00873060, "CShaderEffect__SetShaders"); + set_name(0x00873160, "CShaderEffect__SetDefaultShaders"); + set_name(0x00873210, "CShaderEffect__SetFogParams"); + set_name(0x00873390, "CShaderEffect__SetFogEnabled"); + set_name(0x00873480, "CShaderEffect__SetTexMtx_Identity"); + set_name(0x00873550, "CShaderEffect__SetTexMtx_SphereMap"); + set_name(0x00873620, "CShaderEffect__SetTexMtx"); + set_name(0x00873900, "CShaderEffect__SetDiffuse"); + set_name(0x00873A50, "CShaderEffect__SetEmissive"); + set_name(0x00873BA0, "CShaderEffect__SetAlphaRef"); + set_name(0x00873CA0, "CShaderEffect__SetLocalLighting"); + set_name(0x00873FE0, "CShadowCache__NotifyTexturesRecreate"); + set_name(0x008744E0, "CShadowCache__SetShadowMapGenericGlobal"); + set_name(0x008745D0, "CShadowCache__SetShadowMapGenericInterior"); + set_name(0x00876530, "CShaderEffectManager__GetEffect"); + set_name(0x00876BE0, "CShaderEffectManager__CreateEffect"); + set_name(0x00876CA0, "CShaderEffectManager__ParseEffectCallback"); + set_name(0x00876D90, "CShaderEffectManager__AddEffectFile"); set_name(0x008A1420, "stub_return_one_byte"); set_name(0x008C0360, "FFX__Destroy"); - set_name(0x008C8DE0, "GxDefaultApi"); + set_name(0x008C8DE0, "stub_return_int32_one"); + set_name(0x008CA0B0, "GruntLogin__Connected"); + set_name(0x008CA140, "GruntLogin__CantConnect"); + set_name(0x008CA260, "GruntLogin__GetVersionProof"); + set_name(0x008CA360, "GruntLogin__SetPinInfo"); + set_name(0x008CA400, "GruntLogin__SetTokenInfo"); + set_name(0x008CA450, "GruntLogin__ProveVersion"); + set_name(0x008CA4F0, "GruntLogin__NextSecurityState"); + set_name(0x008CA580, "GruntLogin__GetLogonMethod"); + set_name(0x008CA700, "GruntLogin__Reconnect"); + set_name(0x008CA730, "GruntLogin__GetRealmList"); + set_name(0x008CA740, "GruntLogin__Logon"); + set_name(0x008CA7F0, "GruntLogin__Wait"); + set_name(0x008CA880, "GruntLogin__EnterPIN"); + set_name(0x008CAC00, "GruntLogin__GetVersionChallenge"); + set_name(0x008CAC50, "GruntLogin__Init"); + set_name(0x008CACA0, "GruntLogin__GruntLogin"); + set_name(0x008CAD20, "GruntLogin__Logoff"); + set_name(0x008CAD40, "GruntLogin__SetMatrixInfo"); + set_name(0x008CB020, "GruntLogin__ReconnectResult"); + set_name(0x008CB160, "GruntLogin__LogonResult"); + set_name(0x008CBA40, "Grunt__ClientLink__Send"); + set_name(0x008CBA90, "Grunt__ClientLink__Shutdown"); + set_name(0x008CBAE0, "Grunt__ClientLink__Disconnect"); + set_name(0x008CBB10, "Grunt__ClientLink__SetState"); + set_name(0x008CBB40, "Grunt__ClientLink__Connect"); + set_name(0x008CC250, "Grunt__ClientLink__CmdRealmList"); + set_name(0x008CC3E0, "Grunt__ClientLink__CmdAuthLogonChallenge"); + set_name(0x008CC7A0, "Grunt__ClientLink__CmdAuthLogonProof"); + set_name(0x008CC980, "Grunt__ClientLink__CmdAuthReconnectChallenge"); + set_name(0x008CCA50, "Grunt__ClientLink__CmdAuthReconnectProof"); + set_name(0x008CCB40, "Grunt__ClientLink__CmdXferInitiate"); + set_name(0x008CCC20, "Grunt__ClientLink__CmdXferData"); + set_name(0x008CCCB0, "Grunt__ClientLink__WCConnected"); + set_name(0x008CCD40, "Grunt__ClientLink__WCDisconnected"); + set_name(0x008CCDA0, "Grunt__ClientLink__WCCantConnect"); + set_name(0x008CCE00, "Grunt__ClientLink__PackLogon"); + set_name(0x008CD710, "Grunt__ClientLink__WCDataReady"); + set_name(0x008CD7E0, "Grunt__ClientLink__LogonNewSession"); + set_name(0x008CD9F0, "Grunt__ClientLink__LogonStoredSession"); + set_name(0x008CE0F0, "Grunt__ClientLink__GetRealmList"); + set_name(0x008CE5C0, "Grunt__Timer__Insert"); + set_name(0x008CE720, "Grunt__ClientLink__ProveVersion"); + set_name(0x008CED90, "Grunt__Timer__Pump"); + set_name(0x008CF600, "Grunt__ClientLink__Call"); + set_name(0x008CF770, "Grunt__Timer__ThreadProc"); + set_name(0x008CF7A0, "Grunt__Timer__Timer"); + set_name(0x008CF800, "Grunt__ClientLink__ClientLink"); set_name(0x008E5250, "stub_return_zero4"); set_name(0x00936900, "stub_return_xor_eax"); set_name(0x0095BFB0, "ConsoleCommandHistoryDepth"); @@ -3391,6 +3785,91 @@ static import_symbols() { set_name(0x00961420, "CSimpleModel_GetFogFar"); set_name(0x00961470, "CSimpleModel_ClearFog"); set_name(0x009614B0, "CSimpleModel_SetGlow"); + set_name(0x00962F90, "CSimpleEditBox__DeleteSubstring"); + set_name(0x00963140, "CSimpleEditBox__HighlightText"); + set_name(0x00963740, "CSimpleEditBox__UpdateSizes"); + set_name(0x009650E0, "CSimpleEditBox__FontUpdated"); + set_name(0x009656D0, "CSimpleEditBox__OnFrameSizeChanged"); + set_name(0x00965960, "CSimpleEditBox__Insert"); + set_name(0x00965CE0, "CSimpleEditBox__Insert@2"); + set_name(0x00965ED0, "CSimpleEditBox__PasteFromClipboard"); + set_name(0x00965F20, "CSimpleEditBox__SetMultiLine"); + set_name(0x00966580, "CSimpleEditBox__SetText"); + set_name(0x00966FD0, "CSimpleEditBox__SetHistoryLines"); + set_name(0x00967290, "CSimpleEditBox__LoadXML"); + set_name(0x0096AFD0, "CSimpleScrollFrame__RunOnScrollRangeChangedScript"); + set_name(0x0096B060, "CSimpleScrollFrame__UnparentFrame"); + set_name(0x0096B1C0, "CSimpleScrollFrame__UpdateScrollChild"); + set_name(0x0096B210, "CSimpleScrollFrame__OnFrameSizeChanged"); + set_name(0x0096B2D0, "CSimpleScrollFrame__CSimpleScrollFrame"); + set_name(0x0096B3A0, "CSimpleScrollFrame__SetScrollChild"); + set_name(0x0096B480, "CSimpleScrollFrame__SetVerticalScroll"); + set_name(0x0096B4C0, "CSimpleScrollFrame__UpdateScrollChildRect"); + set_name(0x0096B5A0, "CSimpleScrollFrame__OnLayerUpdate"); + set_name(0x0096B610, "CSimpleScrollFrame__RenderScrollChild"); + set_name(0x0096B920, "CSimpleScrollFrame__LoadXML"); + set_name(0x0096B9A0, "CSimpleScrollFrame__OnFrameRender"); + set_name(0x0096B9D0, "CSimpleScrollFrame__GetBoundsRect"); + set_name(0x0096BBB0, "CSimpleSlider__RunOnMinMaxChangedScript"); + set_name(0x0096BE50, "CSimpleSlider__CSimpleSlider"); + set_name(0x0096BF00, "CSimpleSlider__IsA"); + set_name(0x0096C090, "CSimpleSlider__SetValue"); + set_name(0x0096C470, "CSimpleSlider__SetMinMaxValues"); + set_name(0x0096C750, "CSimpleHTML__FontUpdated"); + set_name(0x0096C820, "CSimpleHTML__CSimpleHTML"); + set_name(0x0096C960, "CSimpleHTML__IsA"); + set_name(0x0096C9E0, "CSimpleHTML__ParseIMG"); + set_name(0x0096CC90, "CSimpleHTML__AddText"); + set_name(0x0096D090, "CSimpleHTML__ClearContent"); + set_name(0x0096D170, "CSimpleHTML__ParseP"); + set_name(0x0096D740, "CSimpleHTML__ParseBODY"); + set_name(0x0096D890, "CSimpleHTML__SetText"); + set_name(0x0096DA40, "CSimpleHTML__LoadXML"); + set_name(0x00971A40, "CSimpleSlider__RegisterScriptMethods"); + set_name(0x00971D90, "CSimpleSlider_GetMinMaxValues"); + set_name(0x00971DF0, "CSimpleSlider_SetMinMaxValues"); + set_name(0x00971EB0, "CSimpleSlider_GetValue"); + set_name(0x00971F00, "CSimpleSlider_SetValue"); + set_name(0x00972560, "CSimpleScrollFrame_SetVerticalScroll"); + set_name(0x009750D0, "CSimpleHTML_SetText"); + set_name(0x00975E80, "CSimpleEditBox_SetText"); + set_name(0x00976080, "CSimpleEditBox_HighlightText"); + set_name(0x009771D0, "CSimpleButton_GetButtonState"); + set_name(0x00977A70, "CSimpleButton_SetStateTexture"); + set_name(0x00977C70, "CSimpleButton_SetNormalTexture"); + set_name(0x00978900, "CSimpleHyperlinkedFrame__CSimpleHyperlinkedFrame"); + set_name(0x00978B30, "CParticleEmitter2__SetModel"); + set_name(0x00978BF0, "CParticleEmitter2__SetMaterial"); + set_name(0x00978C70, "CParticleEmitter2__SetTextureDimensions"); + set_name(0x00978D00, "CParticleEmitter2__SetParticleStyle"); + set_name(0x00978DD0, "CParticleEmitter2__SetFollowParams"); + set_name(0x00978E30, "CParticleEmitter2__SetChooseRandomTexture"); + set_name(0x009791E0, "CParticleEmitter2__Destroy"); + set_name(0x0097A990, "CParticleEmitter2__SetParticleColors"); + set_name(0x0097AB10, "CParticleEmitter2__GetReplacementColors"); + set_name(0x0097AC00, "CParticleEmitter2__SetTwinkleScale"); + set_name(0x0097AEB0, "CParticleEmitter2__CreateChildEmittersFromModel"); + set_name(0x0097D370, "CParticleEmitter2__DetermineIfSimple"); + set_name(0x0097E150, "CParticleEmitter2__CParticleEmitter2"); + set_name(0x0097F570, "CRibbonEmitter__SetDataEnabled"); + set_name(0x0097F5F0, "CRibbonEmitter__SetTexSlot"); + set_name(0x0097F610, "CRibbonEmitter__SetAbove"); + set_name(0x0097F620, "CRibbonEmitter__SetBelow"); + set_name(0x0097F630, "CRibbonEmitter__SetGravity"); + set_name(0x0097F940, "CRibbonEmitter__SetPos"); + set_name(0x0097FB60, "CRibbonEmitter__SetColor"); + set_name(0x0097FBA0, "CRibbonEmitter__SetAlpha"); + set_name(0x00980090, "CRibbonEmitter__Update"); + set_name(0x00980630, "CRibbonEmitter__CRibbonEmitter"); + set_name(0x009808A0, "CRibbonEmitter__Initialize"); + set_name(0x00981310, "CPlaneParticleEmitter__CPlaneParticleEmitter"); + set_name(0x009813F0, "CSphereParticleEmitter__CSphereParticleEmitter"); + set_name(0x00981500, "CSplineParticleEmitter__SetSpline"); + set_name(0x009820F0, "CSplineParticleEmitter__CSplineParticleEmitter"); + set_name(0x00982460, "C4Quaternion__Slerp"); + set_name(0x00982630, "C4Quaternion__Nlerp"); + set_name(0x00982970, "C3Vector__C3Vector"); + set_name(0x00984C90, "C4Vector__C4Vector"); set_name(0x009858B0, "Script_PlaySound"); set_name(0x00985950, "Script_PlayMusic"); set_name(0x009859B0, "Script_PlaySoundFile"); @@ -3420,6 +3899,24 @@ static import_symbols() { set_name(0x009860E0, "SI2__StopGlueMusic"); set_name(0x00986D00, "SI2__PlayVocalErrorSound"); set_name(0x0098F040, "CGNamePlateFrame__SetCastBarValues"); + set_name(0x009A8300, "SRP6_Client__BeginAuthentication"); + set_name(0x009A83E0, "SRP6_Client__CalculateProof"); + set_name(0x009A88C0, "SRP6_Client__VerifyServerProof"); + set_name(0x009A8980, "SRP6_Random__SRP6_Random"); + set_name(0x009A89F0, "SRP6_Random__GenerateRandomBytes"); + set_name(0x009A8AA0, "BigIntegerFromInt"); + set_name(0x009A8AD0, "BigIntegerFromBytes"); + set_name(0x009A8B00, "BigIntegerToBytes"); + set_name(0x009A8B40, "BigIntegerCmp"); + set_name(0x009A8B60, "BigIntegerCmpInt"); + set_name(0x009A8BA0, "BigIntegerAdd"); + set_name(0x009A8BC0, "BigIntegerAddInt"); + set_name(0x009A8C00, "BigIntegerSub"); + set_name(0x009A8C20, "BigIntegerMul"); + set_name(0x009A8C40, "BigIntegerMod"); + set_name(0x009A8C60, "BigIntegerModExp"); + set_name(0x009A8C80, "BigIntegerFree"); + set_name(0x009A8C90, "BigIntegerBitLen"); set_name(0x009AD000, "DayNight__DNGlare__Initialize"); set_name(0x009D34B0, "nullsub_7"); set_name(0x009D34C0, "nullsub_8"); diff --git a/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym b/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym index 16f3fe8..0c77c3b 100644 --- a/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym +++ b/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym @@ -1,9 +1,18 @@ AsyncFileReadThreadSleepCallback 00402670 f end=00402684 AsyncFileReadHandlerTimeoutCallback 00402690 f end=004026A9 +AsyncFileInitialize 004026B0 f end=00402719 AsyncFileReadProgressCallback 004B9910 f end=004B9926 AsyncFileReadIngameProgressCallback 004B9930 f end=004B9946 -AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 +AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 ; AsyncFileReadPollHandler(void const*, void*) AsyncFileReadAddPollHandler 004B9C60 f end=004B9D15 AsyncFileReadAddStatusHandler 004B9D20 f end=004B9DD5 -AsyncFileReadInitialize 004BAA40 f end=004BAB45 +AsyncFileReadDestroyObject 004B9DE0 f ; AsyncFileReadDestroyObject(CAsyncObject*) +AsyncFileReadCancel 004B9EA0 f ; AsyncFileReadCancel(CAsyncObject*, void (*)(CAsyncObject*)) +AsyncFileReadWait 004BA060 f ; AsyncFileReadWait(CAsyncObject*) +AsyncFileReadAllocObject 004BA170 f end=004BA229 +AsyncFileReadLinkObject 004BA3D0 f end=004BA524 +AsyncFileReadThread 004BA680 f end=004BA6C5 +AsyncFileReadInitialize 004BAA40 f end=004BAB45 ; AsyncFileReadInitialize(unsigned int, unsigned int) +AsyncFileReadObject 004BAB50 f end=004BAC14 ; AsyncFileReadObject(CAsyncObject*, int) AsyncFileReadIsReading 004BAD80 f end=004BAE09 +AsyncFileReadWaitAll 004BAE10 f end=004BAEEE diff --git a/profile/3.3.5a-windows-386/symbol/biginteger/func.sym b/profile/3.3.5a-windows-386/symbol/biginteger/func.sym new file mode 100644 index 0000000..2721088 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/biginteger/func.sym @@ -0,0 +1,13 @@ +BigIntegerFromInt 009A8AA0 f end=009A8AC1 ; BigIntegerFromInt(unsigned int) +BigIntegerFromBytes 009A8AD0 f end=009A8AF5 ; BigIntegerFromBytes(unsigned char const*, int) +BigIntegerToBytes 009A8B00 f end=009A8B38 ; BigIntegerToBytes(void*, unsigned char*, unsigned int) +BigIntegerCmp 009A8B40 f end=009A8B52 ; BigIntegerCmp(void*, void*) +BigIntegerCmpInt 009A8B60 f end=009A8B9A ; BigIntegerCmpInt(void*, unsigned int) +BigIntegerAdd 009A8BA0 f end=009A8BB6 ; BigIntegerAdd(void*, void*, void*) +BigIntegerAddInt 009A8BC0 f end=009A8BF8 ; BigIntegerAddInt(void*, void*, unsigned int) +BigIntegerSub 009A8C00 f end=009A8C16 ; BigIntegerSub(void*, void*, void*) +BigIntegerMul 009A8C20 f end=009A8C36 ; BigIntegerMul(void*, void*, void*) +BigIntegerMod 009A8C40 f end=009A8C56 ; BigIntegerMod(void*, void*, void*) +BigIntegerModExp 009A8C60 f end=009A8C7A ; BigIntegerModExp(void*, void*, void*, void*) +BigIntegerFree 009A8C80 f end=009A8C8E ; BigIntegerFree(void*) +BigIntegerBitLen 009A8C90 f end=009A8CA8 ; BigIntegerBitLen(void*) diff --git a/profile/3.3.5a-windows-386/symbol/client/func.sym b/profile/3.3.5a-windows-386/symbol/client/func.sym index 03c352a..06c2c98 100644 --- a/profile/3.3.5a-windows-386/symbol/client/func.sym +++ b/profile/3.3.5a-windows-386/symbol/client/func.sym @@ -17,6 +17,5 @@ quicksort 0047B800 f ; void __cdecl quicksort(unsigned int, unsigned int, int, i ConvertPosition 0047FC90 f end=0047FDD4 NameNeedsDeclensions 0076DD20 f end=0076DD3B RussianNameNeedsDeclensions 0076E270 f end=0076E2A6 -MD5Init 00779340 f end=0077936B -MD5Final 00779AE0 f end=00779B97 IsRussian 007E1030 f end=007E1049 +CCommand_ReloadUI 00401B00 f end=00401B15 diff --git a/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym b/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym index e33ab83..1f695a7 100644 --- a/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym +++ b/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym @@ -1,2 +1,9 @@ ClientConnection__Cleanup 006B0850 f end=006B086B -ClientConnection__Cancel 006B1200 f end=006B1252 +ClientConnection__destructor 00465450 f end=0046547B ; ClientConnection::~ClientConnection() +ClientConnection__ClientConnection 006B0250 f end=006B02B5 +ClientConnection__Disconnect 006B0940 f end=006B095E ; ClientConnection::Disconnect(DISCONNECT_REASON) +ClientConnection__PollStatus 006B1100 f end=006B11FC ; ClientConnection::PollStatus(WOWCS_OPS&, char const**, int&, int&) +ClientConnection__Cancel 006B1200 f end=006B1252 ; ClientConnection::Cancel(int) +ClientConnection__HandleConnect 006B1260 f end=006B12C3 ; ClientConnection::HandleConnect() +ClientConnection__Connect 006B1390 f end=006B1450 ; ClientConnection::Connect() +ClientConnection__GetCharacterList 006B14C0 f end=006B1553 ; ClientConnection::GetCharacterList() diff --git a/profile/3.3.5a-windows-386/symbol/clientservices/func.sym b/profile/3.3.5a-windows-386/symbol/clientservices/func.sym index 89a3fb3..f43211f 100644 --- a/profile/3.3.5a-windows-386/symbol/clientservices/func.sym +++ b/profile/3.3.5a-windows-386/symbol/clientservices/func.sym @@ -1,5 +1,4 @@ ClientServices__LoadCDKey 006B0190 f end=006B0246 -ClientServices__Disconnect 006B0940 f end=006B095E ClientServices__Connection 006B0970 f end=006B098A ClientServices__LoginConnection 006B0990 f end=006B0996 ClientServices__EnterPIN 006B09A0 f end=006B09D3 @@ -34,7 +33,6 @@ ClientServices__GetCharacterRace 006B1070 f end=006B1076 ClientServices__GetCharacterClass 006B1080 f end=006B1086 ClientServices__GetCharacterSex 006B1090 f end=006B1096 ClientServices__GetCharacterLevel 006B10A0 f end=006B10A6 -ClientServices__PollStatus 006B1100 f end=006B11FC ClientServices__RequestCharacterCreate 006B1620 f end=006B1785 ClientServices__CharacterSetInGame 006B1840 f end=006B18B8 ClientServices__CharacterLogout 006B1930 f end=006B1A02 diff --git a/profile/3.3.5a-windows-386/symbol/daynight/func.sym b/profile/3.3.5a-windows-386/symbol/daynight/func.sym index 73ef056..a2ed7f7 100644 --- a/profile/3.3.5a-windows-386/symbol/daynight/func.sym +++ b/profile/3.3.5a-windows-386/symbol/daynight/func.sym @@ -1 +1,15 @@ DayNight__DNGlare__Initialize 009AD000 f end=009AD0A3 type="void __thiscall func(DayNight__DNGlare* this, char* a1)" +DayNight__Update 007816F0 f end=007819BC ; DayNight::Update(unsigned int, float, float) +DayNight__CalcFogRate 007ECD00 f end=007ECD76 ; DayNight::CalcFogRate(float, float) +DayNight__SetOverrideLightParamsID 007ECEC0 f end=007ECEDC ; DayNight::SetOverrideLightParamsID(int) +DayNight__ClearOverrideLightParamsID 007ECEE0 f end=007ECEEB ; DayNight::ClearOverrideLightParamsID() +DayNightGetInfo 007ECEF0 f end=007ECEF6 +DayNight__InterpTable 007ED3B0 f end=007ED4C0 ; DayNight::InterpTable(C2Vector const*, unsigned int, float) +DayNight__ClearOverrideFog 007ED820 f end=007ED86E ; DayNight::ClearOverrideFog() +DayNight__SetOverrideFog 007ED870 f end=007ED901 ; DayNight::SetOverrideFog(float, float, CImVector, int) +DayNight__SetDirection 007EEA90 f end=007EECBC ; DayNight::SetDirection() +DayNight__SetPlanets 007EECC0 f end=007EF6D7 ; DayNight::SetPlanets() +DayNight__UpdateFog 007F16F0 f end=007F1B0C ; DayNight::UpdateFog() +DayNightInitialize 007F2790 f end=007F2A1F +DayNight__SetColors 007F3230 f end=007F3913 ; DayNight::SetColors() +DayNight__UpdateLighting 007F3920 f end=007F39AA ; DayNight::UpdateLighting() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/detaildoodad/func.sym b/profile/3.3.5a-windows-386/symbol/detaildoodad/func.sym new file mode 100644 index 0000000..05d9d6a --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/detaildoodad/func.sym @@ -0,0 +1,4 @@ +CDetailDoodad__UpdateAlphaRampTexture 007B1270 f end=007B129F ; CDetailDoodad::UpdateAlphaRampTexture(EGxTexCommand, unsigned int, unsigned int, unsigned int, unsigned int, void*, unsigned int&, void const*&) +CDetailDoodad__InitializeShaderConstants 007B15D0 f end=007B1B05 ; CDetailDoodad::InitializeShaderConstants() +CDetailDoodad__Initialize 007B2760 f end=007B29AA ; CDetailDoodad::Initialize() +CDetailDoodad__InitializeRenderState 007B2D30 f end=007B304E ; CDetailDoodad::InitializeRenderState() diff --git a/profile/3.3.5a-windows-386/symbol/framexml/func.sym b/profile/3.3.5a-windows-386/symbol/framexml/func.sym index 628378e..6f510b5 100644 --- a/profile/3.3.5a-windows-386/symbol/framexml/func.sym +++ b/profile/3.3.5a-windows-386/symbol/framexml/func.sym @@ -6,3 +6,4 @@ FrameXML_RegisterDefault 00813DF0 f end=00813EDC FrameXML_ProcessFile 00813EE0 f end=00814333 FrameXML_CreateFrames 00814340 f end=008145A3 FrameXML_CheckSignature 008165E0 f end=00816767 +FrameXML_FreeHashNodes 00812B90 f end=00812B9D ; FrameXML_FreeHashNodes() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gruntclientlink/func.sym b/profile/3.3.5a-windows-386/symbol/gruntclientlink/func.sym new file mode 100644 index 0000000..9502533 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/gruntclientlink/func.sym @@ -0,0 +1,23 @@ +Grunt__ClientLink__Shutdown 008CBA90 f end=008CBADD ; Grunt::ClientLink::Shutdown() +Grunt__ClientLink__Disconnect 008CBAE0 f end=008CBB09 ; Grunt::ClientLink::Disconnect() +Grunt__ClientLink__Connect 008CBB40 f end=008CBBE3 ; Grunt::ClientLink::Connect(char const*) +Grunt__ClientLink__CmdRealmList 008CC250 f end=008CC3D2 ; Grunt::ClientLink::CmdRealmList(CDataStore&) +Grunt__ClientLink__CmdAuthLogonChallenge 008CC3E0 f end=008CC794 ; Grunt::ClientLink::CmdAuthLogonChallenge(CDataStore&) +Grunt__ClientLink__CmdAuthLogonProof 008CC7A0 f end=008CC978 ; Grunt::ClientLink::CmdAuthLogonProof(CDataStore&) +Grunt__ClientLink__CmdAuthReconnectChallenge 008CC980 f end=008CCA4A ; Grunt::ClientLink::CmdAuthReconnectChallenge(CDataStore&) +Grunt__ClientLink__CmdAuthReconnectProof 008CCA50 f end=008CCB3B ; Grunt::ClientLink::CmdAuthReconnectProof(CDataStore&) +Grunt__ClientLink__CmdXferInitiate 008CCB40 f end=008CCC1F ; Grunt::ClientLink::CmdXferInitiate(CDataStore&) +Grunt__ClientLink__CmdXferData 008CCC20 f end=008CCCA9 ; Grunt::ClientLink::CmdXferData(CDataStore&) +Grunt__ClientLink__WCConnected 008CCCB0 f end=008CCD38 ; Grunt::ClientLink::WCConnected(WowConnection*, WowConnection*, unsigned long, NETCONNADDR const*) +Grunt__ClientLink__WCDisconnected 008CCD40 f end=008CCD97 ; Grunt::ClientLink::WCDisconnected(WowConnection*, unsigned long, NETCONNADDR const*) +Grunt__ClientLink__WCCantConnect 008CCDA0 f end=008CCDF7 ; Grunt::ClientLink::WCCantConnect(WowConnection*, unsigned long, NETCONNADDR const*) +Grunt__ClientLink__PackLogon 008CCE00 f end=008CCEDB ; Grunt::ClientLink::PackLogon(CDataStore&, Grunt::ClientLink::Logon const&) +Grunt__ClientLink__WCDataReady 008CD710 f end=008CD7D5 ; Grunt::ClientLink::WCDataReady(WowConnection*, unsigned long, unsigned char*, int) +Grunt__ClientLink__LogonNewSession 008CD7E0 f end=008CD9E8 ; Grunt::ClientLink::LogonNewSession(Grunt::ClientLink::Logon const&) +Grunt__ClientLink__LogonStoredSession 008CD9F0 f end=008CDB85 ; Grunt::ClientLink::LogonStoredSession(Grunt::ClientLink::Logon const&) +Grunt__ClientLink__GetRealmList 008CE0F0 f end=008CE1F5 ; Grunt::ClientLink::GetRealmList() +Grunt__ClientLink__ProveVersion 008CE720 f end=008CED10 ; Grunt::ClientLink::ProveVersion(unsigned char const*) +Grunt__ClientLink__Call 008CF600 f end=008CF67D ; Grunt::ClientLink::Call() +Grunt__ClientLink__ClientLink 008CF800 f end=008CF905 ; Grunt::ClientLink::ClientLink(Grunt::ClientResponse&) +Grunt__ClientLink__Send 008CBA40 f end=008CBA8E ; 00005410 +Grunt__ClientLink__SetState 008CBB10 f end=008CBB3A ; 00005410 diff --git a/profile/3.3.5a-windows-386/symbol/gruntlogin/func.sym b/profile/3.3.5a-windows-386/symbol/gruntlogin/func.sym new file mode 100644 index 0000000..7bf4a38 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/gruntlogin/func.sym @@ -0,0 +1,20 @@ +GruntLogin__Connected 008CA0B0 f end=008CA135 ; GruntLogin::Connected(NETADDR const&) +GruntLogin__CantConnect 008CA140 f end=008CA1C5 ; GruntLogin::CantConnect() +GruntLogin__GetVersionProof 008CA260 f end=008CA2E5 ; GruntLogin::GetVersionProof(unsigned char const*) +GruntLogin__SetPinInfo 008CA360 f end=008CA3A7 ; GruntLogin::SetPinInfo(bool, unsigned int, unsigned char const*) +GruntLogin__SetTokenInfo 008CA400 f end=008CA419 ; GruntLogin::SetTokenInfo(bool, unsigned char) +GruntLogin__ProveVersion 008CA450 f end=008CA4C8 ; GruntLogin::ProveVersion(unsigned char const*) +GruntLogin__NextSecurityState 008CA4F0 f end=008CA540 ; GruntLogin::NextSecurityState(LOGIN_STATE) +GruntLogin__GetLogonMethod 008CA580 f end=008CA6F5 ; GruntLogin::GetLogonMethod() +GruntLogin__Reconnect 008CA700 f end=008CA722 ; GruntLogin::Reconnect() +GruntLogin__GetRealmList 008CA730 f end=008CA73B ; GruntLogin::GetRealmList() +GruntLogin__Logon 008CA740 f end=008CA7E5 ; GruntLogin::Logon(char const*, char const*) +GruntLogin__Wait 008CA7F0 f end=008CA875 ; GruntLogin::Wait(char const*, LoginData&) +GruntLogin__EnterPIN 008CA880 f end=008CA9AB ; GruntLogin::EnterPIN(int, unsigned char*) +GruntLogin__GetVersionChallenge 008CAC00 f end=008CAC07 ; GruntLogin::GetVersionChallenge() +GruntLogin__Init 008CAC50 f end=008CAC99 ; GruntLogin::Init(LoginResponse*) +GruntLogin__GruntLogin 008CACA0 f end=008CAD19 ; GruntLogin::GruntLogin() +GruntLogin__Logoff 008CAD20 f end=008CAD32 ; GruntLogin::Logoff() +GruntLogin__SetMatrixInfo 008CAD40 f end=008CAF95 ; GruntLogin::SetMatrixInfo(bool, unsigned char, unsigned char, unsigned char, unsigned char, bool, unsigned char, unsigned long long, unsigned char const*, unsigned int) +GruntLogin__ReconnectResult 008CB020 f end=008CB13E ; GruntLogin::ReconnectResult(Grunt::Result, unsigned char const*, unsigned int, unsigned short) +GruntLogin__LogonResult 008CB160 f end=008CB8E3 ; GruntLogin::LogonResult(Grunt::Result, unsigned char const*, unsigned int, unsigned short) diff --git a/profile/3.3.5a-windows-386/symbol/grunttimer/func.sym b/profile/3.3.5a-windows-386/symbol/grunttimer/func.sym new file mode 100644 index 0000000..54b8609 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/grunttimer/func.sym @@ -0,0 +1,4 @@ +Grunt__Timer__Insert 008CE5C0 f end=008CE6C6 ; Grunt::Timer::Insert(Grunt::Timer::Event&) +Grunt__Timer__Pump 008CED90 f end=008CEE11 ; Grunt::Timer::Pump() +Grunt__Timer__ThreadProc 008CF770 f end=008CF794 ; Grunt::Timer::ThreadProc(void*) +Grunt__Timer__Timer 008CF7A0 f end=008CF7F9 ; Grunt::Timer::Timer() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gx/func.sym b/profile/3.3.5a-windows-386/symbol/gx/func.sym index 65e62d8..45d61a3 100644 --- a/profile/3.3.5a-windows-386/symbol/gx/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gx/func.sym @@ -34,4 +34,3 @@ GxXformSetViewport 00681F60 f end=00682124 type="void __stdcall func(float minX, GxScenePresent 00682A00 f end=00682A33 GxDevDestroy 00682B80 f end=00682C35 CGxMonitorModeSort 00689E80 f type="int32_t __stdcall func(void* a, void* b)" -GxDefaultApi 008C8DE0 f type="EGxApi __stdcall func()" diff --git a/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym b/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym deleted file mode 100644 index b89d523..0000000 --- a/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym +++ /dev/null @@ -1 +0,0 @@ -TSExplicitList_CGxBuf__LinkToTail 0086E200 f end=0086E25F type="void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)" diff --git a/profile/3.3.5a-windows-386/symbol/gxstring/func.sym b/profile/3.3.5a-windows-386/symbol/gxstring/func.sym new file mode 100644 index 0000000..18ebf72 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/gxstring/func.sym @@ -0,0 +1,14 @@ +CGxString__WriteGeometry 006C5E90 f end=006C5EE0 ; CGxString::WriteGeometry(CGxVertexPCT*, int, int, int) const +CGxString__InitializeViewTranslation 006C6190 f end=006C63D8 ; CGxString::InitializeViewTranslation() +CGxString__SetStringPosition 006C6410 f end=006C6430 ; CGxString::SetStringPosition(C3Vector const&) +CGxString__AddHyperlinkParseInfo 006C6A70 f end=006C6AE6 ; CGxString::AddHyperlinkParseInfo(GXUFONTHYPERLINKINFO) +CGxString__ClearInstanceData 006C6B90 f end=006C6BF4 ; CGxString::ClearInstanceData() +CGxString__Tick 006C6C00 f end=006C6C23 ; CGxString::Tick() +CGxString__InitializeTextLine 006C6CD0 f end=006C7416 ; CGxString::InitializeTextLine(char const*, unsigned int, CImVector&, C3Vector const&, unsigned int*, EMBEDDEDPARSEINFO&) +CGxString__AddShadow 006C7440 f end=006C747B ; CGxString::AddShadow(C2Vector const&, CImVector const&) +CGxString__CheckGeometry 006C7480 f end=006C74C5 ; CGxString::CheckGeometry() +CGxString__Recycle 006C75E0 f end=006C7631 ; CGxString::Recycle() +CGxString__destructor 006C7760 f end=006C78EC ; CGxString::~CGxString() +CGxString__SetGradient 006C78F0 f end=006C7A9C ; CGxString::SetGradient(int, int) +CGxString__GetNewString 006C7AA0 f end=006C7B0E ; CGxString::GetNewString(int) +CGxString__CreateGeometry 006C7B10 f end=006C7FFA ; CGxString::CreateGeometry() diff --git a/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym b/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym index ab29f16..cc4e151 100644 --- a/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym +++ b/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym @@ -1 +1,18 @@ -CLayoutFrame__ResizePending 004898B0 f end=00489978 +CLayoutFrame__IsResizePending 00488CF0 f end=00488CFA ; CLayoutFrame::IsResizePending() +CLayoutFrame__GetHeight 00488D00 f end=00488D04 ; CLayoutFrame::GetHeight() +CLayoutFrame__GetRect 00489230 f end=00489265 ; CLayoutFrame::GetRect(CRect*) const +CLayoutFrame__Top 00489330 f end=004893B5 ; CLayoutFrame::Top() +CLayoutFrame__CalculateRect 004893C0 f end=00489564 ; CLayoutFrame::CalculateRect(CAaRect*) +CLayoutFrame__OnFrameResize 00489570 f end=00489690 ; CLayoutFrame::OnFrameResize() +CLayoutFrame__SetProtectFlag 004896C0 f end=0048970E ; CLayoutFrame::SetProtectFlag(unsigned int) +CLayoutFrame__ResizePending 004898B0 f end=00489978 ; CLayoutFrame::ResizePending() +CLayoutFrame__CLayoutFrame 00489980 f end=004899EF +CLayoutFrame__RegisterResize 00489C30 f end=00489D62 ; CLayoutFrame::RegisterResize(CLayoutFrame*, unsigned int) +CLayoutFrame__UnregisterResize 00489D70 f end=00489DD6 ; CLayoutFrame::UnregisterResize(CLayoutFrame*, unsigned int) +CLayoutFrame__Resize 00489DE0 f end=00489E8D ; CLayoutFrame::Resize(int) +CLayoutFrame__SetLayoutScale 00489E90 f end=00489F14 ; CLayoutFrame::SetLayoutScale(float, bool) +CLayoutFrame__OnFrameSizeChanged 0048A1D0 f end=0048A1FC ; CLayoutFrame::OnFrameSizeChanged(CAaRect const&) +CLayoutFrame__SetPoint 0048A260 f end=0048A3DF ; CLayoutFrame::SetPoint(FRAMEPOINT, CLayoutFrame*, FRAMEPOINT, float, float, int) +CLayoutFrame__ClearAllPoints 0048A510 f end=0048A515 ; CLayoutFrame::ClearAllPoints() +CLayoutFrame__SetDeferredResize 0048A520 f end=0048A5F0 ; CLayoutFrame::SetDeferredResize(int) +CLayoutFrame__DestroyLayout 0048B130 f end=0048B23B ; CLayoutFrame::DestroyLayout() diff --git a/profile/3.3.5a-windows-386/symbol/m2/func.sym b/profile/3.3.5a-windows-386/symbol/m2/func.sym index 07236bd..b0ff2f4 100644 --- a/profile/3.3.5a-windows-386/symbol/m2/func.sym +++ b/profile/3.3.5a-windows-386/symbol/m2/func.sym @@ -1,4 +1,3 @@ M2GetCacheFlags 0081C0B0 f end=0081C0B6 M2SetCacheFlags 0081C0C0 f end=0081C0CD M2Initialize 0081C6E0 f end=0081C747 -CM2Model__GetCameraByIndex 00824170 f end=008241CA diff --git a/profile/3.3.5a-windows-386/symbol/m2cache/func.sym b/profile/3.3.5a-windows-386/symbol/m2cache/func.sym new file mode 100644 index 0000000..b43ff19 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2cache/func.sym @@ -0,0 +1,10 @@ +CM2Cache__BeginThread 0081BFA0 f end=0081BFC4 ; CM2Cache::BeginThread(void (*)(void*), void*) +CM2Cache__WaitThread 0081BFD0 f end=0081BFDE ; CM2Cache::WaitThread() +CM2Cache__ThreadProc 0081BFE0 f end=0081C05B ; CM2Cache::ThreadProc(void*) +CM2Cache__Initialize 0081C0D0 f end=0081C28C ; CM2Cache::Initialize(unsigned int) +CM2Cache__GarbageCollect 0081C290 f end=0081C300 ; CM2Cache::GarbageCollect(int) +CM2Cache__Destroy 0081C300 f end=0081C389 ; CM2Cache::Destroy() +CM2Cache__CreateShared 0081C390 f end=0081C6D5 ; CM2Cache::CreateShared(char const*, unsigned int) +CM2Cache__UpdateShared 0081C790 f end=0081C832 ; CM2Cache::UpdateShared() +CM2Cache__LinkToSharedUpdateList 0081C840 f end=0081C862 ; CM2Cache::LinkToSharedUpdateList(CM2Shared*) +CM2Cache__CM2Cache 0081C900 f end=0081C988 ; CM2Cache::CM2Cache() diff --git a/profile/3.3.5a-windows-386/symbol/m2light/func.sym b/profile/3.3.5a-windows-386/symbol/m2light/func.sym new file mode 100644 index 0000000..3bd9f8d --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2light/func.sym @@ -0,0 +1,8 @@ +CM2Light__Initialize 008348D0 f end=008348F2 ; CM2Light::Initialize(CM2Scene*) +CM2Light__CM2Light 00834A40 f end=00834AA7 ; CM2Light::CM2Light() +CM2Light__destructor 00834AB0 f end=00834AD4 ; CM2Light::~CM2Light() +CM2Light__SetDirection 00834AE0 f end=00834B43 ; CM2Light::SetDirection(C3Vector const&) +CM2Light__Link 00834C70 f end=00834D84 ; CM2Light::Link() +CM2Light__SetLightType 00835640 f end=00835683 ; CM2Light::SetLightType(M2LIGHTTYPE) +CM2Light__SetPosition 00835690 f end=008356E2 ; CM2Light::SetPosition(NTempest::C3Vector const&) +CM2Light__SetVisible 008356F0 f end=0083574C ; CM2Light::SetVisible(int) diff --git a/profile/3.3.5a-windows-386/symbol/m2lighting/func.sym b/profile/3.3.5a-windows-386/symbol/m2lighting/func.sym new file mode 100644 index 0000000..376bca9 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2lighting/func.sym @@ -0,0 +1,11 @@ +CM2Lighting__Initialize 00834900 f end=0083493E ; CM2Lighting::Initialize(CM2Scene*, CAaSphere const&) +CM2Lighting__SetFog 00834940 f end=0083498C ; CM2Lighting::SetFog(C3Vector const&, float, float) +CM2Lighting__SetFog 00834990 f end=008349DB ; CM2Lighting::SetFog(C3Vector const&, float, float, float) +CM2Lighting__GetPointLight 008349E0 f end=00834A40 ; CM2Lighting::GetPointLight(unsigned int, C3Vector&, C3Vector&, C3Vector&) +CM2Lighting__AddAmbient 00834D90 f end=00834DB4 ; CM2Lighting::AddAmbient(C3Vector const&) +CM2Lighting__AddDiffuse 00834DC0 f end=00834F58 ; CM2Lighting::AddDiffuse(C3Vector const&, C3Vector const&) +CM2Lighting__AddLight 00834F60 f end=00835096 ; CM2Lighting::AddLight(CM2Light*) +CM2Lighting__CameraSpace 008350A0 f end=00835275 ; CM2Lighting::CameraSpace() +CM2Lighting__SetupSunlight 00835280 f end=008353C3 ; CM2Lighting::SetupSunlight() +CM2Lighting__SetupGxLights 008353D0 f end=008355CC ; CM2Lighting::SetupGxLights(C3Vector const*) +CM2Lighting__GetSunLight 008355D0 f end=00835638 ; CM2Lighting::GetSunLight(C3Vector&, C3Vector&, C3Vector&, C3Vector&) diff --git a/profile/3.3.5a-windows-386/symbol/m2model/func.sym b/profile/3.3.5a-windows-386/symbol/m2model/func.sym new file mode 100644 index 0000000..9be1e77 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2model/func.sym @@ -0,0 +1,57 @@ +CM2Model__GetBoundingBox 004F5E20 f +CM2Model__WaitForLoad 00823ED0 f end=00823F0A ; CM2Model::WaitForLoad(char const*) +CM2Model__SetAnimating 00823F10 f end=00823F89 ; CM2Model::SetAnimating(int) +CM2Model__SetSequenceCallback 00823FE0 f end=0082405E ; CM2Model::SetSequenceCallback(void (*)(CM2Model*, unsigned int, unsigned int, int, unsigned int, unsigned long long, int), unsigned long long) +CM2Model__SetEventCallback 00824060 f end=008240E1 ; CM2Model::SetEventCallback(void (*)(CM2Model*, unsigned int, unsigned int, unsigned int, C3Vector const&, unsigned int, unsigned long long), unsigned long long) +CM2Model__GetCameraByIndex 00824170 f end=008241CA ; CM2Model::GetCameraByIndex(unsigned int) +CM2Model__LinkToCallbackListTail 008244F0 f end=0082450E ; CM2Model::LinkToCallbackListTail() +CM2Model__UnlinkFromCallbackList 00824510 f end=00824542 ; CM2Model::UnlinkFromCallbackList() +CM2Model__IsBatchDoodadCompatible 00824550 f end=008245A4 ; CM2Model::IsBatchDoodadCompatible(M2Batch*) const +CM2Model__Release 00824ED0 f end=00824EFD ; CM2Model::Release() +CM2Model__IsLoaded 00824F00 f end=00824FB1 ; CM2Model::IsLoaded(int, int) +CM2Model__IsDrawable 00824FC0 f end=008250AA ; CM2Model::IsDrawable(int, int) +CM2Model__UpdateLoaded 00825170 f end=008251AF ; CM2Model::UpdateLoaded() +CM2Model__SetLoadedCallback 008251B0 f end=008251C8 ; CM2Model::SetLoadedCallback(void (*)(CM2Model*, void*), void*) +CM2Model__SetWorldTransform 008251D0 f end=00825256 ; CM2Model::SetWorldTransform(C3Vector const&, float, float) +CM2Model__UnoptimizeVisibleGeometry 00825D70 f end=00825E00 ; CM2Model::UnoptimizeVisibleGeometry() +CM2Model__SequenceFallbackById 00826350 f end=008264A9 ; CM2Model::SequenceFallbackById(M2SequenceFallback*, unsigned int) const +CM2Model__SetupBoneSequence 00826B00 f end=00826C3F ; CM2Model::SetupBoneSequence(unsigned short, M2SequenceFallback, unsigned int, float, M2ModelBoneSeq*) +CM2Model__SetPrimaryBoneSequence 00826C40 f end=00826DD0 ; CM2Model::SetPrimaryBoneSequence(unsigned short, unsigned short, M2SequenceFallback, unsigned int, float, int) +CM2Model__SetSecondaryBoneSequence 00826DD0 f end=00826E54 ; CM2Model::SetSecondaryBoneSequence(unsigned short, unsigned short, M2SequenceFallback, unsigned int, float) +CM2Model__DetachAllChildrenById 00827560 f end=008275E9 ; CM2Model::DetachAllChildrenById(unsigned int) +CM2Model__GetCameraById 00827960 f end=008279E3 ; CM2Model::GetCameraById(unsigned int) +CM2Model__FindKey 008284D0 f end=00828674 ; CM2Model::FindKey(M2ModelBoneSeq*, M2TrackBase const&, unsigned int&, unsigned int&, float&) +CM2Model__AnimateST 00828A00 f end=00828F8A ; CM2Model::AnimateST() +CM2Model__SetIndices 00828F90 f end=00829160 ; CM2Model::SetIndices() const +CM2Model__SetVertices 00829160 f end=00829296 ; CM2Model::SetVertices(int, M2SkinSection*, unsigned int) const +CM2Model__RenderModelBatchesForProjectedTexture 00829AA0 f end=00829B94 ; CM2Model::RenderModelBatchesForProjectedTexture() +CM2Model__CM2Model 0082BE60 f end=0082C1B7 ; CM2Model::CM2Model() +CM2Model__OptimizeVisibleGeometry 0082C970 f end=0082CEC2 ; CM2Model::OptimizeVisibleGeometry() +CM2Model__AnimateParticlesMT 0082D2F0 f end=0082D6E1 ; CM2Model::AnimateParticlesMT() +CM2Model__AnimateTextureTransformsMT 0082D6F0 f end=0082D903 ; CM2Model::AnimateTextureTransformsMT() +CM2Model__SetVerticesMultiSample 0082D910 f end=0082DA32 ; CM2Model::SetVerticesMultiSample(int, M2SkinSection*) +CM2Model__SetWorldTransform 0082DD80 f end=0082E0B3 ; CM2Model::SetWorldTransform(C3Vector const&, float, float, C3Vector const&, unsigned int) +CM2Model__AnimateMTSimple 0082E140 f end=0082E548 ; CM2Model::AnimateMTSimple(C44Matrix const*, C3Vector const&, C3Vector const&, float, float) +CM2Model__AnimateAttachmentsMT 0082E550 f end=0082E71A ; CM2Model::AnimateAttachmentsMT() +CM2Model__ProcessSequenceCallback 0082E790 f end=0082E83C ; CM2Model::ProcessSequenceCallback(unsigned int, unsigned int, unsigned int, unsigned int) +CM2Model__GetCollisionFacets 0082EC30 f end=0082F0EE ; CM2Model::GetCollisionFacets(CAaBox const&, C44Matrix const&, TSGrowableArray&) +CM2Model__AnimateMT 0082F0F0 f end=0083096B ; CM2Model::AnimateMT(C44Matrix const*, C3Vector const&, C3Vector const&, float, float) +CM2Model__AnimateParticleST 008309C0 f end=00830DB3 ; CM2Model::AnimateParticleST(float, unsigned int) +CM2Model__Animate 00830DC0 f end=00830F83 ; CM2Model::Animate() +CM2Model__ProcessEventCallbacks 00830FB0 f end=00831298 ; CM2Model::ProcessEventCallbacks(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) +CM2Model__GetAttachmentWorldTransform 00831410 f end=00831542 ; CM2Model::GetAttachmentWorldTransform(unsigned int) +CM2Model__AttachToParent 00831630 f end=008317D4 ; CM2Model::AttachToParent(CM2Model*, unsigned int, C3Vector const*, int) +CM2Model__SetupLighting 00831AF0 f end=00831BA3 ; CM2Model::SetupLighting() +CM2Model__SetBoneSequenceDeferred 00831C30 f end=00831E1D ; CM2Model::SetBoneSequenceDeferred(unsigned short, M2Data*, unsigned short, unsigned int, float, M2SequenceFallback, int, int, int, unsigned int) +CM2Model__CancelDeferredSequences 00831EC0 f end=00831FB6 ; CM2Model::CancelDeferredSequences(unsigned int, bool) +CM2Model__CallSequenceCallback 00831FC0 f end=008321D1 ; CM2Model::CallSequenceCallback(M2ModelCallback*) +CM2Model__CallCallbacks 008321E0 f end=00832253 ; CM2Model::CallCallbacks() +CM2Model__ProcessCallbacks 00832260 f end=00832449 ; CM2Model::ProcessCallbacks() +CM2Model__ProcessCallbacksRecursive 00832450 f end=008324F5 ; CM2Model::ProcessCallbacksRecursive() +CM2Model__destructor 00832640 f end=00832832 ; CM2Model::~CM2Model() +CM2Model__UnsetBoneSequence 00832840 f end=00832AAA ; CM2Model::UnsetBoneSequence(unsigned int, int, int) +CM2Model__SetBoneSequence 00832AB0 f end=00832DCD ; CM2Model::SetBoneSequence(unsigned int, unsigned int, unsigned int, unsigned int, float, int, int) +CM2Model__InitializeLoaded 00832EA0 f end=008344DC ; CM2Model::InitializeLoaded() +CM2Model__AttachToScene 00834540 f end=00834628 ; CM2Model::AttachToScene(CM2Scene*) +CM2Model__AttachToSceneRecursive 00834630 f end=0083465C ; CM2Model::AttachToSceneRecursive(CM2Scene*) +CM2Model__Initialize 00834810 f end=008348CA ; CM2Model::Initialize(CM2Scene*, CM2Shared*, CM2Model*, unsigned int) diff --git a/profile/3.3.5a-windows-386/symbol/m2scene/func.sym b/profile/3.3.5a-windows-386/symbol/m2scene/func.sym new file mode 100644 index 0000000..1335a7c --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2scene/func.sym @@ -0,0 +1,19 @@ +CM2Scene__AdvanceTime 0081C9C0 f end=0081CA09 ; CM2Scene::AdvanceTime(unsigned int) +CM2Scene__AnimateThread 0081CE70 f end=0081CF14 ; CM2Scene::AnimateThread(void*) +CM2Scene__SelectLights 0081E400 f end=0081E58F ; CM2Scene::SelectLights(CM2Lighting*) +CM2Scene__SortDoodadProxy 0081EA90 f end=0081EACA ; CM2Scene::SortDoodadProxy(unsigned int, unsigned int, void const*) +CM2Scene__SortOpaqueGeoBatches 0081EAD0 f end=0081ED03 ; CM2Scene::SortOpaqueGeoBatches(M2Element*, M2Element*) +CM2Scene__SortOpaqueRibbons 0081ED10 f end=0081EDEB ; CM2Scene::SortOpaqueRibbons(M2Element*, M2Element*) +CM2Scene__SortOpaqueParticles 0081EDF0 f end=0081EE91 ; CM2Scene::SortOpaqueParticles(M2Element*, M2Element*) +CM2Scene__SortOpaque 0081EEA0 f end=0081EF15 ; CM2Scene::SortOpaque(unsigned int, unsigned int, void const*) +CM2Scene__SortTransparent 0081EF30 f end=0081F0D7 ; CM2Scene::SortTransparent(unsigned int, unsigned int, void const*) +CM2Scene__SortAdditiveParticles 0081F0E0 f end=0081F1C3 ; CM2Scene::SortAdditiveParticles(unsigned int, unsigned int, void const*) +CM2Scene__ComputeElementShaders 0081F1D0 f end=0081F327 ; CM2Scene::ComputeElementShaders(M2Element*) +CM2Scene__CreateModel 0081F8F0 f end=0081F96F ; CM2Scene::CreateModel(char const*, unsigned int) +CM2Scene__DuplicateModel 0081F970 f end=0081F9D7 ; CM2Scene::DuplicateModel(CM2Model*, unsigned int) +CM2Scene__SortAdditiveParticleElements 0081F9E0 f end=0081FAF6 ; CM2Scene::SortAdditiveParticleElements(unsigned int) +CM2Scene__CM2Scene 008216C0 f end=00821842 ; CM2Scene::CM2Scene(CM2Cache*) +CM2Scene__destructor 00821850 f end=0082192E ; CM2Scene::~CM2Scene() +CM2Scene__Animate 00821A20 f end=0082303A ; CM2Scene::Animate(C3Vector const&) +CM2Scene__Release 00823040 f end=00823062 ; CM2Scene::Release() +CM2Scene__Draw 00823CB0 f end=00823D4D ; CM2Scene::Draw(M2PASS) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/m2scenerender/func.sym b/profile/3.3.5a-windows-386/symbol/m2scenerender/func.sym new file mode 100644 index 0000000..d759b68 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2scenerender/func.sym @@ -0,0 +1,12 @@ +CM2SceneRender__CM2SceneRender 0081F330 f end=0081F449 ; CM2SceneRender::CM2SceneRender(CM2Scene*) +CM2SceneRender__SetupTextures 0081F450 f end=0081F620 ; CM2SceneRender::SetupTextures() +CM2SceneRender__SetBatchVertices 0081F700 f end=0081F7FC ; CM2SceneRender::SetBatchVertices(int) +CM2SceneRender__SetupLighting 0081FB10 f end=0081FE7A ; CM2SceneRender::SetupLighting() +CM2SceneRender__SetupMaterial 0081FE90 f end=008203AA ; CM2SceneRender::SetupMaterial() +CM2SceneRender__DrawBatch 008203B0 f end=00820718 ; CM2SceneRender::DrawBatch() +CM2SceneRender__DrawBatchProj 00820720 f end=00820ADD ; CM2SceneRender::DrawBatchProj() +CM2SceneRender__DrawBatchDoodad 00820AE0 f end=00820F35 ; CM2SceneRender::DrawBatchDoodad(M2Element*, unsigned int*) +CM2SceneRender__DrawRibbon 00820F40 f end=0082103B ; CM2SceneRender::DrawRibbon() +CM2SceneRender__DrawParticle 008214E0 f end=00821667 ; CM2SceneRender::DrawParticle(unsigned int, M2Element*, unsigned int*, unsigned int) +CM2SceneRender__DrawCallback 008230D0 f end=0082312A ; CM2SceneRender::DrawCallback() +CM2SceneRender__Draw 00823130 f end=00823C8D ; CM2SceneRender::Draw(M2PASS, M2Element*, unsigned int*, unsigned int*) diff --git a/profile/3.3.5a-windows-386/symbol/m2shared/func.sym b/profile/3.3.5a-windows-386/symbol/m2shared/func.sym new file mode 100644 index 0000000..565d3b9 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/m2shared/func.sym @@ -0,0 +1,25 @@ +CM2Shared__AddRef 00835970 f end=008359BB ; CM2Shared::AddRef() +CM2Shared__CallbackWhenLoaded 008359C0 f end=008359F5 ; CM2Shared::CallbackWhenLoaded(CM2Model*) +CM2Shared__LoadFailedCallback 00835A00 f end=00835A1D ; CM2Shared::LoadFailedCallback(CAsyncObject*) +CM2Shared__SetIndices 008360A0 f end=008362AD ; CM2Shared::SetIndices() +CM2Shared__SetVertices 008362B0 f end=008365F5 ; CM2Shared::SetVertices(unsigned int) +CM2Shared__GetEffect 00836C90 f end=00836DD1 ; CM2Shared::GetEffect(M2Batch*) +CM2Shared__ConvertTextureValuesToCombos 00837250 f end=00837497 ; CM2Shared::ConvertTextureValuesToCombos() +CM2Shared__AssignBatchTextureComboIndices 008374A0 f end=00837672 ; CM2Shared::AssignBatchTextureComboIndices() +CM2Shared__SubstituteSpecializedShaders 00837680 f end=00837A3D ; CM2Shared::SubstituteSpecializedShaders() +CM2Shared__InitializeSkinProfile 00837A40 f end=00837ED4 ; CM2Shared::InitializeSkinProfile() +CM2Shared__FinishLoadingSkinProfile 00838490 f end=00838593 ; CM2Shared::FinishLoadingSkinProfile(unsigned int) +CM2Shared__CM2Shared 0083C5F0 f end=0083C6DC ; CM2Shared::CM2Shared(CM2Cache*) +CM2Shared__InitLowPrioritySequence 0083C6E0 f end=0083CA8D ; CM2Shared::InitLowPrioritySequence(unsigned int, unsigned char*, unsigned int) +CM2Shared__FinishLoadingLowPrioritySequence 0083CA90 f end=0083CB10 ; CM2Shared::FinishLoadingLowPrioritySequence(unsigned int, CAsyncObject*) +CM2Shared__SkinProfileLoadedCallback 0083CB10 f end=0083CB3B ; CM2Shared::SkinProfileLoadedCallback(void*) +CM2Shared__LoadSkinProfile 0083CB40 f end=0083CC77 ; CM2Shared::LoadSkinProfile(unsigned int) +CM2Shared__Initialize 0083CC80 f end=0083CEFA ; CM2Shared::Initialize() +CM2Shared__LoadSucceededCallback 0083D340 f end=0083D363 ; CM2Shared::LoadSucceededCallback(CAsyncObject*) +CM2Shared__Load 0083D410 f end=0083D505 ; CM2Shared::Load(SFile*, int, CAaBox*) +CM2Shared__CancelAllDeferredSequences 0083D510 f end=0083D5A6 ; CM2Shared::CancelAllDeferredSequences() +CM2Shared__destructor 0083D5B0 f end=0083D833 ; CM2Shared::~CM2Shared() +CM2Shared__LowPrioritySequenceLoadedCallback 0083D840 f end=0083D9E1 ; CM2Shared::LowPrioritySequenceLoadedCallback(void*) +CM2Shared__LowPrioritySequenceFailedCallback 0083D9F0 f end=0083DA10 ; CM2Shared::LowPrioritySequenceFailedCallback(void*) +CM2Shared__LoadLowPrioritySequence 0083DA10 f end=0083DC8D ; CM2Shared::LoadLowPrioritySequence(unsigned short) +CM2Shared__Release 0083DC90 f end=0083DCE8 ; CM2Shared::Release() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index da7002d..7f73e7e 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -7,8 +7,10 @@ CDataStore__Reset 004010E0 f ; CDataStore::Reset() CDataStore__Finalize 00401130 f ; CDataStore::Finalize() PatchFiles__qsortpatchfiles 00401200 f ; int __cdecl PatchFiles::qsortpatchfiles(char **, char **) MovementInit 00401520 f end=004015E0 +CCommand_ReloadUI 00401B00 f end=00401B15 AsyncFileReadThreadSleepCallback 00402670 f end=00402684 AsyncFileReadHandlerTimeoutCallback 00402690 f end=004026A9 +AsyncFileInitialize 004026B0 f end=00402719 SetPaths 00402B20 f end=00402B8B TimingMethodCallback 00403200 f end=00403294 CCommand_TimingInfo 004032A0 f end=004032FF @@ -98,6 +100,7 @@ Blizzard__Streaming__IsStreamingMode 00428010 f end=0042802B Blizzard__File__IsDirectory 004281D0 f end=004281EB Blizzard__File__IsFile 004281F0 f end=0042820B Blizzard__File__SimpleGlob 00428210 f end=004282F2 type="bool __stdcall func(char* name, char* pattern)" +WowConnection__AddRef 00428300 f end=0042830B ; WowConnection::AddRef() Blizzard__String__FindFilename 00428500 f end=00428538 type="char* __stdcall func(char* str)" Blizzard__String__FirstPathSeparator 00428640 f end=00428668 Blizzard__String__Copy 00428670 f end=004286BB type="int32_t __stdcall func(char* dst, const char* src, int32_t count)" @@ -182,6 +185,32 @@ OsCreateFileMode 00461EF0 f end=00461F68 type="Blizzard__File__Mode __stdcall fu OsFileGetDownloadFolder 00461F70 f end=00461F91 type="char* __stdcall func()" OsCreateFile 00461FA0 f end=00461FFA type="HOSFILE __stdcall func(char* fileName, uint32_t desiredAccess, uint32_t shareMode, uint32_t createDisposition, uint32_t flagsAndAttributes, uint32_t extendedFileType)" OsFileList 00462000 f end=0046209C +ClientConnection__destructor 00465450 f end=0046547B ; ClientConnection::~ClientConnection() +WowConnection__SetResponse 004666D0 f end=00466748 ; WowConnection::SetResponse(WowConnectionResponse*, bool) +WowConnection__SetType 004667F0 f end=0046681A ; WowConnection::SetType(WOWC_TYPE) +WowConnection__SetEncryption 00466820 f end=004668A0 ; WowConnection::SetEncryption(WC_ENCRYPT_TYPE) +WowConnection__Init 004669D0 f end=00466B48 ; WowConnection::Init(WowConnectionResponse*, void (*)()) +WowConnection__Disconnect 00466B50 f end=00466B8F ; WowConnection::Disconnect() +WowConnection__SetEncryptionKey 00466BF0 f end=00466DA9 ; WowConnection::SetEncryptionKey(unsigned char const*, unsigned char, unsigned char, unsigned char const*, unsigned char) +WowConnection__CloseSocket 00466DE0 f end=00466E29 ; WowConnection::CloseSocket(int) +WowConnection__DoStreamReads 00466F00 f end=004670CA ; WowConnection::DoStreamReads() +WowConnection__WowConnection 00467270 f end=00467330 ; WowConnection::WowConnection(int, sockaddr_in*, WowConnectionResponse*) +WowConnection__WowConnection 00467330 f end=004673B9 ; WowConnection::WowConnection(WowConnectionResponse*, void (*)()) +WowConnection__destructor 004673C0 f end=00467536 ; WowConnection::~WowConnection() +WowConnection__Send 004675F0 f end=00467988 ; WowConnection::Send(CDataStore*, int) +WowConnection__SendRaw 00467990 f end=00467B96 ; WowConnection::SendRaw(unsigned char*, int) +WowConnection__DoMessageReads 00467BA0 f end=004680CA ; WowConnection::DoMessageReads() +WowConnection__Release 00468200 f end=00468246 ; WowConnection::Release() +WowConnection__DoDisconnect 00468250 f end=0046838F ; WowConnection::DoDisconnect() +WowConnection__CheckConnect 00468390 f end=00468573 ; WowConnection::CheckConnect() +WowConnection__CheckAccept 00468580 f end=00468788 ; WowConnection::CheckAccept() +WowConnection__DoWrites 00468790 f end=00468A84 ; WowConnection::DoWrites() +WowConnection__DoReads 00468A90 f end=00468B23 ; WowConnection::DoReads() +WowConnection__DoExceptions 00468B30 f end=00468B9A ; WowConnection::DoExceptions() +WowConnection__StartConnect 00468BA0 f end=00468D00 ; WowConnection::StartConnect() +WowConnection__Connect 00468D20 f end=00468D8B ; WowConnection::Connect(char const*, unsigned short, int) +WowConnection__InitOsNet 00468D90 f end=00468E4F ; WowConnection::InitOsNet(bool (*)(NETADDR const*), void (*)(), int, bool) +WowConnection__Connect 00468E50 f end=00468ED5 ; WowConnection::Connect(char const*, int) nullsub_2 0047ADD0 f CDataStore__GetBufferParams 0047ADE0 f ; CDataStore::GetBufferParams(void const**, unsigned int*, unsigned int*) CDataStore__DetachBuffer 0047AE10 f ; CDataStore::DetachBuffer(void**, unsigned int*, unsigned int*) @@ -285,12 +314,18 @@ IEvtTimerGetNextTime 00480F70 f end=00480FCA IEvtTimerDispatch 00481100 f end=00481289 IEvtTimerKill 00481290 f end=0048138F IEvtTimerSet 00481390 f end=004814E4 +CSimpleTexture__SetTexture 00481590 f end=004815D2 ; CSimpleTexture::SetTexture(CImVector const&) +CSimpleTexture__SetBlendMode 00481620 f end=0048163D ; CSimpleTexture::SetBlendMode(EGxBlend) +CSimpleTexture__SetTexCoord 00481640 f end=00481691 ; CSimpleTexture::SetTexCoord(C2Vector const*) GxBufLock 004829D0 f end=004829E9 GxBufUnlock 004829F0 f end=00482A13 GxBufStream 00482A20 f end=00482A3C GxDraw 00482A40 f end=00482A5D CSimpleRegion__Hide 00482C20 f type="void __thiscall func(CSimpleRegion* this)" +CSimpleTexture__SetTexCoord 004831D0 f end=00483220 ; CSimpleTexture::SetTexCoord(CRect const&) CSimpleFontString__SetText 00483910 f end=00483A3D type="void __thiscall func(CSimpleFontString* this, char* a1, int32_t a2)" +CSimpleTexture__CSimpleTexture 00484470 f end=004845E6 ; CSimpleTexture::CSimpleTexture(CSimpleFrame*, unsigned int, int) +CSimpleTexture__LoadXML 00485F40 f end=00486B11 ; CSimpleTexture::LoadXML(XMLNode*, CStatus*) CSimpleRegion__SetVertexColor 00487A10 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" CSimpleRegion__GetVertexColor 00487AB0 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" CSimpleRegion__HideThis 00487BF0 f type="void __thiscall func(CSimpleRegion* this)" @@ -300,16 +335,70 @@ CSimpleRegion__OnColorChanged 00487D70 f type="void __thiscall func(CSimpleRegio CSimpleRegion__CSimpleRegion 004880E0 f type="void __thiscall func(CSimpleRegion* this, CSimpleFrame* frame, uint32_t drawLayer, int32_t show)" CSimpleRegion__destructor 004881D0 f type="void __thiscall func(CSimpleRegion* this)" CScriptRegion__CScriptRegion 00488310 f end=00488348 type="void __thiscall func(CScriptRegion* this)" -CLayoutFrame__ResizePending 004898B0 f end=00489978 +CLayoutFrame__IsResizePending 00488CF0 f end=00488CFA ; CLayoutFrame::IsResizePending() +CLayoutFrame__GetHeight 00488D00 f end=00488D04 ; CLayoutFrame::GetHeight() +CLayoutFrame__GetRect 00489230 f end=00489265 ; CLayoutFrame::GetRect(CRect*) const +CLayoutFrame__Top 00489330 f end=004893B5 ; CLayoutFrame::Top() +CLayoutFrame__CalculateRect 004893C0 f end=00489564 ; CLayoutFrame::CalculateRect(CAaRect*) +CLayoutFrame__OnFrameResize 00489570 f end=00489690 ; CLayoutFrame::OnFrameResize() +CLayoutFrame__SetProtectFlag 004896C0 f end=0048970E ; CLayoutFrame::SetProtectFlag(unsigned int) +CLayoutFrame__ResizePending 004898B0 f end=00489978 ; CLayoutFrame::ResizePending() +CLayoutFrame__CLayoutFrame 00489980 f end=004899EF +CLayoutFrame__RegisterResize 00489C30 f end=00489D62 ; CLayoutFrame::RegisterResize(CLayoutFrame*, unsigned int) +CLayoutFrame__UnregisterResize 00489D70 f end=00489DD6 ; CLayoutFrame::UnregisterResize(CLayoutFrame*, unsigned int) +CLayoutFrame__Resize 00489DE0 f end=00489E8D ; CLayoutFrame::Resize(int) +CLayoutFrame__SetLayoutScale 00489E90 f end=00489F14 ; CLayoutFrame::SetLayoutScale(float, bool) +CLayoutFrame__OnFrameSizeChanged 0048A1D0 f end=0048A1FC ; CLayoutFrame::OnFrameSizeChanged(CAaRect const&) +CLayoutFrame__SetPoint 0048A260 f end=0048A3DF ; CLayoutFrame::SetPoint(FRAMEPOINT, CLayoutFrame*, FRAMEPOINT, float, float, int) +CLayoutFrame__ClearAllPoints 0048A510 f end=0048A515 ; CLayoutFrame::ClearAllPoints() +CLayoutFrame__SetDeferredResize 0048A520 f end=0048A5F0 ; CLayoutFrame::SetDeferredResize(int) +CLayoutFrame__DestroyLayout 0048B130 f end=0048B23B ; CLayoutFrame::DestroyLayout() CScriptObject__GetScriptObjectByName 0048B5F0 f end=0048B671 +CSimpleTexture_SetVertexColor 0048C1C0 f end=0048C23E ; CSimpleTexture_SetVertexColor(lua_State*) +CSimpleTexture_SetAlpha 0048C3E0 f end=0048C4B3 ; CSimpleTexture_SetAlpha(lua_State*) CSimpleFontString_SetFormattedText 0048D800 f end=0048D88B type="int32_t __stdcall func(lua_State* L)" -CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" -CSimpleFrame__SetFrameScale 0048F580 f end=0048F5CC +CSimpleTexture_SetTexCoord 0048E170 f end=0048E353 ; CSimpleTexture_SetTexCoord(lua_State*) +CSimpleFrame__GetScriptByName 0048E680 f end=0048E961 ; CSimpleFrame::GetScriptByName(char const*, FrameScript_Object::ScriptData&) +CSimpleFrame__Raise 0048E9A0 f end=0048E9AF ; CSimpleFrame::Raise() +CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" ; CSimpleFrame::SetFrameAlpha(unsigned char) +CSimpleFrame__UnregisterForEvents 0048EA80 f end=0048EABE ; CSimpleFrame::UnregisterForEvents(int) +CSimpleFrame__SetFrameScale 0048F580 f end=0048F5CC ; CSimpleFrame::SetFrameScale(float, bool) CSimpleFrame__SetFrameDepth 0048F5D0 f end=0048F611 +CSimpleFrame__EnableEvent 0048F6A0 f end=0048F6E1 ; CSimpleFrame::EnableEvent(CSimpleEventType, unsigned int) +CSimpleFrame__GetHitRect 0048F890 f end=0048F8D1 ; CSimpleFrame::GetHitRect(CRect&) +CSimpleFrame__OnFrameSizeChanged 0048FA20 f end=0048FB0B ; CSimpleFrame::OnFrameSizeChanged(CAaRect const&) +CSimpleFrame__NotifyScrollParent 0048FEA0 f end=0048FEEE ; CSimpleFrame::NotifyScrollParent() +CSimpleFrame__NotifyDrawLayerChanged 00490270 f end=004902C7 ; CSimpleFrame::NotifyDrawLayerChanged(unsigned int) +CSimpleFrame__OnFrameSizeChanged 00490330 f end=00490357 ; CSimpleFrame::OnFrameSizeChanged(float, float) +CSimpleFrame__PostLoadXML 00490410 f end=00490598 ; CSimpleFrame::PostLoadXML(XMLNode*, CStatus*) +CSimpleFrame__SetBackdrop 004905A0 f end=004905F5 ; CSimpleFrame::SetBackdrop(CBackdropGenerator*) +CSimpleFrame__OnLayerUpdate 00490770 f end=00490831 ; CSimpleFrame::OnLayerUpdate(float) +CSimpleFrame__OnFrameRender 00490840 f end=004908A0 ; CSimpleFrame::OnFrameRender(CRenderBatch*, unsigned int) +CSimpleFrame__OnScreenSizeChanged 004908A0 f end=004908D7 ; CSimpleFrame::OnScreenSizeChanged() +CSimpleFrame__SetBeingScrolled 00490F60 f end=00491018 ; CSimpleFrame::SetBeingScrolled(int, int) +CSimpleFrame__UnparentFrame 00491160 f end=004911A8 ; CSimpleFrame::UnparentFrame(CSimpleFrame*) +CSimpleFrame__SetParent 004911B0 f end=00491343 ; CSimpleFrame::SetParent(CSimpleFrame*) +CSimpleFrame__GetBoundsRect 004913C0 f end=00491594 ; CSimpleFrame::GetBoundsRect(CRect&) +CSimpleFrame__UpdateScale 004915A0 f end=00491677 ; CSimpleFrame::UpdateScale(bool) +CSimpleFrame__HideThis 00491830 f end=004918EC ; CSimpleFrame::HideThis() +CSimpleFrame__ShowThis 004918F0 f end=004919E4 ; CSimpleFrame::ShowThis(bool) +CSimpleFrame__OnFrameRender 00491E00 f end=00491FB5 ; CSimpleFrame::OnFrameRender() +CSimpleFrame__CSimpleFrame 004922F0 f end=004926A7 ; CSimpleFrame::CSimpleFrame(CSimpleFrame*) +CSimpleFrame__LoadXML 004932C0 f end=00493A09 ; CSimpleFrame::LoadXML(XMLNode*, CStatus*) GxCapsWindowSizeInScreenCoords 00493BF0 f end=00493C09 +CSimpleTop__RoundToPixelHeight 00493E00 f end=00493E85 ; CSimpleTop::RoundToPixelHeight(float) +CSimpleTop__HideFrame 00493F30 f end=00493FA5 ; CSimpleTop::HideFrame(CSimpleFrame*, int) +CSimpleTop__OnMouseMove 004945A0 f end=0049472A ; CSimpleTop::OnMouseMove(EVENT_DATA_MOUSE const*, void*) CFrameStrata__BuildBatches 00494EE0 f end=00494F2E type="int32_t __thiscall func(CFrameStrata* this, int32_t a2)" CFrameStrata__RenderBatch 00494F30 f end=00494F89 type="void __thiscall func(CFrameStrata* this)" +CSimpleTop__UnregisterFrame 00494FA0 f end=0049504D ; CSimpleTop::UnregisterFrame(CSimpleFrame*) CSimpleTop__OnLayerRender 00495410 f end=0049546A +CSimpleTop__OnDisplaySizeChanged 004955E0 f end=00495667 ; CSimpleTop::OnDisplaySizeChanged(EVENT_DATA_SIZE const*, void*) +CSimpleTop__RegisterForEvent 00495880 f end=004958F9 ; CSimpleTop::RegisterForEvent(CSimpleFrame*, CSimpleEventType, int, unsigned int) +CSimpleTop__EnableEvents 004959F0 f end=00495AF2 ; CSimpleTop::EnableEvents() +CSimpleTop__CSimpleTop 00495EB0 f end=004960C6 ; CSimpleTop::CSimpleTop() +CSimpleTop__ShowFrame 004960D0 f end=004960FA ; CSimpleTop::ShowFrame(CSimpleFrame*, int) +CSimpleFrame__RegisterScriptMethods 0049E540 f end=0049E560 ; CSimpleFrame::RegisterScriptMethods(lua_State*) CSimpleFrame_SetAlpha 0049F9E0 f end=0049FAA1 type="void __stdcall func(lua_State* L)" CBackdropGenerator__SetBorderVertexColor 004A2630 f end=004A26C1 type="void __thiscall func(CBackdropGenerator* this, CImVector* borderColor)" CBackdropGenerator__LoadXML 004A2780 f end=004A29CB ; _CBackdropGenerator::LoadXML(linkObject*, CStatus*) @@ -348,11 +437,19 @@ LoadBlpMips 004B8070 f end=004B81CE type="int32_t __usercall func@(char* ex TextureLoadImage 004B81D0 f end=004B8385 type="MipBits* func(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8)" AsyncFileReadProgressCallback 004B9910 f end=004B9926 AsyncFileReadIngameProgressCallback 004B9930 f end=004B9946 -AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 +AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 ; AsyncFileReadPollHandler(void const*, void*) AsyncFileReadAddPollHandler 004B9C60 f end=004B9D15 AsyncFileReadAddStatusHandler 004B9D20 f end=004B9DD5 -AsyncFileReadInitialize 004BAA40 f end=004BAB45 +AsyncFileReadDestroyObject 004B9DE0 f ; AsyncFileReadDestroyObject(CAsyncObject*) +AsyncFileReadCancel 004B9EA0 f ; AsyncFileReadCancel(CAsyncObject*, void (*)(CAsyncObject*)) +AsyncFileReadWait 004BA060 f ; AsyncFileReadWait(CAsyncObject*) +AsyncFileReadAllocObject 004BA170 f end=004BA229 +AsyncFileReadLinkObject 004BA3D0 f end=004BA524 +AsyncFileReadThread 004BA680 f end=004BA6C5 +AsyncFileReadInitialize 004BAA40 f end=004BAB45 ; AsyncFileReadInitialize(unsigned int, unsigned int) +AsyncFileReadObject 004BAB50 f end=004BAC14 ; AsyncFileReadObject(CAsyncObject*, int) AsyncFileReadIsReading 004BAD80 f end=004BAE09 +AsyncFileReadWaitAll 004BAE10 f end=004BAEEE TextBlockGetFontPtr 004BD9D0 f end=004BD9EA type="CGxFont* __stdcall func(HTEXTFONT font)" TextBlockCreate 004BDAA0 f end=004BDBE4 type="HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)" TextBlockSetStringPos 004BDBF0 f end=004BDC4C type="void __stdcall func(HTEXTBLOCK stringHandle, C2Vector* pos)" @@ -447,7 +544,9 @@ Script_GetMovieResolution 004DD610 f end=004DD671 Script_GetExpansionLevel 004DDC20 f end=004DDC51 RealmListRegisterScriptFunctions 004DE4D0 f end=004DE4F3 RealmListUnregisterScriptFunctions 004DE500 f end=004DE51C -CRealmList__Initialize 004DF580 f end=004DF66C +CRealmList__SetPreferredInfo 004DE960 f end=004DEAEB ; CRealmList::SetPreferredInfo(unsigned int, int, int) +CRealmList__Initialize 004DF580 f end=004DF66C ; CRealmList::Initialize() +CRealmList__UpdateList 004DF710 f end=004DFA4A ; CRealmList::UpdateList() CharacterCreateUnregisterScriptFunctions 004DFD30 f end=004DFD4F CharSelectRegisterScriptFunctions 004E2570 f end=004E2593 CharSelectUnregisterScriptFunctions 004E25A0 f end=004E25BC @@ -463,6 +562,15 @@ CGlueMgr__PatchDownloadStart 004E5200 f end=004E53A0 CGlueMgr__PatchDownloadCancel 004E53A0 f end=004E541F CGlueMgr__PatchFailed 004E5420 f end=004E54C8 CGlueMgr__PatchDownloadIdle 004E54D0 f end=004E5722 +CSimpleModelFFX__SetModel 004E5ED0 f end=004E5EF7 ; CSimpleModelFFX::SetModel(CM2Model*) +CSimpleModelFFX__LoadXML 004E5F00 f end=004E5F47 ; CSimpleModelFFX::LoadXML(XMLNode*, CStatus*) +CSimpleModelFFX__CSimpleModelFFX 004E5F70 f end=004E60A3 ; CSimpleModelFFX::CSimpleModelFFX(CSimpleFrame*) +CSimpleModelFFX__Render 004E6190 f end=004E6229 ; CSimpleModelFFX::Render(void*) +CSimpleModelFFX__Create 004E6300 f end=004E632B ; CSimpleModelFFX::Create(CSimpleFrame*) +CSimpleModelFFX__OnFrameRender 004E6330 f end=004E635E ; CSimpleModelFFX::OnFrameRender(CRenderBatch*, unsigned int) +CSimpleModelFFX_ResetLights 004E6BE0 f end=004E6C5C +CSimpleModelFFX_AddLight 004E6C60 f end=004E6D4B +CSimpleModelFFX__CreateScriptMetaTable 004E6F60 f end=004E6F79 ; CSimpleModelFFX::CreateScriptMetaTable() CPassenger__GetRawPosition 004F4500 f end=004F45AC CGWorldFrame__GetActiveCamera 004F5960 f end=004F5973 CGWorldFrame__SendObjectTrackEvent 004F5980 f end=004F59E2 @@ -470,6 +578,7 @@ CGWorldFrame__CursorTrackObject 004F59F0 f end=004F5A52 CGWorldFrame__OnFrameSizeChanged 004F5A90 f end=004F5C10 CGWorldFrame__OnLayerCursorExit 004F5C10 f end=004F5C78 CGWorldFrame__SetNamePlateUpdate 004F5D80 f end=004F5D88 +CM2Model__GetBoundingBox 004F5E20 f CGWorldFrame__GetCameraFacing 004F6680 f end=004F66B4 CGWorldFrame__OnLayerTrackTerrain 004F66C0 f end=004F6961 CGWorldFrame__OnLayerMouseDown 004F6C10 f end=004F6C89 @@ -2537,6 +2646,10 @@ NetClient__Ping 00632CD0 f end=00632DA8 ; NetClient::Ping(CONNECTION_ID) NetClient__HandleIdle 00632DB0 f end=00632DFD ; 00005400 NetClient__RedirectHandler 00632E00 f end=00633015 ; 00005410 NetClient__WCMessageReady 00633330 f end=0063343D ; NetClient::WCMessageReady(WowConnection*, unsigned long, CDataStore*) +NETEVENTQUEUE__NETEVENTQUEUE 00633440 f end=0063346D ; NETEVENTQUEUE::NETEVENTQUEUE(NetClient*) +NETEVENTQUEUE__Poll 006334F0 f end=0063360E ; NETEVENTQUEUE::Poll() +NETEVENTQUEUE__AddEvent 00633650 f end=0063372A ; NETEVENTQUEUE::AddEvent(EVENTID, void*, NetClient*, void const*, unsigned long) +NETEVENTQUEUE__destructor 00633730 f end=00633797 ; NETEVENTQUEUE::~NETEVENTQUEUE() StaticDBLoadAll 006337D0 f end=0063478E ; 00005400 ClientDBShutdown 00634C60 f end=00634CBB ; 00005400 ClientDBInitialize 00634E00 f end=00634E62 ; ClientDBInitialize() @@ -2812,8 +2925,9 @@ CBLPFile__Lock2 006AFCE0 f end=006AFF06 type="int32_t __thiscall func(CBLPFile* CBLPFile__Open 006AFF10 f end=006AFFCF type="int32_t __thiscall func(CBLPFile* this, char* filename)" CBLPFile__LockChain2 006AFFD0 f end=006B012E type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, MipBits** images, uint32_t mipLevel, int32_t a6)" ClientServices__LoadCDKey 006B0190 f end=006B0246 +ClientConnection__ClientConnection 006B0250 f end=006B02B5 ClientConnection__Cleanup 006B0850 f end=006B086B -ClientServices__Disconnect 006B0940 f end=006B095E +ClientConnection__Disconnect 006B0940 f end=006B095E ; ClientConnection::Disconnect(DISCONNECT_REASON) nullsub_154 006B0960 f ClientServices__Connection 006B0970 f end=006B098A ClientServices__LoginConnection 006B0990 f end=006B0996 @@ -2849,8 +2963,11 @@ ClientServices__GetCharacterRace 006B1070 f end=006B1076 ClientServices__GetCharacterClass 006B1080 f end=006B1086 ClientServices__GetCharacterSex 006B1090 f end=006B1096 ClientServices__GetCharacterLevel 006B10A0 f end=006B10A6 -ClientServices__PollStatus 006B1100 f end=006B11FC -ClientConnection__Cancel 006B1200 f end=006B1252 +ClientConnection__PollStatus 006B1100 f end=006B11FC ; ClientConnection::PollStatus(WOWCS_OPS&, char const**, int&, int&) +ClientConnection__Cancel 006B1200 f end=006B1252 ; ClientConnection::Cancel(int) +ClientConnection__HandleConnect 006B1260 f end=006B12C3 ; ClientConnection::HandleConnect() +ClientConnection__Connect 006B1390 f end=006B1450 ; ClientConnection::Connect() +ClientConnection__GetCharacterList 006B14C0 f end=006B1553 ; ClientConnection::GetCharacterList() ClientServices__RequestCharacterCreate 006B1620 f end=006B1785 ClientServices__CharacterSetInGame 006B1840 f end=006B18B8 ClientServices__CharacterLogout 006B1930 f end=006B1A02 @@ -2921,7 +3038,28 @@ GxuXformCalcFrustumCorners 006BF6D0 f end=006BFB60 GxuUpdateSingleColorTexture 006BFDA0 f end=006BFDFE GxuXformCreateProjection_SG 006BFE00 f end=006BFE5C GxuXformCreateLookAtSgCompat 006BFE60 f end=006C004D +CGxString__WriteGeometry 006C5E90 f end=006C5EE0 ; CGxString::WriteGeometry(CGxVertexPCT*, int, int, int) const +CGxString__InitializeViewTranslation 006C6190 f end=006C63D8 ; CGxString::InitializeViewTranslation() +CGxString__SetStringPosition 006C6410 f end=006C6430 ; CGxString::SetStringPosition(C3Vector const&) +CGxString__AddHyperlinkParseInfo 006C6A70 f end=006C6AE6 ; CGxString::AddHyperlinkParseInfo(GXUFONTHYPERLINKINFO) +CGxString__ClearInstanceData 006C6B90 f end=006C6BF4 ; CGxString::ClearInstanceData() +CGxString__Tick 006C6C00 f end=006C6C23 ; CGxString::Tick() +CGxString__InitializeTextLine 006C6CD0 f end=006C7416 ; CGxString::InitializeTextLine(char const*, unsigned int, CImVector&, C3Vector const&, unsigned int*, EMBEDDEDPARSEINFO&) +CGxString__AddShadow 006C7440 f end=006C747B ; CGxString::AddShadow(C2Vector const&, CImVector const&) +CGxString__CheckGeometry 006C7480 f end=006C74C5 ; CGxString::CheckGeometry() +CGxString__Recycle 006C75E0 f end=006C7631 ; CGxString::Recycle() +CGxString__destructor 006C7760 f end=006C78EC ; CGxString::~CGxString() +CGxString__SetGradient 006C78F0 f end=006C7A9C ; CGxString::SetGradient(int, int) +CGxString__GetNewString 006C7AA0 f end=006C7B0E ; CGxString::GetNewString(int) +CGxString__CreateGeometry 006C7B10 f end=006C7FFA ; CGxString::CreateGeometry() IGxuFontGlyphRenderGlyph 006C8CC0 f end=006C8E6B +SHA1__Process 006CA180 f end=006CA235 ; SHA1::Process(void const*, unsigned int) +SHA1__Finish 006CA270 f end=006CA329 ; SHA1::Finish(SHA1::Digest&) +SHA1_Transform 006CA330 f end=006CB5EE +SHA1_Init 006CB5F0 f end=006CB622 ; SHA1_Init(SHA1_CONTEXT*) +SHA1_Update 006CB630 f end=006CB6E2 ; SHA1_Update(SHA1_CONTEXT*, unsigned char const*, unsigned int) +SHA1_Final 006CB6F0 f end=006CB7BE ; SHA1_Final(unsigned char*, SHA1_CONTEXT*) +SHA1_InterleaveHash 006CB7C0 f end=006CB8FD ; SHA1_InterleaveHash(unsigned char*, unsigned char const*, unsigned int) CGPlayer_C__ClearLootingObject 006CEDD0 f end=006CEDE7 CGPlayer_C__GetPendingMovie 006CF290 f end=006CF296 MovementDestroy 006F0C30 f end=006F0C6E @@ -3135,8 +3273,10 @@ SRgnCombineRectf 00777420 f end=00777588 type="void __stdcall func(HSRGN handle, SRgnGetBoundingRectf 00777590 f end=00777897 type="void __stdcall func(HSRGN handle, RECTF* rect)" SRgnDelete 00777940 f end=00777971 type="void __stdcall func(HSRGN handle)" SRgnCreate 00777980 f end=00777A78 type="void __stdcall func(HSRGN* handlePtr, uint32_t reserved)" -MD5Init 00779340 f end=0077936B -MD5Final 00779AE0 f end=00779B97 +MD5Init 00779340 f end=0077936B ; 00005410 +MD5Update 00779A30 f end=00779AD8 ; 00005410 +MD5Final 00779AE0 f end=00779B97 ; 00005410 +SHA1__Prepare 0077AAA0 f end=0077AAD1 ; SHA1::Prepare() TSFixedArray_uint32_t_Set 0077AC80 f end=0077ACE4 type="void __thiscall func(TSFixedArray_uint32_t* this, uint32_t count, uint32_t* data)" BigBuffer__operator_index 0077ACF0 f end=0077AD10 type="uint32_t __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const Compare 0077AD10 f end=0077ADC5 type="int32_t __fastcall func(BigBuffer* a, BigBuffer* b)" @@ -3174,6 +3314,34 @@ PowMod 0077C720 f end=0077C97B type="void __stdcall func(BigBuffer* a, BigBuffer SBigPowMod 0077C980 f end=0077C9A4 type="void __stdcall func(BigData* a, BigData* b, BigData* c, BigData* d)" World__SetLoadProgressCallback 0077EC90 f end=0077ECA6 World__Preload 00781500 f end=007815B7 +DayNight__Update 007816F0 f end=007819BC ; DayNight::Update(unsigned int, float, float) +CMapObj__Init 007AE300 f end=007AE3A6 ; CMapObj::Init() +CMapObj__CMapObj 007B0580 f end=007B05F9 ; CMapObj::CMapObj() +CMapObj__Create 007B0CC0 f end=007B0D37 ; CMapObj::Create(char const*) +CDetailDoodad__UpdateAlphaRampTexture 007B1270 f end=007B129F ; CDetailDoodad::UpdateAlphaRampTexture(EGxTexCommand, unsigned int, unsigned int, unsigned int, unsigned int, void*, unsigned int&, void const*&) +CDetailDoodad__InitializeShaderConstants 007B15D0 f end=007B1B05 ; CDetailDoodad::InitializeShaderConstants() +CDetailDoodad__Initialize 007B2760 f end=007B29AA ; CDetailDoodad::Initialize() +CDetailDoodad__InitializeRenderState 007B2D30 f end=007B304E ; CDetailDoodad::InitializeRenderState() +TSList__LinkToHead 007B5020 f end=007B50AB ; 00005410 +CMap__LoadWdt 007BF8B0 f end=007BFCDC ; CMap::LoadWdt() +CMap__Load 007BFCE0 f end=007BFE33 ; public: static void __cdecl CMap::Load(char const *, int) +CMap__AllocMapObj 007BFF20 f end=007BFF6B ; CMap::AllocMapObj() +CMap__AllocLight 007C08A0 f end=007C0907 ; public: static class CMapLight * __fastcall CMap::AllocLight(void) +CMapDoodadDef__SelectLights 007C1150 f end=007C1371 ; CMapDoodadDef::SelectLights(CM2Lighting*) +CMapEntity__SelectLights 007C1730 f end=007C1ACA ; CMapEntity::SelectLights(CM2Lighting*) +CMapChunk__UpdateLights 007C65A0 f end=007C65FE ; public: void __thiscall CMapChunk::UpdateLights(void) +CMapBaseObj__CMapBaseObj 007D7260 f end=007D7293 ; CMapBaseObj::CMapBaseObj() +CMapObj__Read 007D80C0 f end=007D81BB ; CMapObj::Read(char const*) +CMapLight__CMapLight 007D9B10 f end=007D9B8F ; public: __thiscall CMapLight::CMapLight(void) +CMap__CreateLight 007D9BD0 f end=007D9C7B ; CMap::CreateLight(bool, bool) +CMap__UpdateLightBounds 007D9C80 f end=007D9D4F ; public: static void __cdecl CMap::UpdateLightBounds(class CMapLight *) +CMap__EnableLight 007D9D50 f end=007D9D66 ; public: static void __cdecl CMap::EnableLight(class CMapLight *) +CMap__DestroyLight 007D9D70 f end=007D9DDE ; public: static void __cdecl CMap::DestroyLight(class CMapLight *) +CMap__LinkLightToChunks 007D9DE0 f end=007D9F8F ; CMap::LinkLightToChunks(class CMapLight *) +CMap__LinkLightToMapObjDefs 007D9F90 f end=007DA0F5 ; CMap::LinkLightToMapObjDefs(class CMapLight *) +CMap__UpdateLight 007DA100 f end=007DA187 ; CMap::UpdateLight(class CMapLight *) +WardenClient_Destroy 007DA420 f end=007DA4B0 ; WardenClient_Destroy() +WardenClient_Initialize 007DA8C0 f end=007DA92C ; WardenClient_Initialize() Script_VoiceEnumerateOutputDevices 007DAB80 f end=007DAC34 Script_VoiceEnumerateCaptureDevices 007DAC40 f end=007DACEA Script_VoiceSelectOutputDevice 007DACF0 f end=007DADD2 @@ -3190,6 +3358,19 @@ Script_VoiceIsDisabledByClient 007DC910 f end=007DC94A Script_GetVoiceSessionMemberInfoBySessionID 007DEEF0 f end=007DF0AF Script_UnitIsTalking 007DF0B0 f end=007DF142 IsRussian 007E1030 f end=007E1049 +DayNight__CalcFogRate 007ECD00 f end=007ECD76 ; DayNight::CalcFogRate(float, float) +DayNight__SetOverrideLightParamsID 007ECEC0 f end=007ECEDC ; DayNight::SetOverrideLightParamsID(int) +DayNight__ClearOverrideLightParamsID 007ECEE0 f end=007ECEEB ; DayNight::ClearOverrideLightParamsID() +DayNightGetInfo 007ECEF0 f end=007ECEF6 +DayNight__InterpTable 007ED3B0 f end=007ED4C0 ; DayNight::InterpTable(C2Vector const*, unsigned int, float) +DayNight__ClearOverrideFog 007ED820 f end=007ED86E ; DayNight::ClearOverrideFog() +DayNight__SetOverrideFog 007ED870 f end=007ED901 ; DayNight::SetOverrideFog(float, float, CImVector, int) +DayNight__SetDirection 007EEA90 f end=007EECBC ; DayNight::SetDirection() +DayNight__SetPlanets 007EECC0 f end=007EF6D7 ; DayNight::SetPlanets() +DayNight__UpdateFog 007F16F0 f end=007F1B0C ; DayNight::UpdateFog() +DayNightInitialize 007F2790 f end=007F2A1F +DayNight__SetColors 007F3230 f end=007F3913 ; DayNight::SetColors() +DayNight__UpdateLighting 007F3920 f end=007F39AA ; DayNight::UpdateLighting() MinimapSetCorpsePOI 007F4990 f end=007F49FE SpellVisualsClear 007FC9F0 f end=007FCA29 Spell_C_IsTargeting 007FD620 f end=007FD62C @@ -3209,6 +3390,7 @@ Script_SpellStopCasting 00809EA0 f end=00809F7E Script_SpellTargetUnit 0080DC00 f end=0080DCE3 FrameXML_LoadXML 00812530 f end=008125C0 FrameXML_RegisterLoadProgressCallback 00812840 f end=00812869 +FrameXML_FreeHashNodes 00812B90 f end=00812B9D ; FrameXML_FreeHashNodes() FrameXML_CreateFrame 00812FA0 f end=008131CD FrameXML_RegisterFactory 00813D20 f end=00813DEF FrameXML_RegisterDefault 00813DF0 f end=00813EDC @@ -3240,10 +3422,150 @@ Script_EnumerateFrames 0081B9C0 f end=0081BAAA Script_GetNumFrames 0081BAB0 f end=0081BB15 Script_CreateFrame 0081BB20 f end=0081BE68 Script_GetFramesRegisteredForEvent 0081BE70 f end=0081BF4D +CM2Cache__BeginThread 0081BFA0 f end=0081BFC4 ; CM2Cache::BeginThread(void (*)(void*), void*) +CM2Cache__WaitThread 0081BFD0 f end=0081BFDE ; CM2Cache::WaitThread() +CM2Cache__ThreadProc 0081BFE0 f end=0081C05B ; CM2Cache::ThreadProc(void*) M2GetCacheFlags 0081C0B0 f end=0081C0B6 M2SetCacheFlags 0081C0C0 f end=0081C0CD +CM2Cache__Initialize 0081C0D0 f end=0081C28C ; CM2Cache::Initialize(unsigned int) +CM2Cache__GarbageCollect 0081C290 f end=0081C300 ; CM2Cache::GarbageCollect(int) +CM2Cache__Destroy 0081C300 f end=0081C389 ; CM2Cache::Destroy() +CM2Cache__CreateShared 0081C390 f end=0081C6D5 ; CM2Cache::CreateShared(char const*, unsigned int) M2Initialize 0081C6E0 f end=0081C747 -CM2Model__GetCameraByIndex 00824170 f end=008241CA +CM2Cache__UpdateShared 0081C790 f end=0081C832 ; CM2Cache::UpdateShared() +CM2Cache__LinkToSharedUpdateList 0081C840 f end=0081C862 ; CM2Cache::LinkToSharedUpdateList(CM2Shared*) +CM2Cache__CM2Cache 0081C900 f end=0081C988 ; CM2Cache::CM2Cache() +CM2Scene__AdvanceTime 0081C9C0 f end=0081CA09 ; CM2Scene::AdvanceTime(unsigned int) +CM2Scene__AnimateThread 0081CE70 f end=0081CF14 ; CM2Scene::AnimateThread(void*) +CM2Scene__SelectLights 0081E400 f end=0081E58F ; CM2Scene::SelectLights(CM2Lighting*) +CM2Scene__SortDoodadProxy 0081EA90 f end=0081EACA ; CM2Scene::SortDoodadProxy(unsigned int, unsigned int, void const*) +CM2Scene__SortOpaqueGeoBatches 0081EAD0 f end=0081ED03 ; CM2Scene::SortOpaqueGeoBatches(M2Element*, M2Element*) +CM2Scene__SortOpaqueRibbons 0081ED10 f end=0081EDEB ; CM2Scene::SortOpaqueRibbons(M2Element*, M2Element*) +CM2Scene__SortOpaqueParticles 0081EDF0 f end=0081EE91 ; CM2Scene::SortOpaqueParticles(M2Element*, M2Element*) +CM2Scene__SortOpaque 0081EEA0 f end=0081EF15 ; CM2Scene::SortOpaque(unsigned int, unsigned int, void const*) +CM2Scene__SortTransparent 0081EF30 f end=0081F0D7 ; CM2Scene::SortTransparent(unsigned int, unsigned int, void const*) +CM2Scene__SortAdditiveParticles 0081F0E0 f end=0081F1C3 ; CM2Scene::SortAdditiveParticles(unsigned int, unsigned int, void const*) +CM2Scene__ComputeElementShaders 0081F1D0 f end=0081F327 ; CM2Scene::ComputeElementShaders(M2Element*) +CM2SceneRender__CM2SceneRender 0081F330 f end=0081F449 ; CM2SceneRender::CM2SceneRender(CM2Scene*) +CM2SceneRender__SetupTextures 0081F450 f end=0081F620 ; CM2SceneRender::SetupTextures() +CM2SceneRender__SetBatchVertices 0081F700 f end=0081F7FC ; CM2SceneRender::SetBatchVertices(int) +CM2Scene__CreateModel 0081F8F0 f end=0081F96F ; CM2Scene::CreateModel(char const*, unsigned int) +CM2Scene__DuplicateModel 0081F970 f end=0081F9D7 ; CM2Scene::DuplicateModel(CM2Model*, unsigned int) +CM2Scene__SortAdditiveParticleElements 0081F9E0 f end=0081FAF6 ; CM2Scene::SortAdditiveParticleElements(unsigned int) +CM2SceneRender__SetupLighting 0081FB10 f end=0081FE7A ; CM2SceneRender::SetupLighting() +CM2SceneRender__SetupMaterial 0081FE90 f end=008203AA ; CM2SceneRender::SetupMaterial() +CM2SceneRender__DrawBatch 008203B0 f end=00820718 ; CM2SceneRender::DrawBatch() +CM2SceneRender__DrawBatchProj 00820720 f end=00820ADD ; CM2SceneRender::DrawBatchProj() +CM2SceneRender__DrawBatchDoodad 00820AE0 f end=00820F35 ; CM2SceneRender::DrawBatchDoodad(M2Element*, unsigned int*) +CM2SceneRender__DrawRibbon 00820F40 f end=0082103B ; CM2SceneRender::DrawRibbon() +CM2SceneRender__DrawParticle 008214E0 f end=00821667 ; CM2SceneRender::DrawParticle(unsigned int, M2Element*, unsigned int*, unsigned int) +CM2Scene__CM2Scene 008216C0 f end=00821842 ; CM2Scene::CM2Scene(CM2Cache*) +CM2Scene__destructor 00821850 f end=0082192E ; CM2Scene::~CM2Scene() +CM2Scene__Animate 00821A20 f end=0082303A ; CM2Scene::Animate(C3Vector const&) +CM2Scene__Release 00823040 f end=00823062 ; CM2Scene::Release() +CM2SceneRender__DrawCallback 008230D0 f end=0082312A ; CM2SceneRender::DrawCallback() +CM2SceneRender__Draw 00823130 f end=00823C8D ; CM2SceneRender::Draw(M2PASS, M2Element*, unsigned int*, unsigned int*) +CM2Scene__Draw 00823CB0 f end=00823D4D ; CM2Scene::Draw(M2PASS) +CM2Model__WaitForLoad 00823ED0 f end=00823F0A ; CM2Model::WaitForLoad(char const*) +CM2Model__SetAnimating 00823F10 f end=00823F89 ; CM2Model::SetAnimating(int) +CM2Model__SetSequenceCallback 00823FE0 f end=0082405E ; CM2Model::SetSequenceCallback(void (*)(CM2Model*, unsigned int, unsigned int, int, unsigned int, unsigned long long, int), unsigned long long) +CM2Model__SetEventCallback 00824060 f end=008240E1 ; CM2Model::SetEventCallback(void (*)(CM2Model*, unsigned int, unsigned int, unsigned int, C3Vector const&, unsigned int, unsigned long long), unsigned long long) +CM2Model__GetCameraByIndex 00824170 f end=008241CA ; CM2Model::GetCameraByIndex(unsigned int) +CM2Model__LinkToCallbackListTail 008244F0 f end=0082450E ; CM2Model::LinkToCallbackListTail() +CM2Model__UnlinkFromCallbackList 00824510 f end=00824542 ; CM2Model::UnlinkFromCallbackList() +CM2Model__IsBatchDoodadCompatible 00824550 f end=008245A4 ; CM2Model::IsBatchDoodadCompatible(M2Batch*) const +CM2Model__Release 00824ED0 f end=00824EFD ; CM2Model::Release() +CM2Model__IsLoaded 00824F00 f end=00824FB1 ; CM2Model::IsLoaded(int, int) +CM2Model__IsDrawable 00824FC0 f end=008250AA ; CM2Model::IsDrawable(int, int) +CM2Model__UpdateLoaded 00825170 f end=008251AF ; CM2Model::UpdateLoaded() +CM2Model__SetLoadedCallback 008251B0 f end=008251C8 ; CM2Model::SetLoadedCallback(void (*)(CM2Model*, void*), void*) +CM2Model__SetWorldTransform 008251D0 f end=00825256 ; CM2Model::SetWorldTransform(C3Vector const&, float, float) +CM2Model__UnoptimizeVisibleGeometry 00825D70 f end=00825E00 ; CM2Model::UnoptimizeVisibleGeometry() +CM2Model__SequenceFallbackById 00826350 f end=008264A9 ; CM2Model::SequenceFallbackById(M2SequenceFallback*, unsigned int) const +CM2Model__SetupBoneSequence 00826B00 f end=00826C3F ; CM2Model::SetupBoneSequence(unsigned short, M2SequenceFallback, unsigned int, float, M2ModelBoneSeq*) +CM2Model__SetPrimaryBoneSequence 00826C40 f end=00826DD0 ; CM2Model::SetPrimaryBoneSequence(unsigned short, unsigned short, M2SequenceFallback, unsigned int, float, int) +CM2Model__SetSecondaryBoneSequence 00826DD0 f end=00826E54 ; CM2Model::SetSecondaryBoneSequence(unsigned short, unsigned short, M2SequenceFallback, unsigned int, float) +CM2Model__DetachAllChildrenById 00827560 f end=008275E9 ; CM2Model::DetachAllChildrenById(unsigned int) +CM2Model__GetCameraById 00827960 f end=008279E3 ; CM2Model::GetCameraById(unsigned int) +CM2Model__FindKey 008284D0 f end=00828674 ; CM2Model::FindKey(M2ModelBoneSeq*, M2TrackBase const&, unsigned int&, unsigned int&, float&) +CM2Model__AnimateST 00828A00 f end=00828F8A ; CM2Model::AnimateST() +CM2Model__SetIndices 00828F90 f end=00829160 ; CM2Model::SetIndices() const +CM2Model__SetVertices 00829160 f end=00829296 ; CM2Model::SetVertices(int, M2SkinSection*, unsigned int) const +CM2Model__RenderModelBatchesForProjectedTexture 00829AA0 f end=00829B94 ; CM2Model::RenderModelBatchesForProjectedTexture() +CM2Model__CM2Model 0082BE60 f end=0082C1B7 ; CM2Model::CM2Model() +CM2Model__OptimizeVisibleGeometry 0082C970 f end=0082CEC2 ; CM2Model::OptimizeVisibleGeometry() +CM2Model__AnimateParticlesMT 0082D2F0 f end=0082D6E1 ; CM2Model::AnimateParticlesMT() +CM2Model__AnimateTextureTransformsMT 0082D6F0 f end=0082D903 ; CM2Model::AnimateTextureTransformsMT() +CM2Model__SetVerticesMultiSample 0082D910 f end=0082DA32 ; CM2Model::SetVerticesMultiSample(int, M2SkinSection*) +CM2Model__SetWorldTransform 0082DD80 f end=0082E0B3 ; CM2Model::SetWorldTransform(C3Vector const&, float, float, C3Vector const&, unsigned int) +CM2Model__AnimateMTSimple 0082E140 f end=0082E548 ; CM2Model::AnimateMTSimple(C44Matrix const*, C3Vector const&, C3Vector const&, float, float) +CM2Model__AnimateAttachmentsMT 0082E550 f end=0082E71A ; CM2Model::AnimateAttachmentsMT() +CM2Model__ProcessSequenceCallback 0082E790 f end=0082E83C ; CM2Model::ProcessSequenceCallback(unsigned int, unsigned int, unsigned int, unsigned int) +CM2Model__GetCollisionFacets 0082EC30 f end=0082F0EE ; CM2Model::GetCollisionFacets(CAaBox const&, C44Matrix const&, TSGrowableArray&) +CM2Model__AnimateMT 0082F0F0 f end=0083096B ; CM2Model::AnimateMT(C44Matrix const*, C3Vector const&, C3Vector const&, float, float) +CM2Model__AnimateParticleST 008309C0 f end=00830DB3 ; CM2Model::AnimateParticleST(float, unsigned int) +CM2Model__Animate 00830DC0 f end=00830F83 ; CM2Model::Animate() +CM2Model__ProcessEventCallbacks 00830FB0 f end=00831298 ; CM2Model::ProcessEventCallbacks(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) +CM2Model__GetAttachmentWorldTransform 00831410 f end=00831542 ; CM2Model::GetAttachmentWorldTransform(unsigned int) +CM2Model__AttachToParent 00831630 f end=008317D4 ; CM2Model::AttachToParent(CM2Model*, unsigned int, C3Vector const*, int) +CM2Model__SetupLighting 00831AF0 f end=00831BA3 ; CM2Model::SetupLighting() +CM2Model__SetBoneSequenceDeferred 00831C30 f end=00831E1D ; CM2Model::SetBoneSequenceDeferred(unsigned short, M2Data*, unsigned short, unsigned int, float, M2SequenceFallback, int, int, int, unsigned int) +CM2Model__CancelDeferredSequences 00831EC0 f end=00831FB6 ; CM2Model::CancelDeferredSequences(unsigned int, bool) +CM2Model__CallSequenceCallback 00831FC0 f end=008321D1 ; CM2Model::CallSequenceCallback(M2ModelCallback*) +CM2Model__CallCallbacks 008321E0 f end=00832253 ; CM2Model::CallCallbacks() +CM2Model__ProcessCallbacks 00832260 f end=00832449 ; CM2Model::ProcessCallbacks() +CM2Model__ProcessCallbacksRecursive 00832450 f end=008324F5 ; CM2Model::ProcessCallbacksRecursive() +CM2Model__destructor 00832640 f end=00832832 ; CM2Model::~CM2Model() +CM2Model__UnsetBoneSequence 00832840 f end=00832AAA ; CM2Model::UnsetBoneSequence(unsigned int, int, int) +CM2Model__SetBoneSequence 00832AB0 f end=00832DCD ; CM2Model::SetBoneSequence(unsigned int, unsigned int, unsigned int, unsigned int, float, int, int) +CM2Model__InitializeLoaded 00832EA0 f end=008344DC ; CM2Model::InitializeLoaded() +CM2Model__AttachToScene 00834540 f end=00834628 ; CM2Model::AttachToScene(CM2Scene*) +CM2Model__AttachToSceneRecursive 00834630 f end=0083465C ; CM2Model::AttachToSceneRecursive(CM2Scene*) +CM2Model__Initialize 00834810 f end=008348CA ; CM2Model::Initialize(CM2Scene*, CM2Shared*, CM2Model*, unsigned int) +CM2Light__Initialize 008348D0 f end=008348F2 ; CM2Light::Initialize(CM2Scene*) +CM2Lighting__Initialize 00834900 f end=0083493E ; CM2Lighting::Initialize(CM2Scene*, CAaSphere const&) +CM2Lighting__SetFog 00834940 f end=0083498C ; CM2Lighting::SetFog(C3Vector const&, float, float) +CM2Lighting__SetFog 00834990 f end=008349DB ; CM2Lighting::SetFog(C3Vector const&, float, float, float) +CM2Lighting__GetPointLight 008349E0 f end=00834A40 ; CM2Lighting::GetPointLight(unsigned int, C3Vector&, C3Vector&, C3Vector&) +CM2Light__CM2Light 00834A40 f end=00834AA7 ; CM2Light::CM2Light() +CM2Light__destructor 00834AB0 f end=00834AD4 ; CM2Light::~CM2Light() +CM2Light__SetDirection 00834AE0 f end=00834B43 ; CM2Light::SetDirection(C3Vector const&) +CM2Light__Link 00834C70 f end=00834D84 ; CM2Light::Link() +CM2Lighting__AddAmbient 00834D90 f end=00834DB4 ; CM2Lighting::AddAmbient(C3Vector const&) +CM2Lighting__AddDiffuse 00834DC0 f end=00834F58 ; CM2Lighting::AddDiffuse(C3Vector const&, C3Vector const&) +CM2Lighting__AddLight 00834F60 f end=00835096 ; CM2Lighting::AddLight(CM2Light*) +CM2Lighting__CameraSpace 008350A0 f end=00835275 ; CM2Lighting::CameraSpace() +CM2Lighting__SetupSunlight 00835280 f end=008353C3 ; CM2Lighting::SetupSunlight() +CM2Lighting__SetupGxLights 008353D0 f end=008355CC ; CM2Lighting::SetupGxLights(C3Vector const*) +CM2Lighting__GetSunLight 008355D0 f end=00835638 ; CM2Lighting::GetSunLight(C3Vector&, C3Vector&, C3Vector&, C3Vector&) +CM2Light__SetLightType 00835640 f end=00835683 ; CM2Light::SetLightType(M2LIGHTTYPE) +CM2Light__SetPosition 00835690 f end=008356E2 ; CM2Light::SetPosition(NTempest::C3Vector const&) +CM2Light__SetVisible 008356F0 f end=0083574C ; CM2Light::SetVisible(int) +CM2Shared__AddRef 00835970 f end=008359BB ; CM2Shared::AddRef() +CM2Shared__CallbackWhenLoaded 008359C0 f end=008359F5 ; CM2Shared::CallbackWhenLoaded(CM2Model*) +CM2Shared__LoadFailedCallback 00835A00 f end=00835A1D ; CM2Shared::LoadFailedCallback(CAsyncObject*) +CM2Shared__SetIndices 008360A0 f end=008362AD ; CM2Shared::SetIndices() +CM2Shared__SetVertices 008362B0 f end=008365F5 ; CM2Shared::SetVertices(unsigned int) +CM2Shared__GetEffect 00836C90 f end=00836DD1 ; CM2Shared::GetEffect(M2Batch*) +CM2Shared__ConvertTextureValuesToCombos 00837250 f end=00837497 ; CM2Shared::ConvertTextureValuesToCombos() +CM2Shared__AssignBatchTextureComboIndices 008374A0 f end=00837672 ; CM2Shared::AssignBatchTextureComboIndices() +CM2Shared__SubstituteSpecializedShaders 00837680 f end=00837A3D ; CM2Shared::SubstituteSpecializedShaders() +CM2Shared__InitializeSkinProfile 00837A40 f end=00837ED4 ; CM2Shared::InitializeSkinProfile() +CM2Shared__FinishLoadingSkinProfile 00838490 f end=00838593 ; CM2Shared::FinishLoadingSkinProfile(unsigned int) +CM2Shared__CM2Shared 0083C5F0 f end=0083C6DC ; CM2Shared::CM2Shared(CM2Cache*) +CM2Shared__InitLowPrioritySequence 0083C6E0 f end=0083CA8D ; CM2Shared::InitLowPrioritySequence(unsigned int, unsigned char*, unsigned int) +CM2Shared__FinishLoadingLowPrioritySequence 0083CA90 f end=0083CB10 ; CM2Shared::FinishLoadingLowPrioritySequence(unsigned int, CAsyncObject*) +CM2Shared__SkinProfileLoadedCallback 0083CB10 f end=0083CB3B ; CM2Shared::SkinProfileLoadedCallback(void*) +CM2Shared__LoadSkinProfile 0083CB40 f end=0083CC77 ; CM2Shared::LoadSkinProfile(unsigned int) +CM2Shared__Initialize 0083CC80 f end=0083CEFA ; CM2Shared::Initialize() +CM2Shared__LoadSucceededCallback 0083D340 f end=0083D363 ; CM2Shared::LoadSucceededCallback(CAsyncObject*) +CM2Shared__Load 0083D410 f end=0083D505 ; CM2Shared::Load(SFile*, int, CAaBox*) +CM2Shared__CancelAllDeferredSequences 0083D510 f end=0083D5A6 ; CM2Shared::CancelAllDeferredSequences() +CM2Shared__destructor 0083D5B0 f end=0083D833 ; CM2Shared::~CM2Shared() +CM2Shared__LowPrioritySequenceLoadedCallback 0083D840 f end=0083D9E1 ; CM2Shared::LowPrioritySequenceLoadedCallback(void*) +CM2Shared__LowPrioritySequenceFailedCallback 0083D9F0 f end=0083DA10 ; CM2Shared::LowPrioritySequenceFailedCallback(void*) +CM2Shared__LoadLowPrioritySequence 0083DA10 f end=0083DC8D ; CM2Shared::LoadLowPrioritySequence(unsigned short) +CM2Shared__Release 0083DC90 f end=0083DCE8 ; CM2Shared::Release() _lua_gettop 0084DBD0 f _lua_settop 0084DBF0 f _lua_insert 0084DCC0 f @@ -3321,7 +3643,7 @@ OsIMEDestroy 0086D0C0 f end=0086D0Df OsTimeStartup 0086D430 f end=0086D439 type="void __stdcall func(TimingMethod timingMethod)" OsTimeShutdown 0086D440 f end=0086D445 OsTlsGetValue 0086D6D0 f end=0086D6DF -TSExplicitList_CGxBuf__LinkToTail 0086E200 f end=0086E25F type="void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)" +TSList__LinkToTail 0086E200 f end=0086E25F ; 00005410 OsCallSetContext 0086F5A0 f end=0086F5EA OsCallResetContext 0086F5F0 f end=0086F64E ; 00005410 OsCallInitialize 0086F760 f end=0086F875 @@ -3329,12 +3651,84 @@ OsCallInitializeContext 0086F880 f end=0086F902 OsClipboardGetString 00872280 f end=00872297 OsClipboardPutString 008722A0 f end=008722BF IOsClipboardGetString 008726F0 f end=008727BB +OsClipboardFreeString 008727C0 f end=008727DE IOsClipboardPutString 008727E0 f end=008728B8 -CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 +CShaderEffect__InitFixedFuncPass 008728C0 f end=008728FB ; CShaderEffect::InitFixedFuncPass(EGxTexOp const*, EGxTexOp const*, unsigned int) +CShaderEffect__SetUsePcfFiltering 00872AD0 f end=00872AF8 ; CShaderEffect::SetUsePcfFiltering(unsigned int) +CShaderEffect__UpdateWorldViewMatrix 00872B00 f end=00872C0A ; CShaderEffect::UpdateWorldViewMatrix() +CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 ; CShaderEffect::UpdateProjMatrix() +CShaderEffect__InitShaderSystem 00872CE0 f end=00872D29 ; CShaderEffect::InitShaderSystem(int, int) +CShaderEffect__InitEffect 00872D30 f end=00872DD9 ; CShaderEffect::InitEffect(char const*, char const*) +CShaderEffect__SetCurrent 00872F90 f end=00873054 ; CShaderEffect::SetCurrent() +CShaderEffect__SetShaders 00873060 f end=0087315B ; CShaderEffect::SetShaders(unsigned int, unsigned int) +CShaderEffect__SetDefaultShaders 00873160 f end=008731B4 ; CShaderEffect::SetDefaultShaders(unsigned int) +CShaderEffect__SetFogParams 00873210 f end=0087338B ; CShaderEffect::SetFogParams(float, float, float, CImVector const&) +CShaderEffect__SetFogEnabled 00873390 f end=00873472 ; CShaderEffect::SetFogEnabled(int) +CShaderEffect__SetTexMtx_Identity 00873480 f end=0087354E ; CShaderEffect::SetTexMtx_Identity(unsigned int) +CShaderEffect__SetTexMtx_SphereMap 00873550 f end=0087361E ; CShaderEffect::SetTexMtx_SphereMap(unsigned int) +CShaderEffect__SetTexMtx 00873620 f end=00873721 ; CShaderEffect::SetTexMtx(C44Matrix const&, unsigned int) +CShaderEffect__SetDiffuse 00873900 f end=00873A4B ; CShaderEffect::SetDiffuse(C4Vector const&) +CShaderEffect__SetEmissive 00873A50 f end=00873B9B ; CShaderEffect::SetEmissive(C4Vector const&) +CShaderEffect__SetAlphaRef 00873BA0 f end=00873C1A ; CShaderEffect::SetAlphaRef(float) +CShaderEffect__SetLocalLighting 00873CA0 f end=00873ED2 ; CShaderEffect::SetLocalLighting(CM2Lighting*, int, C3Vector const*) +CShadowCache__NotifyTexturesRecreate 00873FE0 f end=00873FEB ; CShadowCache::NotifyTexturesRecreate() +CShadowCache__SetShadowMapGenericGlobal 008744E0 f end=008745CE ; CShadowCache::SetShadowMapGenericGlobal() +CShadowCache__SetShadowMapGenericInterior 008745D0 f end=00874658 ; CShadowCache::SetShadowMapGenericInterior(int) +CShaderEffectManager__GetEffect 00876530 f end=00876543 ; CShaderEffectManager::GetEffect(char const*) +CShaderEffectManager__CreateEffect 00876BE0 f end=00876C97 ; CShaderEffectManager::CreateEffect(char const*) +CShaderEffectManager__ParseEffectCallback 00876CA0 f end=00876D8D ; CShaderEffectManager::ParseEffectCallback(CShaderEffectParser::ParsedEffect const&, void*) +CShaderEffectManager__AddEffectFile 00876D90 f end=00876E2C ; CShaderEffectManager::AddEffectFile(char const*) stub_return_one_byte 008A1420 f end=008A1423 ; known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback FFX__Destroy 008C0360 f end=008C0589 -GxDefaultApi 008C8DE0 f type="EGxApi __stdcall func()" -stub_return_zero4 008E5250 f end=008E5253 ; Script_ToggleTris +stub_return_int32_one 008C8DE0 f type="int32_t __stdcall func()" ; Known names: GxDefaultApi, CCommand_Perf +GruntLogin__Connected 008CA0B0 f end=008CA135 ; GruntLogin::Connected(NETADDR const&) +GruntLogin__CantConnect 008CA140 f end=008CA1C5 ; GruntLogin::CantConnect() +GruntLogin__GetVersionProof 008CA260 f end=008CA2E5 ; GruntLogin::GetVersionProof(unsigned char const*) +GruntLogin__SetPinInfo 008CA360 f end=008CA3A7 ; GruntLogin::SetPinInfo(bool, unsigned int, unsigned char const*) +GruntLogin__SetTokenInfo 008CA400 f end=008CA419 ; GruntLogin::SetTokenInfo(bool, unsigned char) +GruntLogin__ProveVersion 008CA450 f end=008CA4C8 ; GruntLogin::ProveVersion(unsigned char const*) +GruntLogin__NextSecurityState 008CA4F0 f end=008CA540 ; GruntLogin::NextSecurityState(LOGIN_STATE) +GruntLogin__GetLogonMethod 008CA580 f end=008CA6F5 ; GruntLogin::GetLogonMethod() +GruntLogin__Reconnect 008CA700 f end=008CA722 ; GruntLogin::Reconnect() +GruntLogin__GetRealmList 008CA730 f end=008CA73B ; GruntLogin::GetRealmList() +GruntLogin__Logon 008CA740 f end=008CA7E5 ; GruntLogin::Logon(char const*, char const*) +GruntLogin__Wait 008CA7F0 f end=008CA875 ; GruntLogin::Wait(char const*, LoginData&) +GruntLogin__EnterPIN 008CA880 f end=008CA9AB ; GruntLogin::EnterPIN(int, unsigned char*) +GruntLogin__GetVersionChallenge 008CAC00 f end=008CAC07 ; GruntLogin::GetVersionChallenge() +GruntLogin__Init 008CAC50 f end=008CAC99 ; GruntLogin::Init(LoginResponse*) +GruntLogin__GruntLogin 008CACA0 f end=008CAD19 ; GruntLogin::GruntLogin() +GruntLogin__Logoff 008CAD20 f end=008CAD32 ; GruntLogin::Logoff() +GruntLogin__SetMatrixInfo 008CAD40 f end=008CAF95 ; GruntLogin::SetMatrixInfo(bool, unsigned char, unsigned char, unsigned char, unsigned char, bool, unsigned char, unsigned long long, unsigned char const*, unsigned int) +GruntLogin__ReconnectResult 008CB020 f end=008CB13E ; GruntLogin::ReconnectResult(Grunt::Result, unsigned char const*, unsigned int, unsigned short) +GruntLogin__LogonResult 008CB160 f end=008CB8E3 ; GruntLogin::LogonResult(Grunt::Result, unsigned char const*, unsigned int, unsigned short) +Grunt__ClientLink__Send 008CBA40 f end=008CBA8E ; 00005410 +Grunt__ClientLink__Shutdown 008CBA90 f end=008CBADD ; Grunt::ClientLink::Shutdown() +Grunt__ClientLink__Disconnect 008CBAE0 f end=008CBB09 ; Grunt::ClientLink::Disconnect() +Grunt__ClientLink__SetState 008CBB10 f end=008CBB3A ; 00005410 +Grunt__ClientLink__Connect 008CBB40 f end=008CBBE3 ; Grunt::ClientLink::Connect(char const*) +Grunt__ClientLink__CmdRealmList 008CC250 f end=008CC3D2 ; Grunt::ClientLink::CmdRealmList(CDataStore&) +Grunt__ClientLink__CmdAuthLogonChallenge 008CC3E0 f end=008CC794 ; Grunt::ClientLink::CmdAuthLogonChallenge(CDataStore&) +Grunt__ClientLink__CmdAuthLogonProof 008CC7A0 f end=008CC978 ; Grunt::ClientLink::CmdAuthLogonProof(CDataStore&) +Grunt__ClientLink__CmdAuthReconnectChallenge 008CC980 f end=008CCA4A ; Grunt::ClientLink::CmdAuthReconnectChallenge(CDataStore&) +Grunt__ClientLink__CmdAuthReconnectProof 008CCA50 f end=008CCB3B ; Grunt::ClientLink::CmdAuthReconnectProof(CDataStore&) +Grunt__ClientLink__CmdXferInitiate 008CCB40 f end=008CCC1F ; Grunt::ClientLink::CmdXferInitiate(CDataStore&) +Grunt__ClientLink__CmdXferData 008CCC20 f end=008CCCA9 ; Grunt::ClientLink::CmdXferData(CDataStore&) +Grunt__ClientLink__WCConnected 008CCCB0 f end=008CCD38 ; Grunt::ClientLink::WCConnected(WowConnection*, WowConnection*, unsigned long, NETCONNADDR const*) +Grunt__ClientLink__WCDisconnected 008CCD40 f end=008CCD97 ; Grunt::ClientLink::WCDisconnected(WowConnection*, unsigned long, NETCONNADDR const*) +Grunt__ClientLink__WCCantConnect 008CCDA0 f end=008CCDF7 ; Grunt::ClientLink::WCCantConnect(WowConnection*, unsigned long, NETCONNADDR const*) +Grunt__ClientLink__PackLogon 008CCE00 f end=008CCEDB ; Grunt::ClientLink::PackLogon(CDataStore&, Grunt::ClientLink::Logon const&) +Grunt__ClientLink__WCDataReady 008CD710 f end=008CD7D5 ; Grunt::ClientLink::WCDataReady(WowConnection*, unsigned long, unsigned char*, int) +Grunt__ClientLink__LogonNewSession 008CD7E0 f end=008CD9E8 ; Grunt::ClientLink::LogonNewSession(Grunt::ClientLink::Logon const&) +Grunt__ClientLink__LogonStoredSession 008CD9F0 f end=008CDB85 ; Grunt::ClientLink::LogonStoredSession(Grunt::ClientLink::Logon const&) +Grunt__ClientLink__GetRealmList 008CE0F0 f end=008CE1F5 ; Grunt::ClientLink::GetRealmList() +Grunt__Timer__Insert 008CE5C0 f end=008CE6C6 ; Grunt::Timer::Insert(Grunt::Timer::Event&) +Grunt__ClientLink__ProveVersion 008CE720 f end=008CED10 ; Grunt::ClientLink::ProveVersion(unsigned char const*) +Grunt__Timer__Pump 008CED90 f end=008CEE11 ; Grunt::Timer::Pump() +Grunt__ClientLink__Call 008CF600 f end=008CF67D ; Grunt::ClientLink::Call() +Grunt__Timer__ThreadProc 008CF770 f end=008CF794 ; Grunt::Timer::ThreadProc(void*) +Grunt__Timer__Timer 008CF7A0 f end=008CF7F9 ; Grunt::Timer::Timer() +Grunt__ClientLink__ClientLink 008CF800 f end=008CF905 ; Grunt::ClientLink::ClientLink(Grunt::ClientResponse&) +stub_return_zero4 008E5250 f end=008E5253 ; known names Script_ToggleTris, CLayoutFrame::IsAttachmentOrigin() stub_return_xor_eax 00936900 f end=00936905 ConsoleCommandHistoryDepth 0095BFB0 f end=0095BFB6 type="int32_t __stdcall func()" CDataRecycler__Clear 0095CEC0 f end=0095CF39 @@ -3387,6 +3781,91 @@ CSimpleModel_SetFogFar 009613A0 f end=00961418 type="int32_t __stdcall func(lua_ CSimpleModel_GetFogFar 00961420 f end=00961463 type="int32_t __stdcall func(lua_State* L)" CSimpleModel_ClearFog 00961470 f end=009614A7 type="int32_t __stdcall func(lua_State* L)" CSimpleModel_SetGlow 009614B0 f end=00961534 type="int32_t __stdcall func(lua_State* L)" +CSimpleEditBox__DeleteSubstring 00962F90 f end=0096313E ; DeleteSubString(int, int, int) +CSimpleEditBox__HighlightText 00963140 f end=009631A0 ; HighlightText(int, int) +CSimpleEditBox__UpdateSizes 00963740 f end=00963946 +CSimpleEditBox__FontUpdated 009650E0 f end=00965114 ; FontUpdated(CSimpleFontedFrameFont*, int) +CSimpleEditBox__OnFrameSizeChanged 009656D0 f end=009656F7 ; OnFrameSizeChanged(float, float) +CSimpleEditBox__Insert 00965960 f end=00965CDB ; Insert(char const*, char const*, int, int, int) +CSimpleEditBox__Insert 00965CE0 f end=00965D67 +CSimpleEditBox__PasteFromClipboard 00965ED0 f end=00965F1D +CSimpleEditBox__SetMultiLine 00965F20 f end=009660D3 ; SetMultiLine(int) +CSimpleEditBox__SetText 00966580 f end=009665FA ; SetText(char const*, char const*) +CSimpleEditBox__SetHistoryLines 00966FD0 f end=00967017 ; SetHistoryLines(int) +CSimpleEditBox__LoadXML 00967290 f end=00967670 ; LoadXML(XMLNode*, CStatus*) +CSimpleScrollFrame__RunOnScrollRangeChangedScript 0096AFD0 f end=0096B05B +CSimpleScrollFrame__UnparentFrame 0096B060 f end=0096B082 ; CSimpleScrollFrame::UnparentFrame(CSimpleFrame*) +CSimpleScrollFrame__UpdateScrollChild 0096B1C0 f end=0096B207 ; void __thiscall CSimpleScrollFrame::UpdateScrollChild(void) +CSimpleScrollFrame__OnFrameSizeChanged 0096B210 f end=0096B23A ; CSimpleScrollFrame::OnFrameSizeChanged(float, float) +CSimpleScrollFrame__CSimpleScrollFrame 0096B2D0 f end=0096B33F ; CSimpleScrollFrame::CSimpleScrollFrame(CSimpleFrame*) +CSimpleScrollFrame__SetScrollChild 0096B3A0 f end=0096B43D ; CSimpleScrollFrame::SetScrollChild(CSimpleFrame*) +CSimpleScrollFrame__SetVerticalScroll 0096B480 f end=0096B4BE ; CSimpleScrollFrame::SetVerticalScroll(float) +CSimpleScrollFrame__UpdateScrollChildRect 0096B4C0 f end=0096B59D ; CSimpleScrollFrame::UpdateScrollChildRect(float, float) +CSimpleScrollFrame__OnLayerUpdate 0096B5A0 f end=0096B60A ; CSimpleScrollFrame::OnLayerUpdate(float) +CSimpleScrollFrame__RenderScrollChild 0096B610 f end=0096B912 ; CSimpleScrollFrame::RenderScrollChild(void*) +CSimpleScrollFrame__LoadXML 0096B920 f end=0096B99B ; CSimpleScrollFrame::LoadXML(XMLNode*, CStatus*) +CSimpleScrollFrame__OnFrameRender 0096B9A0 f end=0096B9CE ; CSimpleScrollFrame::OnFrameRender(CRenderBatch*, unsigned int) +CSimpleScrollFrame__GetBoundsRect 0096B9D0 f end=0096BBAC ; CSimpleScrollFrame::GetBoundsRect(CRect&) +CSimpleSlider__RunOnMinMaxChangedScript 0096BBB0 f end=0096BC08 +CSimpleSlider__CSimpleSlider 0096BE50 f end=0096BEC9 ; CSimpleSlider::CSimpleSlider(CSimpleFrame*) +CSimpleSlider__IsA 0096BF00 f end=0096BF35 ; CSimpleSlider::IsA(int) const +CSimpleSlider__SetValue 0096C090 f end=0096C1A7 ; CSimpleSlider::SetValue(float, bool) +CSimpleSlider__SetMinMaxValues 0096C470 f end=0096C4FD ; CSimpleSlider::SetMinMaxValues(float, float) +CSimpleHTML__FontUpdated 0096C750 f end=0096C764 ; CSimpleHTML::FontUpdated(CSimpleFontedFrameFont*, int) +CSimpleHTML__CSimpleHTML 0096C820 f end=0096C922 ; CSimpleHTML::CSimpleHTML(CSimpleFrame*) +CSimpleHTML__IsA 0096C960 f end=0096C995 ; CSimpleHTML::IsA(int) const +CSimpleHTML__ParseIMG 0096C9E0 f end=0096CC8F ; CSimpleHTML::ParseIMG(XMLNode const*, CStatus*) +CSimpleHTML__AddText 0096CC90 f end=0096CE72 ; CSimpleHTML::AddText(char const*, HTML_TEXT_TYPE, unsigned int) +CSimpleHTML__ClearContent 0096D090 f end=0096D169 ; CSimpleHTML::ClearContent() +CSimpleHTML__ParseP 0096D170 f end=0096D478 ; CSimpleHTML::ParseP(XMLNode const*, HTML_TEXT_TYPE, CStatus*) +CSimpleHTML__ParseBODY 0096D740 f end=0096D883 ; CSimpleHTML::ParseBODY(XMLNode const*, CStatus*) +CSimpleHTML__SetText 0096D890 f end=0096DA31 ; CSimpleHTML::SetText(char const*, CStatus*) +CSimpleHTML__LoadXML 0096DA40 f end=0096DC2A ; CSimpleHTML::LoadXML(XMLNode*, CStatus*) +CSimpleSlider__RegisterScriptMethods 00971A40 f end=00971A60 ; CSimpleSlider::RegisterScriptMethods(lua_State*) +CSimpleSlider_GetMinMaxValues 00971D90 f end=00971DEF +CSimpleSlider_SetMinMaxValues 00971DF0 f end=00971E99 +CSimpleSlider_GetValue 00971EB0 f end=00971EF3 +CSimpleSlider_SetValue 00971F00 f end=00971F74 +CSimpleScrollFrame_SetVerticalScroll 00972560 f end=00972625 ; CSimpleScrollFrame_SetVerticalScroll(lua_State*) +CSimpleHTML_SetText 009750D0 f end=0097511B +CSimpleEditBox_SetText 00975E80 f end=00975F02 +CSimpleEditBox_HighlightText 00976080 f end=00976108 +CSimpleButton_GetButtonState 009771D0 f end=00977272 +CSimpleButton_SetStateTexture 00977A70 f end=00977BD7 ; CSimpleButton_SetStateTexture(lua_State*, CSimpleButtonState, char const*) +CSimpleButton_SetNormalTexture 00977C70 f end=00977C87 ; CSimpleButton_SetNormalTexture(lua_State*) +CSimpleHyperlinkedFrame__CSimpleHyperlinkedFrame 00978900 f end=0097894F ; CSimpleHyperlinkedFrame::CSimpleHyperlinkedFrame(CSimpleFrame*) +CParticleEmitter2__SetModel 00978B30 f end=00978B70 ; CParticleEmitter2::SetModel(CM2Scene*, char const*) +CParticleEmitter2__SetMaterial 00978BF0 f end=00978C34 ; CParticleEmitter2::SetMaterial(CParticleMat const&, CTexture*) +CParticleEmitter2__SetTextureDimensions 00978C70 f end=00978CF7 ; CParticleEmitter2::SetTextureDimensions(unsigned int, unsigned int) +CParticleEmitter2__SetParticleStyle 00978D00 f end=00978D93 ; CParticleEmitter2::SetParticleStyle(int, int, float, int) +CParticleEmitter2__SetFollowParams 00978DD0 f end=00978E24 ; CParticleEmitter2::SetFollowParams(float, float, float, float) +CParticleEmitter2__SetChooseRandomTexture 00978E30 f end=00978E67 ; CParticleEmitter2::SetChooseRandomTexture(int) +CParticleEmitter2__Destroy 009791E0 f end=00979241 ; CParticleEmitter2::Destroy() +CParticleEmitter2__SetParticleColors 0097A990 f end=0097AB01 ; CParticleEmitter2::SetParticleColors(CImVector const&, CImVector const&, CImVector const&) +CParticleEmitter2__GetReplacementColors 0097AB10 f end=0097ABF3 ; CParticleEmitter2::GetReplacementColors(CImVector&, CImVector&, CImVector&) +CParticleEmitter2__SetTwinkleScale 0097AC00 f end=0097AC1D ; CParticleEmitter2::SetTwinkleScale(CRange const&) +CParticleEmitter2__CreateChildEmittersFromModel 0097AEB0 f end=0097AEE4 ; CParticleEmitter2::CreateChildEmittersFromModel(CM2Scene*, char const*) +CParticleEmitter2__DetermineIfSimple 0097D370 f end=0097D5F5 ; CParticleEmitter2::DetermineIfSimple() +CParticleEmitter2__CParticleEmitter2 0097E150 f end=0097E3E6 ; CParticleEmitter2::CParticleEmitter2() +CRibbonEmitter__SetDataEnabled 0097F570 f end=0097F5A3 ; CRibbonEmitter::SetDataEnabled(int) +CRibbonEmitter__SetTexSlot 0097F5F0 f end=0097F60D ; CRibbonEmitter::SetTexSlot(unsigned int) +CRibbonEmitter__SetAbove 0097F610 f end=0097F620 ; CRibbonEmitter::SetAbove(float) +CRibbonEmitter__SetBelow 0097F620 f end=0097F630 ; CRibbonEmitter::SetBelow(float) +CRibbonEmitter__SetGravity 0097F630 f end=0097F640 ; CRibbonEmitter::SetGravity(float) +CRibbonEmitter__SetPos 0097F940 f end=0097FAC8 ; CRibbonEmitter::SetPos(C44Matrix const&, C3Vector const&, C44Matrix const*) +CRibbonEmitter__SetColor 0097FB60 f end=0097FBA0 ; CRibbonEmitter::SetColor(float, float, float) +CRibbonEmitter__SetAlpha 0097FBA0 f end=0097FBDA ; CRibbonEmitter::SetAlpha(float) +CRibbonEmitter__Update 00980090 f end=0098050D ; CRibbonEmitter::Update(float, int) +CRibbonEmitter__CRibbonEmitter 00980630 f end=0098080C ; CRibbonEmitter::CRibbonEmitter() +CRibbonEmitter__Initialize 009808A0 f end=00980B4A ; CRibbonEmitter::Initialize(float, float, CImVector const&, TSGrowableArray const&, TSGrowableArray const&, TSGrowableArray const&, CAaRect const&, unsigned int, unsigned int) +CPlaneParticleEmitter__CPlaneParticleEmitter 00981310 f end=00981343 ; CPlaneParticleEmitter::CPlaneParticleEmitter() +CSphereParticleEmitter__CSphereParticleEmitter 009813F0 f end=00981423 ; CSphereParticleEmitter::CSphereParticleEmitter() +CSplineParticleEmitter__SetSpline 00981500 f end=0098150F ; CSplineParticleEmitter::SetSpline(C3Vector const*, unsigned int) +CSplineParticleEmitter__CSplineParticleEmitter 009820F0 f end=00982148 ; CSplineParticleEmitter::CSplineParticleEmitter() +C4Quaternion__Slerp 00982460 f end=0098256C ; C4Quaternion::Slerp(float, C4Quaternion const&, C4Quaternion const&) +C4Quaternion__Nlerp 00982630 f end=0098269F ; C4Quaternion::Nlerp(float, C4Quaternion const&, C4Quaternion const&) +C3Vector__C3Vector 00982970 f end=009829AD ; C3Vector::C3Vector(CImVector const&) +C4Vector__C4Vector 00984C90 f end=00984CDC ; C4Vector::C4Vector(CImVector const&) Script_PlaySound 009858B0 f end=0098594B Script_PlayMusic 00985950 f end=009859AA Script_PlaySoundFile 009859B0 f end=00985A0A @@ -3416,6 +3895,24 @@ SI2__StopGlueAmbience 00985F70 f end=00985FA2 SI2__StopGlueMusic 009860E0 f end=00986128 SI2__PlayVocalErrorSound 00986D00 f end=00986DD6 CGNamePlateFrame__SetCastBarValues 0098F040 f end=0098F382 +SRP6_Client__BeginAuthentication 009A8300 f end=009A83DF ; SRP6_Client::BeginAuthentication(char const*, char const*) +SRP6_Client__CalculateProof 009A83E0 f end=009A88B1 ; SRP6_Client::CalculateProof(unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char const*, unsigned int, SRP6_Random&) +SRP6_Client__VerifyServerProof 009A88C0 f end=009A897C ; SRP6_Client::VerifyServerProof(unsigned char const*, unsigned int) +SRP6_Random__SRP6_Random 009A8980 f end=009A89EA ; SRP6_Random::SRP6_Random(void const*, unsigned int) +SRP6_Random__GenerateRandomBytes 009A89F0 f end=009A8A9B ; SRP6_Random::GenerateRandomBytes(unsigned char*, unsigned int) +BigIntegerFromInt 009A8AA0 f end=009A8AC1 ; BigIntegerFromInt(unsigned int) +BigIntegerFromBytes 009A8AD0 f end=009A8AF5 ; BigIntegerFromBytes(unsigned char const*, int) +BigIntegerToBytes 009A8B00 f end=009A8B38 ; BigIntegerToBytes(void*, unsigned char*, unsigned int) +BigIntegerCmp 009A8B40 f end=009A8B52 ; BigIntegerCmp(void*, void*) +BigIntegerCmpInt 009A8B60 f end=009A8B9A ; BigIntegerCmpInt(void*, unsigned int) +BigIntegerAdd 009A8BA0 f end=009A8BB6 ; BigIntegerAdd(void*, void*, void*) +BigIntegerAddInt 009A8BC0 f end=009A8BF8 ; BigIntegerAddInt(void*, void*, unsigned int) +BigIntegerSub 009A8C00 f end=009A8C16 ; BigIntegerSub(void*, void*, void*) +BigIntegerMul 009A8C20 f end=009A8C36 ; BigIntegerMul(void*, void*, void*) +BigIntegerMod 009A8C40 f end=009A8C56 ; BigIntegerMod(void*, void*, void*) +BigIntegerModExp 009A8C60 f end=009A8C7A ; BigIntegerModExp(void*, void*, void*, void*) +BigIntegerFree 009A8C80 f end=009A8C8E ; BigIntegerFree(void*) +BigIntegerBitLen 009A8C90 f end=009A8CA8 ; BigIntegerBitLen(void*) DayNight__DNGlare__Initialize 009AD000 f end=009AD0A3 type="void __thiscall func(DayNight__DNGlare* this, char* a1)" nullsub_7 009D34B0 f nullsub_8 009D34C0 f diff --git a/profile/3.3.5a-windows-386/symbol/map/func.sym b/profile/3.3.5a-windows-386/symbol/map/func.sym new file mode 100644 index 0000000..898c98b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/map/func.sym @@ -0,0 +1,11 @@ +CMap__LoadWdt 007BF8B0 f end=007BFCDC ; CMap::LoadWdt() +CMap__Load 007BFCE0 f end=007BFE33 ; public: static void __cdecl CMap::Load(char const *, int) +CMap__AllocMapObj 007BFF20 f end=007BFF6B ; CMap::AllocMapObj() +CMap__AllocLight 007C08A0 f end=007C0907 ; public: static class CMapLight * __fastcall CMap::AllocLight(void) +CMap__UpdateLightBounds 007D9C80 f end=007D9D4F ; public: static void __cdecl CMap::UpdateLightBounds(class CMapLight *) +CMap__EnableLight 007D9D50 f end=007D9D66 ; public: static void __cdecl CMap::EnableLight(class CMapLight *) +CMap__DestroyLight 007D9D70 f end=007D9DDE ; public: static void __cdecl CMap::DestroyLight(class CMapLight *) +CMap__LinkLightToChunks 007D9DE0 f end=007D9F8F ; CMap::LinkLightToChunks(class CMapLight *) +CMap__LinkLightToMapObjDefs 007D9F90 f end=007DA0F5 ; CMap::LinkLightToMapObjDefs(class CMapLight *) +CMap__UpdateLight 007DA100 f end=007DA187 ; CMap::UpdateLight(class CMapLight *) +CMap__CreateLight 007D9BD0 f end=007D9C7B ; CMap::CreateLight(bool, bool) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/mapbaseobj/func.sym b/profile/3.3.5a-windows-386/symbol/mapbaseobj/func.sym new file mode 100644 index 0000000..c0cf14f --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/mapbaseobj/func.sym @@ -0,0 +1 @@ +CMapBaseObj__CMapBaseObj 007D7260 f end=007D7293 ; CMapBaseObj::CMapBaseObj() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/mapchunk/func.sym b/profile/3.3.5a-windows-386/symbol/mapchunk/func.sym new file mode 100644 index 0000000..edb2a0b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/mapchunk/func.sym @@ -0,0 +1 @@ +CMapChunk__UpdateLights 007C65A0 f end=007C65FE ; public: void __thiscall CMapChunk::UpdateLights(void) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/mapdoodaddef/func.sym b/profile/3.3.5a-windows-386/symbol/mapdoodaddef/func.sym new file mode 100644 index 0000000..c3ccf5e --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/mapdoodaddef/func.sym @@ -0,0 +1 @@ +CMapDoodadDef__SelectLights 007C1150 f end=007C1371 ; CMapDoodadDef::SelectLights(CM2Lighting*) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/mapentity/func.sym b/profile/3.3.5a-windows-386/symbol/mapentity/func.sym new file mode 100644 index 0000000..b5cb449 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/mapentity/func.sym @@ -0,0 +1 @@ +CMapEntity__SelectLights 007C1730 f end=007C1ACA ; CMapEntity::SelectLights(CM2Lighting*) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/maplight/func.sym b/profile/3.3.5a-windows-386/symbol/maplight/func.sym new file mode 100644 index 0000000..e37540e --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/maplight/func.sym @@ -0,0 +1 @@ +CMapLight__CMapLight 007D9B10 f end=007D9B8F ; public: __thiscall CMapLight::CMapLight(void) diff --git a/profile/3.3.5a-windows-386/symbol/mapobj/func.sym b/profile/3.3.5a-windows-386/symbol/mapobj/func.sym new file mode 100644 index 0000000..e16887f --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/mapobj/func.sym @@ -0,0 +1,4 @@ +CMapObj__Init 007AE300 f end=007AE3A6 ; CMapObj::Init() +CMapObj__CMapObj 007B0580 f end=007B05F9 ; CMapObj::CMapObj() +CMapObj__Create 007B0CC0 f end=007B0D37 ; CMapObj::Create(char const*) +CMapObj__Read 007D80C0 f end=007D81BB ; CMapObj::Read(char const*) diff --git a/profile/3.3.5a-windows-386/symbol/md5/func.sym b/profile/3.3.5a-windows-386/symbol/md5/func.sym new file mode 100644 index 0000000..83579d0 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/md5/func.sym @@ -0,0 +1,3 @@ +MD5Init 00779340 f end=0077936B ; 00005410 +MD5Update 00779A30 f end=00779AD8 ; 00005410 +MD5Final 00779AE0 f end=00779B97 ; 00005410 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/neteventqueue/func.sym b/profile/3.3.5a-windows-386/symbol/neteventqueue/func.sym new file mode 100644 index 0000000..bc9ed9f --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/neteventqueue/func.sym @@ -0,0 +1,4 @@ +NETEVENTQUEUE__NETEVENTQUEUE 00633440 f end=0063346D ; NETEVENTQUEUE::NETEVENTQUEUE(NetClient*) +NETEVENTQUEUE__Poll 006334F0 f end=0063360E ; NETEVENTQUEUE::Poll() +NETEVENTQUEUE__AddEvent 00633650 f end=0063372A ; NETEVENTQUEUE::AddEvent(EVENTID, void*, NetClient*, void const*, unsigned long) +NETEVENTQUEUE__destructor 00633730 f end=00633797 ; NETEVENTQUEUE::~NETEVENTQUEUE() diff --git a/profile/3.3.5a-windows-386/symbol/nullsub/func.sym b/profile/3.3.5a-windows-386/symbol/nullsub/func.sym index dc9c6fe..938d79b 100644 --- a/profile/3.3.5a-windows-386/symbol/nullsub/func.sym +++ b/profile/3.3.5a-windows-386/symbol/nullsub/func.sym @@ -12,7 +12,7 @@ nullsub_155 006B1BA0 f nullsub_152 00743550 f nullsub_153 00743560 f stub_return_one_byte 008A1420 f end=008A1423 ; known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback -stub_return_zero4 008E5250 f end=008E5253 ; Script_ToggleTris +stub_return_zero4 008E5250 f end=008E5253 ; known names Script_ToggleTris, CLayoutFrame::IsAttachmentOrigin() stub_return_xor_eax 00936900 f end=00936905 nullsub_7 009D34B0 f nullsub_8 009D34C0 f @@ -158,3 +158,4 @@ nullsub_147 009DE1A0 f nullsub_148 009DE1B0 f nullsub_149 009DE1C0 f nullsub_150 009DE1D0 f +stub_return_int32_one 008C8DE0 f type="int32_t __stdcall func()" ; Known names: GxDefaultApi, CCommand_Perf diff --git a/profile/3.3.5a-windows-386/symbol/os/func.sym b/profile/3.3.5a-windows-386/symbol/os/func.sym index 08f41f3..ccd3f22 100644 --- a/profile/3.3.5a-windows-386/symbol/os/func.sym +++ b/profile/3.3.5a-windows-386/symbol/os/func.sym @@ -49,3 +49,4 @@ OsClipboardGetString 00872280 f end=00872297 OsClipboardPutString 008722A0 f end=008722BF IOsClipboardGetString 008726F0 f end=008727BB IOsClipboardPutString 008727E0 f end=008728B8 +OsClipboardFreeString 008727C0 f end=008727DE \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/particleemitter2/func.sym b/profile/3.3.5a-windows-386/symbol/particleemitter2/func.sym new file mode 100644 index 0000000..e702876 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/particleemitter2/func.sym @@ -0,0 +1,13 @@ +CParticleEmitter2__SetModel 00978B30 f end=00978B70 ; CParticleEmitter2::SetModel(CM2Scene*, char const*) +CParticleEmitter2__SetMaterial 00978BF0 f end=00978C34 ; CParticleEmitter2::SetMaterial(CParticleMat const&, CTexture*) +CParticleEmitter2__SetTextureDimensions 00978C70 f end=00978CF7 ; CParticleEmitter2::SetTextureDimensions(unsigned int, unsigned int) +CParticleEmitter2__SetParticleStyle 00978D00 f end=00978D93 ; CParticleEmitter2::SetParticleStyle(int, int, float, int) +CParticleEmitter2__SetFollowParams 00978DD0 f end=00978E24 ; CParticleEmitter2::SetFollowParams(float, float, float, float) +CParticleEmitter2__SetChooseRandomTexture 00978E30 f end=00978E67 ; CParticleEmitter2::SetChooseRandomTexture(int) +CParticleEmitter2__Destroy 009791E0 f end=00979241 ; CParticleEmitter2::Destroy() +CParticleEmitter2__SetParticleColors 0097A990 f end=0097AB01 ; CParticleEmitter2::SetParticleColors(CImVector const&, CImVector const&, CImVector const&) +CParticleEmitter2__GetReplacementColors 0097AB10 f end=0097ABF3 ; CParticleEmitter2::GetReplacementColors(CImVector&, CImVector&, CImVector&) +CParticleEmitter2__SetTwinkleScale 0097AC00 f end=0097AC1D ; CParticleEmitter2::SetTwinkleScale(CRange const&) +CParticleEmitter2__CreateChildEmittersFromModel 0097AEB0 f end=0097AEE4 ; CParticleEmitter2::CreateChildEmittersFromModel(CM2Scene*, char const*) +CParticleEmitter2__DetermineIfSimple 0097D370 f end=0097D5F5 ; CParticleEmitter2::DetermineIfSimple() +CParticleEmitter2__CParticleEmitter2 0097E150 f end=0097E3E6 ; CParticleEmitter2::CParticleEmitter2() diff --git a/profile/3.3.5a-windows-386/symbol/planeparticleemitter/func.sym b/profile/3.3.5a-windows-386/symbol/planeparticleemitter/func.sym new file mode 100644 index 0000000..e3f8e40 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/planeparticleemitter/func.sym @@ -0,0 +1 @@ +CPlaneParticleEmitter__CPlaneParticleEmitter 00981310 f end=00981343 ; CPlaneParticleEmitter::CPlaneParticleEmitter() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/realmlist/func.sym b/profile/3.3.5a-windows-386/symbol/realmlist/func.sym index ed0fe6f..8dd9e40 100644 --- a/profile/3.3.5a-windows-386/symbol/realmlist/func.sym +++ b/profile/3.3.5a-windows-386/symbol/realmlist/func.sym @@ -1,3 +1,5 @@ RealmListRegisterScriptFunctions 004DE4D0 f end=004DE4F3 RealmListUnregisterScriptFunctions 004DE500 f end=004DE51C -CRealmList__Initialize 004DF580 f end=004DF66C +CRealmList__SetPreferredInfo 004DE960 f end=004DEAEB ; CRealmList::SetPreferredInfo(unsigned int, int, int) +CRealmList__Initialize 004DF580 f end=004DF66C ; CRealmList::Initialize() +CRealmList__UpdateList 004DF710 f end=004DFA4A ; CRealmList::UpdateList() diff --git a/profile/3.3.5a-windows-386/symbol/ribbonemitter/func.sym b/profile/3.3.5a-windows-386/symbol/ribbonemitter/func.sym new file mode 100644 index 0000000..5056368 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/ribbonemitter/func.sym @@ -0,0 +1,11 @@ +CRibbonEmitter__SetDataEnabled 0097F570 f end=0097F5A3 ; CRibbonEmitter::SetDataEnabled(int) +CRibbonEmitter__SetTexSlot 0097F5F0 f end=0097F60D ; CRibbonEmitter::SetTexSlot(unsigned int) +CRibbonEmitter__SetAbove 0097F610 f end=0097F620 ; CRibbonEmitter::SetAbove(float) +CRibbonEmitter__SetBelow 0097F620 f end=0097F630 ; CRibbonEmitter::SetBelow(float) +CRibbonEmitter__SetGravity 0097F630 f end=0097F640 ; CRibbonEmitter::SetGravity(float) +CRibbonEmitter__SetPos 0097F940 f end=0097FAC8 ; CRibbonEmitter::SetPos(C44Matrix const&, C3Vector const&, C44Matrix const*) +CRibbonEmitter__SetColor 0097FB60 f end=0097FBA0 ; CRibbonEmitter::SetColor(float, float, float) +CRibbonEmitter__SetAlpha 0097FBA0 f end=0097FBDA ; CRibbonEmitter::SetAlpha(float) +CRibbonEmitter__Update 00980090 f end=0098050D ; CRibbonEmitter::Update(float, int) +CRibbonEmitter__CRibbonEmitter 00980630 f end=0098080C ; CRibbonEmitter::CRibbonEmitter() +CRibbonEmitter__Initialize 009808A0 f end=00980B4A ; CRibbonEmitter::Initialize(float, float, CImVector const&, TSGrowableArray const&, TSGrowableArray const&, TSGrowableArray const&, CAaRect const&, unsigned int, unsigned int) diff --git a/profile/3.3.5a-windows-386/symbol/sha1/func.sym b/profile/3.3.5a-windows-386/symbol/sha1/func.sym new file mode 100644 index 0000000..cac8fed --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/sha1/func.sym @@ -0,0 +1,8 @@ +SHA1__Process 006CA180 f end=006CA235 ; SHA1::Process(void const*, unsigned int) +SHA1__Finish 006CA270 f end=006CA329 ; SHA1::Finish(SHA1::Digest&) +SHA1_Transform 006CA330 f end=006CB5EE +SHA1_Init 006CB5F0 f end=006CB622 ; SHA1_Init(SHA1_CONTEXT*) +SHA1_Update 006CB630 f end=006CB6E2 ; SHA1_Update(SHA1_CONTEXT*, unsigned char const*, unsigned int) +SHA1_Final 006CB6F0 f end=006CB7BE ; SHA1_Final(unsigned char*, SHA1_CONTEXT*) +SHA1_InterleaveHash 006CB7C0 f end=006CB8FD ; SHA1_InterleaveHash(unsigned char*, unsigned char const*, unsigned int) +SHA1__Prepare 0077AAA0 f end=0077AAD1 ; SHA1::Prepare() diff --git a/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym b/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym index a71eec6..d8a536f 100644 --- a/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym +++ b/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym @@ -1 +1,18 @@ -CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 +CShaderEffect__InitFixedFuncPass 008728C0 f end=008728FB ; CShaderEffect::InitFixedFuncPass(EGxTexOp const*, EGxTexOp const*, unsigned int) +CShaderEffect__SetUsePcfFiltering 00872AD0 f end=00872AF8 ; CShaderEffect::SetUsePcfFiltering(unsigned int) +CShaderEffect__UpdateWorldViewMatrix 00872B00 f end=00872C0A ; CShaderEffect::UpdateWorldViewMatrix() +CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 ; CShaderEffect::UpdateProjMatrix() +CShaderEffect__InitShaderSystem 00872CE0 f end=00872D29 ; CShaderEffect::InitShaderSystem(int, int) +CShaderEffect__InitEffect 00872D30 f end=00872DD9 ; CShaderEffect::InitEffect(char const*, char const*) +CShaderEffect__SetCurrent 00872F90 f end=00873054 ; CShaderEffect::SetCurrent() +CShaderEffect__SetShaders 00873060 f end=0087315B ; CShaderEffect::SetShaders(unsigned int, unsigned int) +CShaderEffect__SetDefaultShaders 00873160 f end=008731B4 ; CShaderEffect::SetDefaultShaders(unsigned int) +CShaderEffect__SetFogParams 00873210 f end=0087338B ; CShaderEffect::SetFogParams(float, float, float, CImVector const&) +CShaderEffect__SetFogEnabled 00873390 f end=00873472 ; CShaderEffect::SetFogEnabled(int) +CShaderEffect__SetTexMtx_Identity 00873480 f end=0087354E ; CShaderEffect::SetTexMtx_Identity(unsigned int) +CShaderEffect__SetTexMtx_SphereMap 00873550 f end=0087361E ; CShaderEffect::SetTexMtx_SphereMap(unsigned int) +CShaderEffect__SetTexMtx 00873620 f end=00873721 ; CShaderEffect::SetTexMtx(C44Matrix const&, unsigned int) +CShaderEffect__SetDiffuse 00873900 f end=00873A4B ; CShaderEffect::SetDiffuse(C4Vector const&) +CShaderEffect__SetEmissive 00873A50 f end=00873B9B ; CShaderEffect::SetEmissive(C4Vector const&) +CShaderEffect__SetAlphaRef 00873BA0 f end=00873C1A ; CShaderEffect::SetAlphaRef(float) +CShaderEffect__SetLocalLighting 00873CA0 f end=00873ED2 ; CShaderEffect::SetLocalLighting(CM2Lighting*, int, C3Vector const*) diff --git a/profile/3.3.5a-windows-386/symbol/shadereffectmanager/func.sym b/profile/3.3.5a-windows-386/symbol/shadereffectmanager/func.sym new file mode 100644 index 0000000..04fad69 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/shadereffectmanager/func.sym @@ -0,0 +1,4 @@ +CShaderEffectManager__GetEffect 00876530 f end=00876543 ; CShaderEffectManager::GetEffect(char const*) +CShaderEffectManager__CreateEffect 00876BE0 f end=00876C97 ; CShaderEffectManager::CreateEffect(char const*) +CShaderEffectManager__ParseEffectCallback 00876CA0 f end=00876D8D ; CShaderEffectManager::ParseEffectCallback(CShaderEffectParser::ParsedEffect const&, void*) +CShaderEffectManager__AddEffectFile 00876D90 f end=00876E2C ; CShaderEffectManager::AddEffectFile(char const*) diff --git a/profile/3.3.5a-windows-386/symbol/shadowcache/func.sym b/profile/3.3.5a-windows-386/symbol/shadowcache/func.sym new file mode 100644 index 0000000..b5e215a --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/shadowcache/func.sym @@ -0,0 +1,3 @@ +CShadowCache__NotifyTexturesRecreate 00873FE0 f end=00873FEB ; CShadowCache::NotifyTexturesRecreate() +CShadowCache__SetShadowMapGenericGlobal 008744E0 f end=008745CE ; CShadowCache::SetShadowMapGenericGlobal() +CShadowCache__SetShadowMapGenericInterior 008745D0 f end=00874658 ; CShadowCache::SetShadowMapGenericInterior(int) diff --git a/profile/3.3.5a-windows-386/symbol/simplebutton/func.sym b/profile/3.3.5a-windows-386/symbol/simplebutton/func.sym new file mode 100644 index 0000000..af5edc3 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplebutton/func.sym @@ -0,0 +1,3 @@ +CSimpleButton_GetButtonState 009771D0 f end=00977272 +CSimpleButton_SetStateTexture 00977A70 f end=00977BD7 ; CSimpleButton_SetStateTexture(lua_State*, CSimpleButtonState, char const*) +CSimpleButton_SetNormalTexture 00977C70 f end=00977C87 ; CSimpleButton_SetNormalTexture(lua_State*) \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simpleeditbox/func.sym b/profile/3.3.5a-windows-386/symbol/simpleeditbox/func.sym new file mode 100644 index 0000000..4c145fd --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simpleeditbox/func.sym @@ -0,0 +1,14 @@ +CSimpleEditBox__PasteFromClipboard 00965ED0 f end=00965F1D +CSimpleEditBox__Insert 00965CE0 f end=00965D67 +CSimpleEditBox__DeleteSubstring 00962F90 f end=0096313E ; DeleteSubString(int, int, int) +CSimpleEditBox__HighlightText 00963140 f end=009631A0 ; HighlightText(int, int) +CSimpleEditBox__UpdateSizes 00963740 f end=00963946 +CSimpleEditBox__FontUpdated 009650E0 f end=00965114 ; FontUpdated(CSimpleFontedFrameFont*, int) +CSimpleEditBox__OnFrameSizeChanged 009656D0 f end=009656F7 ; OnFrameSizeChanged(float, float) +CSimpleEditBox__Insert 00965960 f end=00965CDB ; Insert(char const*, char const*, int, int, int) +CSimpleEditBox__SetMultiLine 00965F20 f end=009660D3 ; SetMultiLine(int) +CSimpleEditBox__SetText 00966580 f end=009665FA ; SetText(char const*, char const*) +CSimpleEditBox__SetHistoryLines 00966FD0 f end=00967017 ; SetHistoryLines(int) +CSimpleEditBox__LoadXML 00967290 f end=00967670 ; LoadXML(XMLNode*, CStatus*) +CSimpleEditBox_SetText 00975E80 f end=00975F02 +CSimpleEditBox_HighlightText 00976080 f end=00976108 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym b/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym index 3b92b51..7637350 100644 --- a/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym @@ -1,6 +1,31 @@ -CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" -CSimpleFrame__SetFrameScale 0048F580 f end=0048F5CC +CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" ; CSimpleFrame::SetFrameAlpha(unsigned char) CSimpleFrame__SetFrameDepth 0048F5D0 f end=0048F611 CSimpleFrame_SetAlpha 0049F9E0 f end=0049FAA1 type="void __stdcall func(lua_State* L)" +CSimpleFrame__GetScriptByName 0048E680 f end=0048E961 ; CSimpleFrame::GetScriptByName(char const*, FrameScript_Object::ScriptData&) +CSimpleFrame__Raise 0048E9A0 f end=0048E9AF ; CSimpleFrame::Raise() +CSimpleFrame__UnregisterForEvents 0048EA80 f end=0048EABE ; CSimpleFrame::UnregisterForEvents(int) +CSimpleFrame__SetFrameScale 0048F580 f end=0048F5CC ; CSimpleFrame::SetFrameScale(float, bool) +CSimpleFrame__EnableEvent 0048F6A0 f end=0048F6E1 ; CSimpleFrame::EnableEvent(CSimpleEventType, unsigned int) +CSimpleFrame__GetHitRect 0048F890 f end=0048F8D1 ; CSimpleFrame::GetHitRect(CRect&) +CSimpleFrame__OnFrameSizeChanged 0048FA20 f end=0048FB0B ; CSimpleFrame::OnFrameSizeChanged(CAaRect const&) +CSimpleFrame__NotifyScrollParent 0048FEA0 f end=0048FEEE ; CSimpleFrame::NotifyScrollParent() +CSimpleFrame__NotifyDrawLayerChanged 00490270 f end=004902C7 ; CSimpleFrame::NotifyDrawLayerChanged(unsigned int) +CSimpleFrame__OnFrameSizeChanged 00490330 f end=00490357 ; CSimpleFrame::OnFrameSizeChanged(float, float) +CSimpleFrame__PostLoadXML 00490410 f end=00490598 ; CSimpleFrame::PostLoadXML(XMLNode*, CStatus*) +CSimpleFrame__SetBackdrop 004905A0 f end=004905F5 ; CSimpleFrame::SetBackdrop(CBackdropGenerator*) +CSimpleFrame__OnLayerUpdate 00490770 f end=00490831 ; CSimpleFrame::OnLayerUpdate(float) +CSimpleFrame__OnFrameRender 00490840 f end=004908A0 ; CSimpleFrame::OnFrameRender(CRenderBatch*, unsigned int) +CSimpleFrame__OnScreenSizeChanged 004908A0 f end=004908D7 ; CSimpleFrame::OnScreenSizeChanged() +CSimpleFrame__SetBeingScrolled 00490F60 f end=00491018 ; CSimpleFrame::SetBeingScrolled(int, int) +CSimpleFrame__UnparentFrame 00491160 f end=004911A8 ; CSimpleFrame::UnparentFrame(CSimpleFrame*) +CSimpleFrame__SetParent 004911B0 f end=00491343 ; CSimpleFrame::SetParent(CSimpleFrame*) +CSimpleFrame__GetBoundsRect 004913C0 f end=00491594 ; CSimpleFrame::GetBoundsRect(CRect&) +CSimpleFrame__UpdateScale 004915A0 f end=00491677 ; CSimpleFrame::UpdateScale(bool) +CSimpleFrame__HideThis 00491830 f end=004918EC ; CSimpleFrame::HideThis() +CSimpleFrame__ShowThis 004918F0 f end=004919E4 ; CSimpleFrame::ShowThis(bool) +CSimpleFrame__OnFrameRender 00491E00 f end=00491FB5 ; CSimpleFrame::OnFrameRender() +CSimpleFrame__CSimpleFrame 004922F0 f end=004926A7 ; CSimpleFrame::CSimpleFrame(CSimpleFrame*) +CSimpleFrame__LoadXML 004932C0 f end=00493A09 ; CSimpleFrame::LoadXML(XMLNode*, CStatus*) +CSimpleFrame__RegisterScriptMethods 0049E540 f end=0049E560 ; CSimpleFrame::RegisterScriptMethods(lua_State*) RegisterSimpleFrameScriptMethods 0081B870 f end=0081B914 UnregisterSimpleFrameScriptMethods 0081B920 f end=0081B9B8 diff --git a/profile/3.3.5a-windows-386/symbol/simplehtml/func.sym b/profile/3.3.5a-windows-386/symbol/simplehtml/func.sym new file mode 100644 index 0000000..854dde9 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplehtml/func.sym @@ -0,0 +1,11 @@ +CSimpleHTML__FontUpdated 0096C750 f end=0096C764 ; CSimpleHTML::FontUpdated(CSimpleFontedFrameFont*, int) +CSimpleHTML__CSimpleHTML 0096C820 f end=0096C922 ; CSimpleHTML::CSimpleHTML(CSimpleFrame*) +CSimpleHTML__IsA 0096C960 f end=0096C995 ; CSimpleHTML::IsA(int) const +CSimpleHTML__ParseIMG 0096C9E0 f end=0096CC8F ; CSimpleHTML::ParseIMG(XMLNode const*, CStatus*) +CSimpleHTML__AddText 0096CC90 f end=0096CE72 ; CSimpleHTML::AddText(char const*, HTML_TEXT_TYPE, unsigned int) +CSimpleHTML__ClearContent 0096D090 f end=0096D169 ; CSimpleHTML::ClearContent() +CSimpleHTML__ParseP 0096D170 f end=0096D478 ; CSimpleHTML::ParseP(XMLNode const*, HTML_TEXT_TYPE, CStatus*) +CSimpleHTML__ParseBODY 0096D740 f end=0096D883 ; CSimpleHTML::ParseBODY(XMLNode const*, CStatus*) +CSimpleHTML__SetText 0096D890 f end=0096DA31 ; CSimpleHTML::SetText(char const*, CStatus*) +CSimpleHTML__LoadXML 0096DA40 f end=0096DC2A ; CSimpleHTML::LoadXML(XMLNode*, CStatus*) +CSimpleHTML_SetText 009750D0 f end=0097511B diff --git a/profile/3.3.5a-windows-386/symbol/simplehyperlinkedframe/func.sym b/profile/3.3.5a-windows-386/symbol/simplehyperlinkedframe/func.sym new file mode 100644 index 0000000..215d0e9 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplehyperlinkedframe/func.sym @@ -0,0 +1 @@ +CSimpleHyperlinkedFrame__CSimpleHyperlinkedFrame 00978900 f end=0097894F ; CSimpleHyperlinkedFrame::CSimpleHyperlinkedFrame(CSimpleFrame*) diff --git a/profile/3.3.5a-windows-386/symbol/simplemodelffx/func.sym b/profile/3.3.5a-windows-386/symbol/simplemodelffx/func.sym new file mode 100644 index 0000000..1d1de62 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplemodelffx/func.sym @@ -0,0 +1,9 @@ +CSimpleModelFFX__SetModel 004E5ED0 f end=004E5EF7 ; CSimpleModelFFX::SetModel(CM2Model*) +CSimpleModelFFX__LoadXML 004E5F00 f end=004E5F47 ; CSimpleModelFFX::LoadXML(XMLNode*, CStatus*) +CSimpleModelFFX__CSimpleModelFFX 004E5F70 f end=004E60A3 ; CSimpleModelFFX::CSimpleModelFFX(CSimpleFrame*) +CSimpleModelFFX__Render 004E6190 f end=004E6229 ; CSimpleModelFFX::Render(void*) +CSimpleModelFFX__Create 004E6300 f end=004E632B ; CSimpleModelFFX::Create(CSimpleFrame*) +CSimpleModelFFX__OnFrameRender 004E6330 f end=004E635E ; CSimpleModelFFX::OnFrameRender(CRenderBatch*, unsigned int) +CSimpleModelFFX_ResetLights 004E6BE0 f end=004E6C5C +CSimpleModelFFX_AddLight 004E6C60 f end=004E6D4B +CSimpleModelFFX__CreateScriptMetaTable 004E6F60 f end=004E6F79 ; CSimpleModelFFX::CreateScriptMetaTable() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simplescrollframe/func.sym b/profile/3.3.5a-windows-386/symbol/simplescrollframe/func.sym new file mode 100644 index 0000000..9a8dcba --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplescrollframe/func.sym @@ -0,0 +1,14 @@ +CSimpleScrollFrame__RunOnScrollRangeChangedScript 0096AFD0 f end=0096B05B +CSimpleScrollFrame__UnparentFrame 0096B060 f end=0096B082 ; CSimpleScrollFrame::UnparentFrame(CSimpleFrame*) +CSimpleScrollFrame__UpdateScrollChild 0096B1C0 f end=0096B207 ; void __thiscall CSimpleScrollFrame::UpdateScrollChild(void) +CSimpleScrollFrame__OnFrameSizeChanged 0096B210 f end=0096B23A ; CSimpleScrollFrame::OnFrameSizeChanged(float, float) +CSimpleScrollFrame__CSimpleScrollFrame 0096B2D0 f end=0096B33F ; CSimpleScrollFrame::CSimpleScrollFrame(CSimpleFrame*) +CSimpleScrollFrame__SetScrollChild 0096B3A0 f end=0096B43D ; CSimpleScrollFrame::SetScrollChild(CSimpleFrame*) +CSimpleScrollFrame__SetVerticalScroll 0096B480 f end=0096B4BE ; CSimpleScrollFrame::SetVerticalScroll(float) +CSimpleScrollFrame__UpdateScrollChildRect 0096B4C0 f end=0096B59D ; CSimpleScrollFrame::UpdateScrollChildRect(float, float) +CSimpleScrollFrame__OnLayerUpdate 0096B5A0 f end=0096B60A ; CSimpleScrollFrame::OnLayerUpdate(float) +CSimpleScrollFrame__RenderScrollChild 0096B610 f end=0096B912 ; CSimpleScrollFrame::RenderScrollChild(void*) +CSimpleScrollFrame__LoadXML 0096B920 f end=0096B99B ; CSimpleScrollFrame::LoadXML(XMLNode*, CStatus*) +CSimpleScrollFrame__OnFrameRender 0096B9A0 f end=0096B9CE ; CSimpleScrollFrame::OnFrameRender(CRenderBatch*, unsigned int) +CSimpleScrollFrame__GetBoundsRect 0096B9D0 f end=0096BBAC ; CSimpleScrollFrame::GetBoundsRect(CRect&) +CSimpleScrollFrame_SetVerticalScroll 00972560 f end=00972625 ; CSimpleScrollFrame_SetVerticalScroll(lua_State*) diff --git a/profile/3.3.5a-windows-386/symbol/simpleslider/func.sym b/profile/3.3.5a-windows-386/symbol/simpleslider/func.sym new file mode 100644 index 0000000..1ca66bd --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simpleslider/func.sym @@ -0,0 +1,10 @@ +CSimpleSlider__RunOnMinMaxChangedScript 0096BBB0 f end=0096BC08 +CSimpleSlider__CSimpleSlider 0096BE50 f end=0096BEC9 ; CSimpleSlider::CSimpleSlider(CSimpleFrame*) +CSimpleSlider__IsA 0096BF00 f end=0096BF35 ; CSimpleSlider::IsA(int) const +CSimpleSlider__SetValue 0096C090 f end=0096C1A7 ; CSimpleSlider::SetValue(float, bool) +CSimpleSlider__SetMinMaxValues 0096C470 f end=0096C4FD ; CSimpleSlider::SetMinMaxValues(float, float) +CSimpleSlider__RegisterScriptMethods 00971A40 f end=00971A60 ; CSimpleSlider::RegisterScriptMethods(lua_State*) +CSimpleSlider_GetMinMaxValues 00971D90 f end=00971DEF +CSimpleSlider_SetMinMaxValues 00971DF0 f end=00971E99 +CSimpleSlider_GetValue 00971EB0 f end=00971EF3 +CSimpleSlider_SetValue 00971F00 f end=00971F74 diff --git a/profile/3.3.5a-windows-386/symbol/simpletexture/func.sym b/profile/3.3.5a-windows-386/symbol/simpletexture/func.sym new file mode 100644 index 0000000..57aac27 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simpletexture/func.sym @@ -0,0 +1,9 @@ +CSimpleTexture__SetTexture 00481590 f end=004815D2 ; CSimpleTexture::SetTexture(CImVector const&) +CSimpleTexture__SetBlendMode 00481620 f end=0048163D ; CSimpleTexture::SetBlendMode(EGxBlend) +CSimpleTexture__SetTexCoord 00481640 f end=00481691 ; CSimpleTexture::SetTexCoord(C2Vector const*) +CSimpleTexture__SetTexCoord 004831D0 f end=00483220 ; CSimpleTexture::SetTexCoord(CRect const&) +CSimpleTexture__CSimpleTexture 00484470 f end=004845E6 ; CSimpleTexture::CSimpleTexture(CSimpleFrame*, unsigned int, int) +CSimpleTexture__LoadXML 00485F40 f end=00486B11 ; CSimpleTexture::LoadXML(XMLNode*, CStatus*) +CSimpleTexture_SetVertexColor 0048C1C0 f end=0048C23E ; CSimpleTexture_SetVertexColor(lua_State*) +CSimpleTexture_SetAlpha 0048C3E0 f end=0048C4B3 ; CSimpleTexture_SetAlpha(lua_State*) +CSimpleTexture_SetTexCoord 0048E170 f end=0048E353 ; CSimpleTexture_SetTexCoord(lua_State*) diff --git a/profile/3.3.5a-windows-386/symbol/simpletop/func.sym b/profile/3.3.5a-windows-386/symbol/simpletop/func.sym index cdbad08..2ed9f5b 100644 --- a/profile/3.3.5a-windows-386/symbol/simpletop/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simpletop/func.sym @@ -1 +1,10 @@ CSimpleTop__OnLayerRender 00495410 f end=0049546A +CSimpleTop__RoundToPixelHeight 00493E00 f end=00493E85 ; CSimpleTop::RoundToPixelHeight(float) +CSimpleTop__HideFrame 00493F30 f end=00493FA5 ; CSimpleTop::HideFrame(CSimpleFrame*, int) +CSimpleTop__OnMouseMove 004945A0 f end=0049472A ; CSimpleTop::OnMouseMove(EVENT_DATA_MOUSE const*, void*) +CSimpleTop__UnregisterFrame 00494FA0 f end=0049504D ; CSimpleTop::UnregisterFrame(CSimpleFrame*) +CSimpleTop__OnDisplaySizeChanged 004955E0 f end=00495667 ; CSimpleTop::OnDisplaySizeChanged(EVENT_DATA_SIZE const*, void*) +CSimpleTop__RegisterForEvent 00495880 f end=004958F9 ; CSimpleTop::RegisterForEvent(CSimpleFrame*, CSimpleEventType, int, unsigned int) +CSimpleTop__EnableEvents 004959F0 f end=00495AF2 ; CSimpleTop::EnableEvents() +CSimpleTop__CSimpleTop 00495EB0 f end=004960C6 ; CSimpleTop::CSimpleTop() +CSimpleTop__ShowFrame 004960D0 f end=004960FA ; CSimpleTop::ShowFrame(CSimpleFrame*, int) diff --git a/profile/3.3.5a-windows-386/symbol/sphereparticleemitter/func.sym b/profile/3.3.5a-windows-386/symbol/sphereparticleemitter/func.sym new file mode 100644 index 0000000..ec482de --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/sphereparticleemitter/func.sym @@ -0,0 +1 @@ +CSphereParticleEmitter__CSphereParticleEmitter 009813F0 f end=00981423 ; CSphereParticleEmitter::CSphereParticleEmitter() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/splineparticleemitter/func.sym b/profile/3.3.5a-windows-386/symbol/splineparticleemitter/func.sym new file mode 100644 index 0000000..0a040a0 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/splineparticleemitter/func.sym @@ -0,0 +1,2 @@ +CSplineParticleEmitter__SetSpline 00981500 f end=0098150F ; CSplineParticleEmitter::SetSpline(C3Vector const*, unsigned int) +CSplineParticleEmitter__CSplineParticleEmitter 009820F0 f end=00982148 ; CSplineParticleEmitter::CSplineParticleEmitter() diff --git a/profile/3.3.5a-windows-386/symbol/srp6/func.sym b/profile/3.3.5a-windows-386/symbol/srp6/func.sym new file mode 100644 index 0000000..399cc3b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/srp6/func.sym @@ -0,0 +1,5 @@ +SRP6_Client__BeginAuthentication 009A8300 f end=009A83DF ; SRP6_Client::BeginAuthentication(char const*, char const*) +SRP6_Client__CalculateProof 009A83E0 f end=009A88B1 ; SRP6_Client::CalculateProof(unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char const*, unsigned int, SRP6_Random&) +SRP6_Client__VerifyServerProof 009A88C0 f end=009A897C ; SRP6_Client::VerifyServerProof(unsigned char const*, unsigned int) +SRP6_Random__SRP6_Random 009A8980 f end=009A89EA ; SRP6_Random::SRP6_Random(void const*, unsigned int) +SRP6_Random__GenerateRandomBytes 009A89F0 f end=009A8A9B ; SRP6_Random::GenerateRandomBytes(unsigned char*, unsigned int) diff --git a/profile/3.3.5a-windows-386/symbol/storm/func.sym b/profile/3.3.5a-windows-386/symbol/storm/func.sym index 61fa679..dd26125 100644 --- a/profile/3.3.5a-windows-386/symbol/storm/func.sym +++ b/profile/3.3.5a-windows-386/symbol/storm/func.sym @@ -1,4 +1,6 @@ TSList__LinkNode 004F71A0 f end=004F724D +TSList__LinkToHead 007B5020 f end=007B50AB ; 00005410 +TSList__LinkToTail 0086E200 f end=0086E25F ; 00005410 TSGrowableArray_CGxMonitorMode__New 0068A090 f end=0068A0ED type="CGxMonitorMode* __thiscall func(TSGrowableArray_CGxMonitorMode* this)" TSGrowableArray_CGxMonitorMode__SetCount 0068A0F0 f end=0068A165 type="void __thiscall func(TSGrowableArray_CGxMonitorMode* this, uint32_t count)" SMemSetDebugFlags 0076E4A0 f end=0076E4D2 type="void __stdcall func(uint32_t flags, uint8_t changeMask)" diff --git a/profile/3.3.5a-windows-386/symbol/tempest/func.sym b/profile/3.3.5a-windows-386/symbol/tempest/func.sym index c5fc47b..136a485 100644 --- a/profile/3.3.5a-windows-386/symbol/tempest/func.sym +++ b/profile/3.3.5a-windows-386/symbol/tempest/func.sym @@ -25,3 +25,7 @@ C33Matrix__operator_assign_C33Matrix 004C51B0 f C33Matrix__Rotation 004C5550 f end=004C55A2 TSGrowableArray_C2Vector__SetCount 0057FDD0 f end=0057FE93 type="void __thiscall func(TSGrowableArray_C2Vector* this, uint32_t count)" TSGrowableArray_CImVector__SetCount 00616CA0 f end=00616D07 type="void __thiscall func(TSGrowableArray_CImVector* this, uint32_t count)" +C3Vector__C3Vector 00982970 f end=009829AD ; C3Vector::C3Vector(CImVector const&) +C4Vector__C4Vector 00984C90 f end=00984CDC ; C4Vector::C4Vector(CImVector const&) +C4Quaternion__Slerp 00982460 f end=0098256C ; C4Quaternion::Slerp(float, C4Quaternion const&, C4Quaternion const&) +C4Quaternion__Nlerp 00982630 f end=0098269F ; C4Quaternion::Nlerp(float, C4Quaternion const&, C4Quaternion const&) diff --git a/profile/3.3.5a-windows-386/symbol/wardenclient/func.sym b/profile/3.3.5a-windows-386/symbol/wardenclient/func.sym new file mode 100644 index 0000000..ef2904e --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/wardenclient/func.sym @@ -0,0 +1,2 @@ +WardenClient_Destroy 007DA420 f end=007DA4B0 ; WardenClient_Destroy() +WardenClient_Initialize 007DA8C0 f end=007DA92C ; WardenClient_Initialize() \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/wowconnection/func.sym b/profile/3.3.5a-windows-386/symbol/wowconnection/func.sym new file mode 100644 index 0000000..56e8b7b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/wowconnection/func.sym @@ -0,0 +1,26 @@ +WowConnection__AddRef 00428300 f end=0042830B ; WowConnection::AddRef() +WowConnection__SetResponse 004666D0 f end=00466748 ; WowConnection::SetResponse(WowConnectionResponse*, bool) +WowConnection__SetType 004667F0 f end=0046681A ; WowConnection::SetType(WOWC_TYPE) +WowConnection__SetEncryption 00466820 f end=004668A0 ; WowConnection::SetEncryption(WC_ENCRYPT_TYPE) +WowConnection__Init 004669D0 f end=00466B48 ; WowConnection::Init(WowConnectionResponse*, void (*)()) +WowConnection__Disconnect 00466B50 f end=00466B8F ; WowConnection::Disconnect() +WowConnection__SetEncryptionKey 00466BF0 f end=00466DA9 ; WowConnection::SetEncryptionKey(unsigned char const*, unsigned char, unsigned char, unsigned char const*, unsigned char) +WowConnection__CloseSocket 00466DE0 f end=00466E29 ; WowConnection::CloseSocket(int) +WowConnection__DoStreamReads 00466F00 f end=004670CA ; WowConnection::DoStreamReads() +WowConnection__WowConnection 00467270 f end=00467330 ; WowConnection::WowConnection(int, sockaddr_in*, WowConnectionResponse*) +WowConnection__WowConnection 00467330 f end=004673B9 ; WowConnection::WowConnection(WowConnectionResponse*, void (*)()) +WowConnection__destructor 004673C0 f end=00467536 ; WowConnection::~WowConnection() +WowConnection__Send 004675F0 f end=00467988 ; WowConnection::Send(CDataStore*, int) +WowConnection__SendRaw 00467990 f end=00467B96 ; WowConnection::SendRaw(unsigned char*, int) +WowConnection__DoMessageReads 00467BA0 f end=004680CA ; WowConnection::DoMessageReads() +WowConnection__Release 00468200 f end=00468246 ; WowConnection::Release() +WowConnection__DoDisconnect 00468250 f end=0046838F ; WowConnection::DoDisconnect() +WowConnection__CheckConnect 00468390 f end=00468573 ; WowConnection::CheckConnect() +WowConnection__CheckAccept 00468580 f end=00468788 ; WowConnection::CheckAccept() +WowConnection__DoWrites 00468790 f end=00468A84 ; WowConnection::DoWrites() +WowConnection__DoReads 00468A90 f end=00468B23 ; WowConnection::DoReads() +WowConnection__DoExceptions 00468B30 f end=00468B9A ; WowConnection::DoExceptions() +WowConnection__StartConnect 00468BA0 f end=00468D00 ; WowConnection::StartConnect() +WowConnection__Connect 00468D20 f end=00468D8B ; WowConnection::Connect(char const*, unsigned short, int) +WowConnection__InitOsNet 00468D90 f end=00468E4F ; WowConnection::InitOsNet(bool (*)(NETADDR const*), void (*)(), int, bool) +WowConnection__Connect 00468E50 f end=00468ED5 ; WowConnection::Connect(char const*, int) diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index 0a90567260b5c103d4334c2601cba25d52e4d800..232919707a6063272ee55d9e613cd4a530824572 100644 GIT binary patch delta 83339 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∋uGpB3ChTc@3i+2FLWAP2ob#8qI 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%0AfyrNU{xoqeH7p5JPYW13V1D=;9eHvvnOFuYf%V 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 delta 64831 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 |IF1FGR*_aMc~&jZO>N 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