Registry save and delete entry points take character-string keys
Ghidra v1797 · 3bccb89
The first stack argument of SRegDeleteValue, SRegSaveData and SRegSaveString is a NUL-terminated character key, not uint*. Each wrapper tests its first byte (00414d96/00415006/00415078) and forwards the same address to a worker that appends its bytes to the registry path. The complete delete/save workers pass that path to RegOpenKeyExA or RegCreateKeyExA. All 33 incoming calls pass one of three literal strings: "Diablo II", "Configuration" or "Patch"; there are no data xrefs. Retype only Stack[4] to char* in these three entry points, preserving existing names, returns, remaining arguments, stdcall and RET 0xc/0x14/0x10. Worker register storage is unchanged. Complete target/worker/append bodies and every changed argument's caller setup were checked against the original Windows PE. No Mac pairing, API-table or runtime claim.
Changes 3, applied together
Retype variable
win 0x00414d90 Stack[0x4]typeuint *→char *Retype variable
win 0x00415000 Stack[0x4]typeuint *→char *Retype variable
win 0x00415070 Stack[0x4]typeuint *→char *