// Copyright (C) 2026 CoelhoFZ
// SPDX-License-Identifier: GPL-3.0-only
// This file is part of unlocker-CoelhoFZ (GPLv3, see LICENSE).

// Generated by gen_winmm_stubs.py - DO NOT edit manually.
// Resolvers: point each g_real_<name> (defined in the .S) to the
// matching export of the real winmm via GetProcAddress.
#include "winmm_stubs.h"

// Pointers defined in winmm_stubs.S (globals, link-time).
extern "C" {
    extern void* g_real_mciExecute;
    extern void* g_real_CloseDriver;
    extern void* g_real_DefDriverProc;
    extern void* g_real_DriverCallback;
    extern void* g_real_DrvGetModuleHandle;
    extern void* g_real_GetDriverModuleHandle;
    extern void* g_real_OpenDriver;
    extern void* g_real_PlaySound;
    extern void* g_real_PlaySoundA;
    extern void* g_real_PlaySoundW;
    extern void* g_real_SendDriverMessage;
    extern void* g_real_WOWAppExit;
    extern void* g_real_auxGetDevCapsA;
    extern void* g_real_auxGetDevCapsW;
    extern void* g_real_auxGetNumDevs;
    extern void* g_real_auxGetVolume;
    extern void* g_real_auxOutMessage;
    extern void* g_real_auxSetVolume;
    extern void* g_real_joyConfigChanged;
    extern void* g_real_joyGetDevCapsA;
    extern void* g_real_joyGetDevCapsW;
    extern void* g_real_joyGetNumDevs;
    extern void* g_real_joyGetPos;
    extern void* g_real_joyGetPosEx;
    extern void* g_real_joyGetThreshold;
    extern void* g_real_joyReleaseCapture;
    extern void* g_real_joySetCapture;
    extern void* g_real_joySetThreshold;
    extern void* g_real_mciDriverNotify;
    extern void* g_real_mciDriverYield;
    extern void* g_real_mciFreeCommandResource;
    extern void* g_real_mciGetCreatorTask;
    extern void* g_real_mciGetDeviceIDA;
    extern void* g_real_mciGetDeviceIDFromElementIDA;
    extern void* g_real_mciGetDeviceIDFromElementIDW;
    extern void* g_real_mciGetDeviceIDW;
    extern void* g_real_mciGetDriverData;
    extern void* g_real_mciGetErrorStringA;
    extern void* g_real_mciGetErrorStringW;
    extern void* g_real_mciGetYieldProc;
    extern void* g_real_mciLoadCommandResource;
    extern void* g_real_mciSendCommandA;
    extern void* g_real_mciSendCommandW;
    extern void* g_real_mciSendStringA;
    extern void* g_real_mciSendStringW;
    extern void* g_real_mciSetDriverData;
    extern void* g_real_mciSetYieldProc;
    extern void* g_real_midiConnect;
    extern void* g_real_midiDisconnect;
    extern void* g_real_midiInAddBuffer;
    extern void* g_real_midiInClose;
    extern void* g_real_midiInGetDevCapsA;
    extern void* g_real_midiInGetDevCapsW;
    extern void* g_real_midiInGetErrorTextA;
    extern void* g_real_midiInGetErrorTextW;
    extern void* g_real_midiInGetID;
    extern void* g_real_midiInGetNumDevs;
    extern void* g_real_midiInMessage;
    extern void* g_real_midiInOpen;
    extern void* g_real_midiInPrepareHeader;
    extern void* g_real_midiInReset;
    extern void* g_real_midiInStart;
    extern void* g_real_midiInStop;
    extern void* g_real_midiInUnprepareHeader;
    extern void* g_real_midiOutCacheDrumPatches;
    extern void* g_real_midiOutCachePatches;
    extern void* g_real_midiOutClose;
    extern void* g_real_midiOutGetDevCapsA;
    extern void* g_real_midiOutGetDevCapsW;
    extern void* g_real_midiOutGetErrorTextA;
    extern void* g_real_midiOutGetErrorTextW;
    extern void* g_real_midiOutGetID;
    extern void* g_real_midiOutGetNumDevs;
    extern void* g_real_midiOutGetVolume;
    extern void* g_real_midiOutLongMsg;
    extern void* g_real_midiOutMessage;
    extern void* g_real_midiOutOpen;
    extern void* g_real_midiOutPrepareHeader;
    extern void* g_real_midiOutReset;
    extern void* g_real_midiOutSetVolume;
    extern void* g_real_midiOutShortMsg;
    extern void* g_real_midiOutUnprepareHeader;
    extern void* g_real_midiStreamClose;
    extern void* g_real_midiStreamOpen;
    extern void* g_real_midiStreamOut;
    extern void* g_real_midiStreamPause;
    extern void* g_real_midiStreamPosition;
    extern void* g_real_midiStreamProperty;
    extern void* g_real_midiStreamRestart;
    extern void* g_real_midiStreamStop;
    extern void* g_real_mixerClose;
    extern void* g_real_mixerGetControlDetailsA;
    extern void* g_real_mixerGetControlDetailsW;
    extern void* g_real_mixerGetDevCapsA;
    extern void* g_real_mixerGetDevCapsW;
    extern void* g_real_mixerGetID;
    extern void* g_real_mixerGetLineControlsA;
    extern void* g_real_mixerGetLineControlsW;
    extern void* g_real_mixerGetLineInfoA;
    extern void* g_real_mixerGetLineInfoW;
    extern void* g_real_mixerGetNumDevs;
    extern void* g_real_mixerMessage;
    extern void* g_real_mixerOpen;
    extern void* g_real_mixerSetControlDetails;
    extern void* g_real_mmDrvInstall;
    extern void* g_real_mmGetCurrentTask;
    extern void* g_real_mmTaskBlock;
    extern void* g_real_mmTaskCreate;
    extern void* g_real_mmTaskSignal;
    extern void* g_real_mmTaskYield;
    extern void* g_real_mmioAdvance;
    extern void* g_real_mmioAscend;
    extern void* g_real_mmioClose;
    extern void* g_real_mmioCreateChunk;
    extern void* g_real_mmioDescend;
    extern void* g_real_mmioFlush;
    extern void* g_real_mmioGetInfo;
    extern void* g_real_mmioInstallIOProcA;
    extern void* g_real_mmioInstallIOProcW;
    extern void* g_real_mmioOpenA;
    extern void* g_real_mmioOpenW;
    extern void* g_real_mmioRead;
    extern void* g_real_mmioRenameA;
    extern void* g_real_mmioRenameW;
    extern void* g_real_mmioSeek;
    extern void* g_real_mmioSendMessage;
    extern void* g_real_mmioSetBuffer;
    extern void* g_real_mmioSetInfo;
    extern void* g_real_mmioStringToFOURCCA;
    extern void* g_real_mmioStringToFOURCCW;
    extern void* g_real_mmioWrite;
    extern void* g_real_mmsystemGetVersion;
    extern void* g_real_sndPlaySoundA;
    extern void* g_real_sndPlaySoundW;
    extern void* g_real_timeBeginPeriod;
    extern void* g_real_timeEndPeriod;
    extern void* g_real_timeGetDevCaps;
    extern void* g_real_timeGetSystemTime;
    extern void* g_real_timeGetTime;
    extern void* g_real_timeKillEvent;
    extern void* g_real_timeSetEvent;
    extern void* g_real_waveInAddBuffer;
    extern void* g_real_waveInClose;
    extern void* g_real_waveInGetDevCapsA;
    extern void* g_real_waveInGetDevCapsW;
    extern void* g_real_waveInGetErrorTextA;
    extern void* g_real_waveInGetErrorTextW;
    extern void* g_real_waveInGetID;
    extern void* g_real_waveInGetNumDevs;
    extern void* g_real_waveInGetPosition;
    extern void* g_real_waveInMessage;
    extern void* g_real_waveInOpen;
    extern void* g_real_waveInPrepareHeader;
    extern void* g_real_waveInReset;
    extern void* g_real_waveInStart;
    extern void* g_real_waveInStop;
    extern void* g_real_waveInUnprepareHeader;
    extern void* g_real_waveOutBreakLoop;
    extern void* g_real_waveOutClose;
    extern void* g_real_waveOutGetDevCapsA;
    extern void* g_real_waveOutGetDevCapsW;
    extern void* g_real_waveOutGetErrorTextA;
    extern void* g_real_waveOutGetErrorTextW;
    extern void* g_real_waveOutGetID;
    extern void* g_real_waveOutGetNumDevs;
    extern void* g_real_waveOutGetPitch;
    extern void* g_real_waveOutGetPlaybackRate;
    extern void* g_real_waveOutGetPosition;
    extern void* g_real_waveOutGetVolume;
    extern void* g_real_waveOutMessage;
    extern void* g_real_waveOutOpen;
    extern void* g_real_waveOutPause;
    extern void* g_real_waveOutPrepareHeader;
    extern void* g_real_waveOutReset;
    extern void* g_real_waveOutRestart;
    extern void* g_real_waveOutSetPitch;
    extern void* g_real_waveOutSetPlaybackRate;
    extern void* g_real_waveOutSetVolume;
    extern void* g_real_waveOutUnprepareHeader;
    extern void* g_real_waveOutWrite;
}

