Name the Properties.txt dispatch record pointer pProperty across the ITEMPROP_ family
Ghidra v1809 · 9528519
All 25 ITEMPROP_ handlers are slots of the fpProperties *[37] table at 0x007462f8, so they share one signature. ITEMMOD_ApplyPropertyToUnitStatsExpansion (0065fd70) dispatches through it and passes its own pSetsTxtF, a D2SetsTxtFStrc *, as the 4th argument (Stack[0x8]). ITEMPROP_AddStat_Simple proves the type by dereferencing that slot: at 0065f2d1 and 0065f2d4 it loads +0xc and +0x8 (D2SetsTxtFStrc.fmax and .fmin) and passes them to ITEMMOD_RollRandomValue(pUnit, nMin, nMax) at 0065f2da. Two siblings already reviewed, ITEMPROP_AddSkillCharges (0065f470, verified-2026-10-25) and ITEMPROP_AddSkillOnEvent (0065f6a0), already name this slot pProperty; this brings the other 22 into line and gives the slot its real struct type instead of uint32_t. ITEMPROP_AddStat_WithMaxDurabilityReset keeps its chosen name nPropPtr and is only retyped. The two already-named siblings are left untouched.
Changes 45, applied together
Rename variable
win 0x0065eb30 Stack[0x8]namenParam12→pPropertyRetype variable
win 0x0065eb30 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065eba0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065eba0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065ec10 Stack[0x8]namenParam12→pPropertyRetype variable
win 0x0065ec10 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065ec80 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065ec80 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065ecf0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065ecf0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065ee80 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065ee80 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f010 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f010 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f2b0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f2b0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f310 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f310 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f390 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f390 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f3f0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f3f0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f590 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f590 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f870 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f870 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f960 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f960 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065f9d0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065f9d0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fa40 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fa40 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fae0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fae0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fb50 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fb50 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fba0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fba0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fbf0 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fbf0 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fc40 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fc40 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Retype variable
win 0x0065fc90 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *Rename variable
win 0x0065fd20 Stack[0x8]namenParam1→pPropertyRetype variable
win 0x0065fd20 Stack[0x8]typeuint32_t→D2SetsTxtFStrc *