sub_821A6CF0 is reached only by a tail b from a run of adjustor thunks whose vtable is at 0x820A319C. Slot 1 is 'addi r3, r0, 17; blr' -- the factory id -- so RegisterToFactory<17, class silph::GamePart_MainGame> names the class, and every thunk's lwz r3, 8(r3) makes slots 4-10 GamePart_MainGame::Impl methods (9 = the per-frame Update sub_821AA1B0). Several iterations' worth of inference is now a read. Lead, not adopted: the disc has 28 scripts numbered Stage01-16 and Stage18-29 -- exactly one gap, Stage17 -- and the gate excludes exactly one value, 16, which lines up 0-based. Control comparison: the refuted GamePart-id reading had 4 missing values (1-of-4, worthless), this is 1-of-1. Tighter but still coincidence-shaped. The Stage%02d construction site would settle it; not found this pass. Docs only; artefacts byte-identical.