Recover the Mac string-lookup chain's wide-string pointer contracts
Mac 002b8656 and 002b914c have undefined returns, losing WCHAR * results used by callers. The leaf reads the existing 21-byte TBL header/index and returns a DWORD pointer from its second input's node-indexed array (or zero). The wrapper returns that EAX unchanged on every normal path. gpStringIndexBase is already WCHAR **; 0011d6d7/dc/df passes the wrapper result to a native WORD/stride-2 string scan. Recover the leaf's header/array input types and both pointer returns, preserving names, ushort widths and cdecl ABIs. Pair 002b914c with Windows GetLocaleString 00524a30 by the 20000/10000 table split, subtracts and 0x2b46 fallback; the module-prefix validator blocks copying that legacy name. Full bodies, all three leaf calls and representative consumers verified; no existing Mac correction found. Windows #149 concerns a separate ABI/error-block defect and is untouched. Static evidence only.
Changes 2, applied together
Set prototype
mac 0x002b8656signatureundefined STRTABLE_GetStringByIndex(int pTable, int pStringArray, ushort nIndex)→WCHAR * STRTABLE_GetStringByIndex(D2StringTableTblFileStrc * pTable, WCHAR ** pStringArray, ushort nIndex)convention__cdeclSet prototype
mac 0x002b914csignatureundefined FUN_002b914c(ushort nStringId)→WCHAR * FUN_002b914c(ushort nStringId)convention__cdecl