REDIVIVUS

Proposals / #1526

Mac MAC_GetMicroseconds64: void __cdecl (uint32_t* pCounterOut)

checked · by KierTaylor · submitted 2026-11-08

There is one cdecl stack arg. [EBP+8] -> ESI is an 8-byte out buffer: it calls MAC_GetMicrosecondsThunk(ESI+4 high, ESI low) at 0x0001ead1. The trailing MOV EAX,ESI is the struct-out pointer echo, and the only caller, QueryPerformanceCounter 0x0002c10c, ignores EAX: it reloads EAX from its own [EBP+8] and copies [EBP-8]/[EBP-4] out. So the Mac contract is void with one out pointer.

Changes 1, applied together

  1. Set prototype mac 0x0001eabd

    signatureundefined MAC_GetMicroseconds64(void)→void MAC_GetMicroseconds64(uint32_t* pCounterOut)
    conventionunknown→__cdecl