#define DEFINE_RESOLVER(name)                                                \
  static bool Resolve_##name(HMODULE m) {                                    \
    g_real_##name = reinterpret_cast<void*>(GetProcAddress(m, #name));       \
    return g_real_##name != nullptr;                                         \
  }

DEFINE_RESOLVER(mciExecute)
DEFINE_RESOLVER(CloseDriver)
DEFINE_RESOLVER(DefDriverProc)
DEFINE_RESOLVER(DriverCallback)
DEFINE_RESOLVER(DrvGetModuleHandle)
DEFINE_RESOLVER(GetDriverModuleHandle)
DEFINE_RESOLVER(OpenDriver)
DEFINE_RESOLVER(PlaySound)
DEFINE_RESOLVER(PlaySoundA)
DEFINE_RESOLVER(PlaySoundW)
DEFINE_RESOLVER(SendDriverMessage)
DEFINE_RESOLVER(WOWAppExit)
DEFINE_RESOLVER(auxGetDevCapsA)
DEFINE_RESOLVER(auxGetDevCapsW)
DEFINE_RESOLVER(auxGetNumDevs)
DEFINE_RESOLVER(auxGetVolume)
DEFINE_RESOLVER(auxOutMessage)
DEFINE_RESOLVER(auxSetVolume)
DEFINE_RESOLVER(joyConfigChanged)
DEFINE_RESOLVER(joyGetDevCapsA)
DEFINE_RESOLVER(joyGetDevCapsW)
DEFINE_RESOLVER(joyGetNumDevs)
DEFINE_RESOLVER(joyGetPos)
DEFINE_RESOLVER(joyGetPosEx)
DEFINE_RESOLVER(joyGetThreshold)
DEFINE_RESOLVER(joyReleaseCapture)
DEFINE_RESOLVER(joySetCapture)
DEFINE_RESOLVER(joySetThreshold)
DEFINE_RESOLVER(mciDriverNotify)
DEFINE_RESOLVER(mciDriverYield)
DEFINE_RESOLVER(mciFreeCommandResource)
DEFINE_RESOLVER(mciGetCreatorTask)
DEFINE_RESOLVER(mciGetDeviceIDA)
DEFINE_RESOLVER(mciGetDeviceIDFromElementIDA)
DEFINE_RESOLVER(mciGetDeviceIDFromElementIDW)
DEFINE_RESOLVER(mciGetDeviceIDW)
DEFINE_RESOLVER(mciGetDriverData)
DEFINE_RESOLVER(mciGetErrorStringA)
DEFINE_RESOLVER(mciGetErrorStringW)
DEFINE_RESOLVER(mciGetYieldProc)
DEFINE_RESOLVER(mciLoadCommandResource)
DEFINE_RESOLVER(mciSendCommandA)
DEFINE_RESOLVER(mciSendCommandW)
DEFINE_RESOLVER(mciSendStringA)
DEFINE_RESOLVER(mciSendStringW)
DEFINE_RESOLVER(mciSetDriverData)
DEFINE_RESOLVER(mciSetYieldProc)
DEFINE_RESOLVER(midiConnect)
DEFINE_RESOLVER(midiDisconnect)
DEFINE_RESOLVER(midiInAddBuffer)
DEFINE_RESOLVER(midiInClose)
DEFINE_RESOLVER(midiInGetDevCapsA)
DEFINE_RESOLVER(midiInGetDevCapsW)
DEFINE_RESOLVER(midiInGetErrorTextA)
DEFINE_RESOLVER(midiInGetErrorTextW)
DEFINE_RESOLVER(midiInGetID)
DEFINE_RESOLVER(midiInGetNumDevs)
DEFINE_RESOLVER(midiInMessage)
DEFINE_RESOLVER(midiInOpen)
DEFINE_RESOLVER(midiInPrepareHeader)
DEFINE_RESOLVER(midiInReset)
DEFINE_RESOLVER(midiInStart)
DEFINE_RESOLVER(midiInStop)
DEFINE_RESOLVER(midiInUnprepareHeader)
DEFINE_RESOLVER(midiOutCacheDrumPatches)
DEFINE_RESOLVER(midiOutCachePatches)
DEFINE_RESOLVER(midiOutClose)
DEFINE_RESOLVER(midiOutGetDevCapsA)
DEFINE_RESOLVER(midiOutGetDevCapsW)
DEFINE_RESOLVER(midiOutGetErrorTextA)
DEFINE_RESOLVER(midiOutGetErrorTextW)
DEFINE_RESOLVER(midiOutGetID)
DEFINE_RESOLVER(midiOutGetNumDevs)
DEFINE_RESOLVER(midiOutGetVolume)
DEFINE_RESOLVER(midiOutLongMsg)
DEFINE_RESOLVER(midiOutMessage)
DEFINE_RESOLVER(midiOutOpen)
DEFINE_RESOLVER(midiOutPrepareHeader)
DEFINE_RESOLVER(midiOutReset)
DEFINE_RESOLVER(midiOutSetVolume)
DEFINE_RESOLVER(midiOutShortMsg)
DEFINE_RESOLVER(midiOutUnprepareHeader)
DEFINE_RESOLVER(midiStreamClose)
DEFINE_RESOLVER(midiStreamOpen)
DEFINE_RESOLVER(midiStreamOut)
DEFINE_RESOLVER(midiStreamPause)
DEFINE_RESOLVER(midiStreamPosition)
DEFINE_RESOLVER(midiStreamProperty)
DEFINE_RESOLVER(midiStreamRestart)
DEFINE_RESOLVER(midiStreamStop)
DEFINE_RESOLVER(mixerClose)
DEFINE_RESOLVER(mixerGetControlDetailsA)
DEFINE_RESOLVER(mixerGetControlDetailsW)
DEFINE_RESOLVER(mixerGetDevCapsA)
DEFINE_RESOLVER(mixerGetDevCapsW)
DEFINE_RESOLVER(mixerGetID)
DEFINE_RESOLVER(mixerGetLineControlsA)
DEFINE_RESOLVER(mixerGetLineControlsW)
DEFINE_RESOLVER(mixerGetLineInfoA)
DEFINE_RESOLVER(mixerGetLineInfoW)
DEFINE_RESOLVER(mixerGetNumDevs)
DEFINE_RESOLVER(mixerMessage)
DEFINE_RESOLVER(mixerOpen)
DEFINE_RESOLVER(mixerSetControlDetails)
DEFINE_RESOLVER(mmDrvInstall)
DEFINE_RESOLVER(mmGetCurrentTask)
DEFINE_RESOLVER(mmTaskBlock)
DEFINE_RESOLVER(mmTaskCreate)
DEFINE_RESOLVER(mmTaskSignal)
DEFINE_RESOLVER(mmTaskYield)
DEFINE_RESOLVER(mmioAdvance)
DEFINE_RESOLVER(mmioAscend)
DEFINE_RESOLVER(mmioClose)
DEFINE_RESOLVER(mmioCreateChunk)
DEFINE_RESOLVER(mmioDescend)
DEFINE_RESOLVER(mmioFlush)
DEFINE_RESOLVER(mmioGetInfo)
DEFINE_RESOLVER(mmioInstallIOProcA)
DEFINE_RESOLVER(mmioInstallIOProcW)
DEFINE_RESOLVER(mmioOpenA)
DEFINE_RESOLVER(mmioOpenW)
DEFINE_RESOLVER(mmioRead)
DEFINE_RESOLVER(mmioRenameA)
DEFINE_RESOLVER(mmioRenameW)
DEFINE_RESOLVER(mmioSeek)
DEFINE_RESOLVER(mmioSendMessage)
DEFINE_RESOLVER(mmioSetBuffer)
DEFINE_RESOLVER(mmioSetInfo)
DEFINE_RESOLVER(mmioStringToFOURCCA)
DEFINE_RESOLVER(mmioStringToFOURCCW)
DEFINE_RESOLVER(mmioWrite)
DEFINE_RESOLVER(mmsystemGetVersion)
DEFINE_RESOLVER(sndPlaySoundA)
DEFINE_RESOLVER(sndPlaySoundW)
DEFINE_RESOLVER(timeBeginPeriod)
DEFINE_RESOLVER(timeEndPeriod)
DEFINE_RESOLVER(timeGetDevCaps)
DEFINE_RESOLVER(timeGetSystemTime)
DEFINE_RESOLVER(timeGetTime)
DEFINE_RESOLVER(timeKillEvent)
DEFINE_RESOLVER(timeSetEvent)
DEFINE_RESOLVER(waveInAddBuffer)
DEFINE_RESOLVER(waveInClose)
DEFINE_RESOLVER(waveInGetDevCapsA)
DEFINE_RESOLVER(waveInGetDevCapsW)
DEFINE_RESOLVER(waveInGetErrorTextA)
DEFINE_RESOLVER(waveInGetErrorTextW)
DEFINE_RESOLVER(waveInGetID)
DEFINE_RESOLVER(waveInGetNumDevs)
DEFINE_RESOLVER(waveInGetPosition)
DEFINE_RESOLVER(waveInMessage)
DEFINE_RESOLVER(waveInOpen)
DEFINE_RESOLVER(waveInPrepareHeader)
DEFINE_RESOLVER(waveInReset)
DEFINE_RESOLVER(waveInStart)
DEFINE_RESOLVER(waveInStop)
DEFINE_RESOLVER(waveInUnprepareHeader)
DEFINE_RESOLVER(waveOutBreakLoop)
DEFINE_RESOLVER(waveOutClose)
DEFINE_RESOLVER(waveOutGetDevCapsA)
DEFINE_RESOLVER(waveOutGetDevCapsW)
DEFINE_RESOLVER(waveOutGetErrorTextA)
DEFINE_RESOLVER(waveOutGetErrorTextW)
DEFINE_RESOLVER(waveOutGetID)
DEFINE_RESOLVER(waveOutGetNumDevs)
DEFINE_RESOLVER(waveOutGetPitch)
DEFINE_RESOLVER(waveOutGetPlaybackRate)
DEFINE_RESOLVER(waveOutGetPosition)
DEFINE_RESOLVER(waveOutGetVolume)
DEFINE_RESOLVER(waveOutMessage)
DEFINE_RESOLVER(waveOutOpen)
DEFINE_RESOLVER(waveOutPause)
DEFINE_RESOLVER(waveOutPrepareHeader)
DEFINE_RESOLVER(waveOutReset)
DEFINE_RESOLVER(waveOutRestart)
DEFINE_RESOLVER(waveOutSetPitch)
DEFINE_RESOLVER(waveOutSetPlaybackRate)
DEFINE_RESOLVER(waveOutSetVolume)
DEFINE_RESOLVER(waveOutUnprepareHeader)
DEFINE_RESOLVER(waveOutWrite)

