REDIVIVUS

Proposals / #1476

Mac WND_RemoveAndFreeRecord: uint32_t __cdecl (void* pListHead, void* pRecord)

checked · by KierTaylor · submitted 2026-11-08

There are two cdecl stack args. [EBP+8] = the list head (+4 is the link used when the record is NULL). [EBP+0xc] -> EBX = the record: it is unlinked (0x00019304), its next link (+4) is kept in EDI, and it is freed via SMemFree 0x00018c44. It deliberately returns the next record (CMOVZ ESI,EDI; MOV EAX,ESI at 0x000194ca), not a leftover. Same as Windows twin 0x00420970 uint32_t (pListHead, pRecord). It uses void* because the Storm* structs fail the naming check and are not in the Mac DB.

Changes 1, applied together

  1. Set prototype mac 0x00019464

    signatureundefined WND_RemoveAndFreeRecord(void)→uint32_t WND_RemoveAndFreeRecord(void* pListHead, void* pRecord)
    conventionunknown→__cdecl