SRegLoadData takes a string key and a single DWORD length output
The complete 99-byte wrapper and 362-byte worker prove two argument types. Stack[4] is byte-tested at 00414de6 and forwarded as the source of the worker's NUL-terminated path append. Callers supply "Configuration", "Patch" or a local copy of "Diablo II\VideoConfig". Stack[0x18] is forwarded unchanged in ESI; the worker writes DWORD zero at 00414b2e, then the numeric capacity at 00414bb5/00414c17 and passes ESI directly to RegQueryValueExA's lpcbData. All five calls pass NULL or the address of a numeric length local, used as an allocation size or compared to 16. Retype only these two slots to char* and DWORD*. Preserve existing names, six stack arguments, stdcall, RET 0x18 and int32_t return. No callback, struct, Win32 or CRT edits; static original-PE proof only.
Changes 2, applied together
Retype variable
win 0x00414de0 Stack[0x4]typeuint *→char *Retype variable
win 0x00414de0 Stack[0x18]typeuint * *→DWORD *