REDIVIVUS

Proposals / #708

Type path-list context inputs while retaining their custom register storage

applied · by Commit-Will · submitted 2026-11-01, applied 2026-11-01

Ghidra v1797 · 3bccb89

Win 0067aed0 receives D2DrlgPathSearchCtxStrc* in EDI and 0067af40 receives it in ESI, currently int32_t. Complete 102/147-byte bodies access context bucket heads at +0/+512 and sorted head+1024, with actual node pointers moving through those containers. Every incoming call has independent provenance: frame 0067b850 loads its exact 13036-byte object base into EDI before insertion and ESI before both pops; insertion's other caller 0067b200 loads the same context from its first stack slot, reached through all eight expansion calls. Retype only these two existing formals using retype_local at EDI:4/ESI:4. Preserve names, other formals, every custom slot, cdecl and current return types. Existing precise layouts, complete targets/callers/producers and original Windows bytes establish object identity. The pop return remains held because full set_prototype storage preservation is unestablished for its custom ESI ABI. No shared type, Mac pair or runtime behavior change is inferred.

Changes 2, applied together

  1. Retype variable win 0x0067aed0 EDI

    typeint32_t→D2DrlgPathSearchCtxStrc *
  2. Retype variable win 0x0067af40 ESI

    typeint32_t→D2DrlgPathSearchCtxStrc *