{ "_readme": [ "Hand-asserted receiver typings for functions that appear in NO vftable and", "are not constructors, so tools/vtable_map.py's automatic seeds cannot reach", "them. Every entry must carry evidence a reader can re-derive. These are", "seeds for the `this`-propagation fixpoint, so one entry types a whole", "subtree -- which is also why a wrong entry is expensive. Keep it short." ], "owners": [ { "func": "0x007dc6c0", "name": "StrategyServer::ProcessTurn", "class": "Game::StrategyServer", "offset": 0, "evidence": [ "first member op is `inc [esi+0x8]` = ModCount; lane Z read S+0x8 as", "ModCount from StrategyServer::Write's wire tag at 0x0079fb2f", "hands its own `this` to 0x007d7f70, which dispatches on [this+0x158]", "and [this+0x15c]; the StrategyServer ctor 0x007d78d0 constructs a", "ServerTradeManagerImpl into +0x158 and a ServerSpyManager into +0x15c", "(vtable_map field 0x158 / field 0x15c)" ] }, { "func": "0x007d92a0", "name": "StrategyServer::OnAllCombatDone_Tail", "class": "Game::StrategyServer", "offset": 0, "evidence": [ "lane K read [ebx+0x54]/[ebx+0x58] as vector Players", "dispatches on [ebx+0x158] and [ebx+0x15c] in one straight-line block,", "matching the two managers the StrategyServer ctor 0x007d78d0 builds", "there; slot 15 needs >=16 slots and slot 13 needs >=14, which the two", "concrete vtables 0x00a31b74 (22) and 0x00a3073c (18) supply" ] } ] }