#undef DEFINE_RESOLVER

bool ResolveAllWinmmStubs(HMODULE realWinmm) {
    if (realWinmm == nullptr) return false;
    bool allOk = true;
    allOk = Resolve_mciExecute(realWinmm) && allOk;
    allOk = Resolve_CloseDriver(realWinmm) && allOk;
    allOk = Resolve_DefDriverProc(realWinmm) && allOk;
    allOk = Resolve_DriverCallback(realWinmm) && allOk;
    allOk = Resolve_DrvGetModuleHandle(realWinmm) && allOk;
    allOk = Resolve_GetDriverModuleHandle(realWinmm) && allOk;
    allOk = Resolve_OpenDriver(realWinmm) && allOk;
    allOk = Resolve_PlaySound(realWinmm) && allOk;
    allOk = Resolve_PlaySoundA(realWinmm) && allOk;
    allOk = Resolve_PlaySoundW(realWinmm) && allOk;
    allOk = Resolve_SendDriverMessage(realWinmm) && allOk;
    allOk = Resolve_WOWAppExit(realWinmm) && allOk;
    allOk = Resolve_auxGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_auxGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_auxGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_auxGetVolume(realWinmm) && allOk;
    allOk = Resolve_auxOutMessage(realWinmm) && allOk;
    allOk = Resolve_auxSetVolume(realWinmm) && allOk;
    allOk = Resolve_joyConfigChanged(realWinmm) && allOk;
    allOk = Resolve_joyGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_joyGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_joyGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_joyGetPos(realWinmm) && allOk;
    allOk = Resolve_joyGetPosEx(realWinmm) && allOk;
    allOk = Resolve_joyGetThreshold(realWinmm) && allOk;
    allOk = Resolve_joyReleaseCapture(realWinmm) && allOk;
    allOk = Resolve_joySetCapture(realWinmm) && allOk;
    allOk = Resolve_joySetThreshold(realWinmm) && allOk;
    allOk = Resolve_mciDriverNotify(realWinmm) && allOk;
    allOk = Resolve_mciDriverYield(realWinmm) && allOk;
    allOk = Resolve_mciFreeCommandResource(realWinmm) && allOk;
    allOk = Resolve_mciGetCreatorTask(realWinmm) && allOk;
    allOk = Resolve_mciGetDeviceIDA(realWinmm) && allOk;
    allOk = Resolve_mciGetDeviceIDFromElementIDA(realWinmm) && allOk;
    allOk = Resolve_mciGetDeviceIDFromElementIDW(realWinmm) && allOk;
    allOk = Resolve_mciGetDeviceIDW(realWinmm) && allOk;
    allOk = Resolve_mciGetDriverData(realWinmm) && allOk;
    allOk = Resolve_mciGetErrorStringA(realWinmm) && allOk;
    allOk = Resolve_mciGetErrorStringW(realWinmm) && allOk;
    allOk = Resolve_mciGetYieldProc(realWinmm) && allOk;
    allOk = Resolve_mciLoadCommandResource(realWinmm) && allOk;
    allOk = Resolve_mciSendCommandA(realWinmm) && allOk;
    allOk = Resolve_mciSendCommandW(realWinmm) && allOk;
    allOk = Resolve_mciSendStringA(realWinmm) && allOk;
    allOk = Resolve_mciSendStringW(realWinmm) && allOk;
    allOk = Resolve_mciSetDriverData(realWinmm) && allOk;
    allOk = Resolve_mciSetYieldProc(realWinmm) && allOk;
    allOk = Resolve_midiConnect(realWinmm) && allOk;
    allOk = Resolve_midiDisconnect(realWinmm) && allOk;
    allOk = Resolve_midiInAddBuffer(realWinmm) && allOk;
    allOk = Resolve_midiInClose(realWinmm) && allOk;
    allOk = Resolve_midiInGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_midiInGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_midiInGetErrorTextA(realWinmm) && allOk;
    allOk = Resolve_midiInGetErrorTextW(realWinmm) && allOk;
    allOk = Resolve_midiInGetID(realWinmm) && allOk;
    allOk = Resolve_midiInGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_midiInMessage(realWinmm) && allOk;
    allOk = Resolve_midiInOpen(realWinmm) && allOk;
    allOk = Resolve_midiInPrepareHeader(realWinmm) && allOk;
    allOk = Resolve_midiInReset(realWinmm) && allOk;
    allOk = Resolve_midiInStart(realWinmm) && allOk;
    allOk = Resolve_midiInStop(realWinmm) && allOk;
    allOk = Resolve_midiInUnprepareHeader(realWinmm) && allOk;
    allOk = Resolve_midiOutCacheDrumPatches(realWinmm) && allOk;
    allOk = Resolve_midiOutCachePatches(realWinmm) && allOk;
    allOk = Resolve_midiOutClose(realWinmm) && allOk;
    allOk = Resolve_midiOutGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_midiOutGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_midiOutGetErrorTextA(realWinmm) && allOk;
    allOk = Resolve_midiOutGetErrorTextW(realWinmm) && allOk;
    allOk = Resolve_midiOutGetID(realWinmm) && allOk;
    allOk = Resolve_midiOutGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_midiOutGetVolume(realWinmm) && allOk;
    allOk = Resolve_midiOutLongMsg(realWinmm) && allOk;
    allOk = Resolve_midiOutMessage(realWinmm) && allOk;
    allOk = Resolve_midiOutOpen(realWinmm) && allOk;
    allOk = Resolve_midiOutPrepareHeader(realWinmm) && allOk;
    allOk = Resolve_midiOutReset(realWinmm) && allOk;
    allOk = Resolve_midiOutSetVolume(realWinmm) && allOk;
    allOk = Resolve_midiOutShortMsg(realWinmm) && allOk;
    allOk = Resolve_midiOutUnprepareHeader(realWinmm) && allOk;
    allOk = Resolve_midiStreamClose(realWinmm) && allOk;
    allOk = Resolve_midiStreamOpen(realWinmm) && allOk;
    allOk = Resolve_midiStreamOut(realWinmm) && allOk;
    allOk = Resolve_midiStreamPause(realWinmm) && allOk;
    allOk = Resolve_midiStreamPosition(realWinmm) && allOk;
    allOk = Resolve_midiStreamProperty(realWinmm) && allOk;
    allOk = Resolve_midiStreamRestart(realWinmm) && allOk;
    allOk = Resolve_midiStreamStop(realWinmm) && allOk;
    allOk = Resolve_mixerClose(realWinmm) && allOk;
    allOk = Resolve_mixerGetControlDetailsA(realWinmm) && allOk;
    allOk = Resolve_mixerGetControlDetailsW(realWinmm) && allOk;
    allOk = Resolve_mixerGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_mixerGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_mixerGetID(realWinmm) && allOk;
    allOk = Resolve_mixerGetLineControlsA(realWinmm) && allOk;
    allOk = Resolve_mixerGetLineControlsW(realWinmm) && allOk;
    allOk = Resolve_mixerGetLineInfoA(realWinmm) && allOk;
    allOk = Resolve_mixerGetLineInfoW(realWinmm) && allOk;
    allOk = Resolve_mixerGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_mixerMessage(realWinmm) && allOk;
    allOk = Resolve_mixerOpen(realWinmm) && allOk;
    allOk = Resolve_mixerSetControlDetails(realWinmm) && allOk;
    allOk = Resolve_mmDrvInstall(realWinmm) && allOk;
    allOk = Resolve_mmGetCurrentTask(realWinmm) && allOk;
    allOk = Resolve_mmTaskBlock(realWinmm) && allOk;
    allOk = Resolve_mmTaskCreate(realWinmm) && allOk;
    allOk = Resolve_mmTaskSignal(realWinmm) && allOk;
    allOk = Resolve_mmTaskYield(realWinmm) && allOk;
    allOk = Resolve_mmioAdvance(realWinmm) && allOk;
    allOk = Resolve_mmioAscend(realWinmm) && allOk;
    allOk = Resolve_mmioClose(realWinmm) && allOk;
    allOk = Resolve_mmioCreateChunk(realWinmm) && allOk;
    allOk = Resolve_mmioDescend(realWinmm) && allOk;
    allOk = Resolve_mmioFlush(realWinmm) && allOk;
    allOk = Resolve_mmioGetInfo(realWinmm) && allOk;
    allOk = Resolve_mmioInstallIOProcA(realWinmm) && allOk;
    allOk = Resolve_mmioInstallIOProcW(realWinmm) && allOk;
    allOk = Resolve_mmioOpenA(realWinmm) && allOk;
    allOk = Resolve_mmioOpenW(realWinmm) && allOk;
    allOk = Resolve_mmioRead(realWinmm) && allOk;
    allOk = Resolve_mmioRenameA(realWinmm) && allOk;
    allOk = Resolve_mmioRenameW(realWinmm) && allOk;
    allOk = Resolve_mmioSeek(realWinmm) && allOk;
    allOk = Resolve_mmioSendMessage(realWinmm) && allOk;
    allOk = Resolve_mmioSetBuffer(realWinmm) && allOk;
    allOk = Resolve_mmioSetInfo(realWinmm) && allOk;
    allOk = Resolve_mmioStringToFOURCCA(realWinmm) && allOk;
    allOk = Resolve_mmioStringToFOURCCW(realWinmm) && allOk;
    allOk = Resolve_mmioWrite(realWinmm) && allOk;
    allOk = Resolve_mmsystemGetVersion(realWinmm) && allOk;
    allOk = Resolve_sndPlaySoundA(realWinmm) && allOk;
    allOk = Resolve_sndPlaySoundW(realWinmm) && allOk;
    allOk = Resolve_timeBeginPeriod(realWinmm) && allOk;
    allOk = Resolve_timeEndPeriod(realWinmm) && allOk;
    allOk = Resolve_timeGetDevCaps(realWinmm) && allOk;
    allOk = Resolve_timeGetSystemTime(realWinmm) && allOk;
    allOk = Resolve_timeGetTime(realWinmm) && allOk;
    allOk = Resolve_timeKillEvent(realWinmm) && allOk;
    allOk = Resolve_timeSetEvent(realWinmm) && allOk;
    allOk = Resolve_waveInAddBuffer(realWinmm) && allOk;
    allOk = Resolve_waveInClose(realWinmm) && allOk;
    allOk = Resolve_waveInGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_waveInGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_waveInGetErrorTextA(realWinmm) && allOk;
    allOk = Resolve_waveInGetErrorTextW(realWinmm) && allOk;
    allOk = Resolve_waveInGetID(realWinmm) && allOk;
    allOk = Resolve_waveInGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_waveInGetPosition(realWinmm) && allOk;
    allOk = Resolve_waveInMessage(realWinmm) && allOk;
    allOk = Resolve_waveInOpen(realWinmm) && allOk;
    allOk = Resolve_waveInPrepareHeader(realWinmm) && allOk;
    allOk = Resolve_waveInReset(realWinmm) && allOk;
    allOk = Resolve_waveInStart(realWinmm) && allOk;
    allOk = Resolve_waveInStop(realWinmm) && allOk;
    allOk = Resolve_waveInUnprepareHeader(realWinmm) && allOk;
    allOk = Resolve_waveOutBreakLoop(realWinmm) && allOk;
    allOk = Resolve_waveOutClose(realWinmm) && allOk;
    allOk = Resolve_waveOutGetDevCapsA(realWinmm) && allOk;
    allOk = Resolve_waveOutGetDevCapsW(realWinmm) && allOk;
    allOk = Resolve_waveOutGetErrorTextA(realWinmm) && allOk;
    allOk = Resolve_waveOutGetErrorTextW(realWinmm) && allOk;
    allOk = Resolve_waveOutGetID(realWinmm) && allOk;
    allOk = Resolve_waveOutGetNumDevs(realWinmm) && allOk;
    allOk = Resolve_waveOutGetPitch(realWinmm) && allOk;
    allOk = Resolve_waveOutGetPlaybackRate(realWinmm) && allOk;
    allOk = Resolve_waveOutGetPosition(realWinmm) && allOk;
    allOk = Resolve_waveOutGetVolume(realWinmm) && allOk;
    allOk = Resolve_waveOutMessage(realWinmm) && allOk;
    allOk = Resolve_waveOutOpen(realWinmm) && allOk;
    allOk = Resolve_waveOutPause(realWinmm) && allOk;
    allOk = Resolve_waveOutPrepareHeader(realWinmm) && allOk;
    allOk = Resolve_waveOutReset(realWinmm) && allOk;
    allOk = Resolve_waveOutRestart(realWinmm) && allOk;
    allOk = Resolve_waveOutSetPitch(realWinmm) && allOk;
    allOk = Resolve_waveOutSetPlaybackRate(realWinmm) && allOk;
    allOk = Resolve_waveOutSetVolume(realWinmm) && allOk;
    allOk = Resolve_waveOutUnprepareHeader(realWinmm) && allOk;
    allOk = Resolve_waveOutWrite(realWinmm) && allOk;
    return allOk;
}
