REDIVIVUS

Proposals / #1316

Mac COMCALLBACK_CreateChannelUser: uint8_t __fastcall (pUser ECX, uint8_t* pRawData EDX, nStatusFlags)

checked · by KierTaylor · submitted 2026-11-06

Roles follow the Windows twin 0x00446d90 (pbRawData EAX, nStatusFlags EDX, pUser EDI; returns uint8_t), in Mac fastcall order. ECX -> ESI = the channel-user struct (+0x8a flags word cleared, fields filled). EDX -> EDI = the raw stat-string blob (strlen'd, then parsed). [EBP+8] = the status flags (TEST CL,2 picks the product path). It returns the portrait/class byte (MOVZX EAX,BL at 0x002d7290) with a plain RET. The caller COMCALLBACK_AddUserToChannelList 0x002d5e1e sets ECX=pChannelUser, EDX=raw data, [ESP]=flags and keeps AL (MOV BL,AL). The pb prefix is refused, so the arg is named pRawData.

Changes 1, applied together

  1. Set prototype mac 0x002d6e7c

    signatureundefined COMCALLBACK_CreateChannelUser(void)→uint8_t COMCALLBACK_CreateChannelUser(D2ChannelUserStrc* pUser, uint8_t* pRawData, uint32_t nStatusFlags)
    conventionunknown→__fastcall