Q20_GetSerpentKillerGUID returns bool, not uint
Both exits set only AL: 005b9c75 MOV AL,1 / RET after 005b9c70 MOV EAX,[EAX+0x24] / 005b9c73 MOV [ESI],EAX, and 005b9c79 XOR AL,AL / RET with EAX still holding a quest-data pointer. The upper 24 bits of EAX are leftovers (GUID bits, pointer bits) on both paths, so only the low byte is a return value: a bool success flag, with the GUID going out through pnPlayerGUID. Same shape as the AL-only returns already applied (#1049). VC8 oracle on main 1b1c2d3: +1 MATCH (005b9c50), 0 lost.
Changes 1, applied together
Set prototype
win 0x005b9c50signatureuint Q20_GetSerpentKillerGUID(SGAMEDATA * pGame, int * pnPlayerGUID)→bool Q20_GetSerpentKillerGUID(SGAMEDATA * pGame, int * pnPlayerGUID)convention__fastcall