/* This file is auto-generated, do not edit. */
#include <stdarg.h>
#include <stdint.h>

#include "vrclient_private.h"

#include "flatapi.h"

WINE_DEFAULT_DEBUG_CHANNEL(vrclient);

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayVisibility, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayVisibility, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_IsSystemOverlayVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_IsActiveSystemOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_SetSystemOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_001_GetSystemOverlaySceneProcess, 16)

uint32_t __thiscall winIVROverlay_IVROverlay_001_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_001_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_001_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetHighQualityOverlay, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_001_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_001_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_001_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_001_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_001_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_001_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fGamma)
{
    struct IVROverlay_IVROverlay_001_SetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fGamma = fGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfGamma)
{
    struct IVROverlay_IVROverlay_001_GetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfGamma = pfGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_001_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_001_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_001_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_001_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_001_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_001_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_001_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_001_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_001_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayVisibility(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peOverlayVisibility)
{
    struct IVROverlay_IVROverlay_001_GetOverlayVisibility_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peOverlayVisibility = peOverlayVisibility,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayVisibility, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayVisibility(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayVisibility)
{
    struct IVROverlay_IVROverlay_001_SetOverlayVisibility_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayVisibility = eOverlayVisibility,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayVisibility, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_001_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_IsOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_001_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_092 *pEvent)
{
    struct IVROverlay_IVROverlay_001_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_001_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_001_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_001_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_001_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_001_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_001_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_001_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_001_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_001_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_001_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetOverlayFromFile, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_001_IsSystemOverlayVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_001_IsSystemOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_IsSystemOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_001_IsActiveSystemOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_001_IsActiveSystemOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_IsActiveSystemOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_SetSystemOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_001_SetSystemOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_SetSystemOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_001_GetSystemOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_001_GetSystemOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_001_GetSystemOverlaySceneProcess, &params );
    return params._ret;
}

extern vtable_ptr winIVROverlay_IVROverlay_001_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_001, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_001_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_001,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayVisibility)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayVisibility)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_IsSystemOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_IsActiveSystemOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_SetSystemOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_001_GetSystemOverlaySceneProcess)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_001(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_001_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_001(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_001_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(40);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 40 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_001_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_001_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_001_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_001_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_001_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_001_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_001_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_001_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_001_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_001_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_001_SetOverlayGamma, 2, TRUE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_001_GetOverlayGamma, 2, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_001_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_001_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_001_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_001_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_001_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_001_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_001_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_001_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_001_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_001_GetOverlayVisibility, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_001_SetOverlayVisibility, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_001_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_001_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_001_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_001_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_001_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_001_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_001_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_001_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_001_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_001_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_001_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_001_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_001_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_001_IsSystemOverlayVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_001_IsActiveSystemOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_001_SetSystemOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_001_GetSystemOverlaySceneProcess, 2, FALSE, FALSE);
    for (i = 0; i < 40; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_001_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayTexture, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_002_GetDashboardOverlaySceneProcess, 16)

uint32_t __thiscall winIVROverlay_IVROverlay_002_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_002_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_002_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetHighQualityOverlay, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_002_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_002_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_002_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_002_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_002_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_002_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_002_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_002_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fGamma)
{
    struct IVROverlay_IVROverlay_002_SetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fGamma = fGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfGamma)
{
    struct IVROverlay_IVROverlay_002_GetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfGamma = pfGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_002_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_002_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_002_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_002_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_002_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_002_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_002_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_002_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_002_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_002_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_IsOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_002_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_093 *pEvent)
{
    struct IVROverlay_IVROverlay_002_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_002_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_002_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_002_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_002_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_002_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_002_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_002_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_002_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureType, void *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_002_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_002_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_002_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_002_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_002_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_002_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_002_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_002_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_002_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_002_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_002_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_002_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

extern vtable_ptr winIVROverlay_IVROverlay_002_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_002, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_002_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_002,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_002_GetDashboardOverlaySceneProcess)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_002(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_002_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_002(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_002_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(42);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 42 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_002_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_002_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_002_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_002_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_002_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_002_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_002_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_002_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_002_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_002_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_002_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_002_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_002_SetOverlayGamma, 2, TRUE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_002_GetOverlayGamma, 2, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_002_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_002_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_002_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_002_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_002_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_002_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_002_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_002_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_002_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_002_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_002_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_002_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_002_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_002_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_002_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_002_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_002_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_002_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_002_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_002_SetOverlayTexture, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_002_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_002_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_002_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_002_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_002_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_002_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_002_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_002_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    for (i = 0; i < 42; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_002_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayTexture, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_003_ShowDashboard, 8)

uint32_t __thiscall winIVROverlay_IVROverlay_003_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_003_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_003_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_003_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_003_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_003_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_003_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_003_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_003_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_003_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_003_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_003_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_003_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_003_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fGamma)
{
    struct IVROverlay_IVROverlay_003_SetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fGamma = fGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfGamma)
{
    struct IVROverlay_IVROverlay_003_GetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfGamma = pfGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_003_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_003_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_003_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_003_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_003_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_003_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_003_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_003_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_003_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_003_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_IsOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_003_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_097 *pEvent)
{
    struct IVROverlay_IVROverlay_003_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_003_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_003_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_003_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_003_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_003_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_003_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_003_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_003_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureType, void *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_003_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_003_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_003_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_003_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_003_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_003_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_003_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_003_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_003_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_003_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_003_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_003_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_003_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_003_ShowDashboard, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_003_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_003, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_003_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_003,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_003_ShowDashboard)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_003(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_003_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_003(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_003_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(46);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 46 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_003_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_003_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_003_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_003_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_003_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_003_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_003_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_003_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_003_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_003_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_003_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_003_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_003_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_003_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_003_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_003_SetOverlayGamma, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_003_GetOverlayGamma, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_003_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_003_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_003_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_003_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_003_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_003_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_003_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_003_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_003_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_003_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_003_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_003_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_003_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_003_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_003_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_003_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_003_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_003_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_003_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_003_SetOverlayTexture, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_003_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_003_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_003_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_003_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_003_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_003_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_003_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_003_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_003_ShowDashboard, 1, FALSE, FALSE);
    for (i = 0; i < 46; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_003_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayTexture, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_004_ShowDashboard, 8)

uint32_t __thiscall winIVROverlay_IVROverlay_004_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_004_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_004_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_004_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_004_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_004_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_004_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_004_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_004_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_004_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_004_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_004_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_004_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_004_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fGamma)
{
    struct IVROverlay_IVROverlay_004_SetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fGamma = fGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfGamma)
{
    struct IVROverlay_IVROverlay_004_GetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfGamma = pfGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_004_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_004_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_004_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_004_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_004_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_004_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_004_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_004_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_004_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_004_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_004_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_004_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_IsOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_004_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_097 *pEvent)
{
    struct IVROverlay_IVROverlay_004_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_004_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_004_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_004_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_004_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_004_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_004_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_004_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_004_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureType, void *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_004_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_004_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_004_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_004_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_004_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_004_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_004_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_004_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_004_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_004_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_004_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_004_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_004_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_004_ShowDashboard, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_004_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_004, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_004_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_004,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_004_ShowDashboard)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_004(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_004_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_004(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_004_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(48);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 48 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_004_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_004_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_004_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_004_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_004_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_004_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_004_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_004_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_004_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_004_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_004_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_004_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_004_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_004_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_004_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_004_SetOverlayGamma, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_004_GetOverlayGamma, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_004_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_004_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_004_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_004_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_004_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_004_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_004_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_004_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_004_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_004_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_004_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_004_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_004_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_004_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_004_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_004_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_004_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_004_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_004_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_004_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_004_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_004_SetOverlayTexture, 3, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_004_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_004_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_004_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_004_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_004_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_004_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_004_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_004_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_004_ShowDashboard, 1, FALSE, FALSE);
    for (i = 0; i < 48; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_004_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayGamma, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_IsFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayTexture, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_ShowKeyboard, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_005_HideKeyboard, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_005_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_005_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_005_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_005_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_005_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_005_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_005_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_005_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_005_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_005_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_005_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_005_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fGamma)
{
    struct IVROverlay_IVROverlay_005_SetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fGamma = fGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayGamma(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfGamma)
{
    struct IVROverlay_IVROverlay_005_GetOverlayGamma_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfGamma = pfGamma,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayGamma, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_005_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_005_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_005_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_005_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_005_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_005_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_005_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_IsOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_0910 *pEvent)
{
    struct IVROverlay_IVROverlay_005_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_005_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_005_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_005_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_005_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_005_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_IsFocusOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_IsFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_IsFocusOverlay, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureType, void *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_005_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_005_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_005_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_005_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_005_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_005_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_005_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_005_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_005_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode)
{
    struct IVROverlay_IVROverlay_005_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_005_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_005_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_005_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_005_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_005_HideKeyboard, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_005_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_005, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_005_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_005,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayGamma)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_IsFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_005_HideKeyboard)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_005(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_005_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_005(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_005_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(52);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 52 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_005_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_005_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_005_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_005_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_005_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_005_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_005_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_005_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_005_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_005_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_005_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_005_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_005_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_005_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_005_SetOverlayGamma, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_005_GetOverlayGamma, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_005_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_005_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_005_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_005_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_005_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_005_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_005_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_005_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_005_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_005_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_005_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_005_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_005_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_005_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_005_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_005_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_005_IsFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_005_SetOverlayTexture, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_005_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_005_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_005_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_005_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_005_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_005_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_005_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_005_ShowKeyboard, 6, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_005_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_005_HideKeyboard, 0, FALSE, FALSE);
    for (i = 0; i < 52; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_005_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_007_HideKeyboard, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_007_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_007_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_007_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_007_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_007_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_007_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_007_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_007_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_007_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_007_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_007_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_007_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_007_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_007_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_007_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_007_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_007_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_007_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_007_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_007_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_007_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_007_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_007_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_007_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_007_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_007_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_007_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_IsOverlayVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_0912 *pEvent)
{
    struct IVROverlay_IVROverlay_007_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_007_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_007_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_007_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_007_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_007_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_007_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_007_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_007_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_007_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_007_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_007_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_007_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_007_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_007_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_007_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_007_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_007_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_007_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_007_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_007_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_007_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_007_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_007_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_007_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_007_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_007_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_007_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_007_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_007_HideKeyboard, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_007_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_007, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_007_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_007,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_007_HideKeyboard)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_007(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_007_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_007(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_007_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(57);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 57 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_007_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_007_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_007_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_007_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_007_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_007_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_007_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_007_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_007_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_007_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_007_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_007_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_007_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_007_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_007_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_007_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_007_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_007_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_007_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_007_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_007_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_007_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_007_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_007_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_007_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_007_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_007_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_007_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_007_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_007_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_007_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_007_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_007_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_007_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_007_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_007_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_007_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_007_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_007_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_007_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_007_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_007_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_007_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_007_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_007_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_007_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_007_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_007_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_007_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_007_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_007_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_007_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_007_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_007_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_007_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_007_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_007_HideKeyboard, 0, FALSE, FALSE);
    for (i = 0; i < 57; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_007_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_PollNextOverlayEvent, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_008_SetKeyboardPositionForOverlay, 28)

uint32_t __thiscall winIVROverlay_IVROverlay_008_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_008_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_008_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_008_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_008_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_008_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_008_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_008_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_008_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_008_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_008_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_008_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_008_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_008_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_008_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_008_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_008_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_008_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_008_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_008_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_008_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_008_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_008_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_008_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_008_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_008_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_008_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_008_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_0914 *pEvent)
{
    struct IVROverlay_IVROverlay_008_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_PollNextOverlayEvent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_008_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_008_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_008_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_008_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_008_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_008_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_008_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_008_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_008_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_008_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_008_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_008_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_008_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_008_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_008_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_008_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_008_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_008_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_008_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_008_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_008_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_008_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_008_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_008_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_008_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_008_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_008_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_008_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_008_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_008_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_008_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_008_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_008_SetKeyboardPositionForOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_008_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_008, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_008_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_008,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_008_SetKeyboardPositionForOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_008(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_008_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_008(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_008_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(60);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 60 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_008_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_008_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_008_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_008_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_008_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_008_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_008_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_008_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_008_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_008_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_008_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_008_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_008_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_008_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_008_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_008_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_008_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_008_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_008_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_008_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_008_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_008_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_008_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_008_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_008_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_008_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_008_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_008_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_008_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_008_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_008_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_008_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_008_PollNextOverlayEvent, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_008_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_008_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_008_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_008_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_008_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_008_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_008_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_008_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_008_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_008_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_008_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_008_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_008_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_008_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_008_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_008_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_008_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_008_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_008_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_008_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_008_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_008_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_008_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_008_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_008_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_008_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_008_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    for (i = 0; i < 60; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_008_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_010_SetKeyboardPositionForOverlay, 28)

uint32_t __thiscall winIVROverlay_IVROverlay_010_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_010_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_010_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_010_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_010_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_010_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_010_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_010_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_010_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_010_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_010_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_010_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_010_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_010_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_010_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_010_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_010_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_010_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_010_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_010_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_010_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_010_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_010_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_010_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_010_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_010_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_0918 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_0918 w_pEvent;
    struct IVROverlay_IVROverlay_010_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_010_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_010_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_010_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_010_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_010_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_010_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_010_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_010_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_010_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_010_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_010_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_010_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_010_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_010_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_010_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_010_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_010_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_010_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_010_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_010_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_010_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_010_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_010_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_010_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_010_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_010_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_010_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_010_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_010_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_010_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_010_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_010_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_010_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_010_SetKeyboardPositionForOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_010_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_010, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_010_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_010,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_010_SetKeyboardPositionForOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_010(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_010_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_010(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_010_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(63);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 63 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_010_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_010_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_010_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_010_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_010_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_010_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_010_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_010_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_010_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_010_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_010_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_010_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_010_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_010_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_010_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_010_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_010_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_010_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_010_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_010_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_010_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_010_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_010_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_010_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_010_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_010_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_010_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_010_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_010_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_010_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_010_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_010_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_010_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_010_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_010_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_010_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_010_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_010_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_010_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_010_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_010_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_010_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_010_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_010_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_010_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_010_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_010_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_010_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_010_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_010_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_010_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_010_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_010_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_010_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_010_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_010_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_010_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_010_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_010_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_010_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_010_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    for (i = 0; i < 63; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_010_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetOverlayTexture, 40)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_011_SetKeyboardPositionForOverlay, 28)

uint32_t __thiscall winIVROverlay_IVROverlay_011_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_011_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_011_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_011_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_011_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_011_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_011_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_011_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_011_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_011_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_011_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_011_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_011_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_011_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_011_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_011_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_011_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_011_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_011_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_011_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_011_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_011_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_011_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_0918 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_0918 w_pEvent;
    struct IVROverlay_IVROverlay_011_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_011_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_011_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_011_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_011_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_011_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_011_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_011_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_011_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_011_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_011_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_011_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_011_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_011_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_011_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPI, uint32_t *pColorSpace)
{
    struct IVROverlay_IVROverlay_011_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPI = pAPI,
        .pColorSpace = pColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_011_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_011_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_011_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_011_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_011_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_011_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_011_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_011_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_011_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_011_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_011_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_011_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_011_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_011_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_011_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_011_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_011_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_011_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_011_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_011_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_011_SetKeyboardPositionForOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_011_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_011, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_011_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_011,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_011_SetKeyboardPositionForOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_011(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_011_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_011(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_011_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(67);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 67 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_011_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_011_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_011_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_011_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_011_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_011_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_011_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_011_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_011_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_011_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_011_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_011_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_011_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_011_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_011_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_011_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_011_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_011_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_011_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_011_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_011_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_011_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_011_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_011_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_011_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_011_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_011_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_011_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_011_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_011_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_011_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_011_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_011_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_011_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_011_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_011_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_011_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_011_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_011_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_011_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_011_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_011_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_011_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_011_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_011_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_011_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_011_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_011_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_011_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_011_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_011_GetOverlayTexture, 8, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_011_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_011_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_011_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_011_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_011_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_011_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_011_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_011_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_011_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_011_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_011_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_011_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_011_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_011_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    for (i = 0; i < 67; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_011_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTexture, 40)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_012_SetKeyboardPositionForOverlay, 28)

uint32_t __thiscall winIVROverlay_IVROverlay_012_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_012_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_012_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_012_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_012_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_012_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_012_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_012_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_012_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_012_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_012_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_012_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_012_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_012_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_012_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_012_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_012_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_012_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_012_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_012_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_012_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_012_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_012_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_101 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_101 w_pEvent;
    struct IVROverlay_IVROverlay_012_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_012_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_012_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_012_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_012_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_012_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_012_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_012_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_012_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_012_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_012_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_012_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_012_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_012_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_012_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPI, uint32_t *pColorSpace)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPI = pAPI,
        .pColorSpace = pColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_012_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_012_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_012_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_012_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_012_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_012_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_012_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_012_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_012_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_012_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_012_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_012_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_012_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_012_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_012_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_012_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_012_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_012_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_012_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_012_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_012_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_012_SetKeyboardPositionForOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_012_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_012, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_012_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_012,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_012_SetKeyboardPositionForOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_012(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_012_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_012(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_012_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(68);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 68 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_012_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_012_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_012_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_012_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_012_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_012_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_012_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_012_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_012_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_012_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_012_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_012_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_012_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_012_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_012_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_012_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_012_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_012_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_012_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_012_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_012_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_012_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_012_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_012_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_012_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_012_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_012_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_012_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_012_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_012_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_012_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_012_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_012_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_012_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_012_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_012_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_012_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_012_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_012_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_012_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_012_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_012_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_012_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_012_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_012_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_012_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_012_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_012_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_012_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_012_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_012_GetOverlayTexture, 8, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_012_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_012_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_012_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_012_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_012_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_012_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_012_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_012_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_012_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_012_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_012_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_012_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_012_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_012_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_012_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    for (i = 0; i < 68; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_012_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTexture, 40)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_013_SetOverlayIntersectionMask, 24)

uint32_t __thiscall winIVROverlay_IVROverlay_013_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_013_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_013_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_013_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_013_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_013_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_013_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_013_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_013_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_013_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_013_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_013_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_013_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_013_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_013_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_013_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_013_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_013_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_013_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_013_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_013_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_013_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_013_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_013_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_013_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_013_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_103 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_103 w_pEvent;
    struct IVROverlay_IVROverlay_013_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_013_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_013_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_013_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_013_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_013_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_013_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_013_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_013_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_013_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_013_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_013_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_013_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_013_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_013_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPI, uint32_t *pColorSpace)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPI = pAPI,
        .pColorSpace = pColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_013_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_013_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_013_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_013_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_013_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_013_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_013_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_013_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_013_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_013_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_013_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_013_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_013_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_013_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_013_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_013_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_013_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_013_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_013_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_013_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_013_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_013_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_013_SetOverlayIntersectionMask, &params );
    return params._ret;
}

extern vtable_ptr winIVROverlay_IVROverlay_013_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_013, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_013_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_013,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_013_SetOverlayIntersectionMask)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_013(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_013_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_013(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_013_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(73);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 73 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_013_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_013_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_013_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_013_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_013_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_013_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_013_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_013_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_013_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_013_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_013_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_013_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_013_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_013_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_013_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_013_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_013_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_013_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_013_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_013_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_013_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_013_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_013_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_013_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_013_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_013_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_013_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_013_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_013_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_013_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_013_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_013_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_013_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_013_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_013_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_013_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_013_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_013_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_013_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_013_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_013_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_013_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_013_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_013_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_013_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_013_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_013_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_013_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_013_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_013_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_013_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_013_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_013_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_013_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_013_GetOverlayTexture, 8, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_013_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_013_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_013_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_013_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_013_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_013_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_013_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_013_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_013_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_013_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_013_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_013_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_013_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_013_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_013_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_013_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    for (i = 0; i < 73; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_013_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_014_ShowMessageOverlay, 28)

uint32_t __thiscall winIVROverlay_IVROverlay_014_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_014_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_014_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_014_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_014_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_014_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_014_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_014_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_014_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_014_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_014_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_014_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_014_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_014_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_014_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_014_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_014_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_014_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_014_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_014_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_014_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_014_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_014_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_014_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_014_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_014_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_106 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_106 w_pEvent;
    struct IVROverlay_IVROverlay_014_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_014_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_014_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_014_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_014_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_014_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_014_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_014_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_014_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_014_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_014_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_014_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_014_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_014_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_014_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_014_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_014_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_014_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_014_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_014_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_014_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_014_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_014_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_014_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_014_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_014_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_014_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_014_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_014_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_014_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_014_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_014_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_014_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_014_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_014_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_014_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_014_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_014_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_014_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_014_ShowMessageOverlay, &params );
    return params._ret;
}

extern vtable_ptr winIVROverlay_IVROverlay_014_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_014, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_014_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_014,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_014_ShowMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_014(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_014_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_014(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_014_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(75);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 75 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_014_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_014_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_014_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_014_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_014_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_014_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_014_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_014_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_014_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_014_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_014_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_014_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_014_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_014_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_014_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_014_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_014_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_014_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_014_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_014_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_014_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_014_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_014_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_014_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_014_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_014_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_014_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_014_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_014_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_014_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_014_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_014_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_014_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_014_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_014_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_014_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_014_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_014_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_014_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_014_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_014_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_014_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_014_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_014_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_014_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_014_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_014_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_014_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_014_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_014_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_014_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_014_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_014_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_014_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_014_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_014_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_014_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_014_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_014_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_014_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_014_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_014_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_014_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_014_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_014_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_014_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_014_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_014_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_014_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_014_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_014_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_014_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_014_ShowMessageOverlay, 6, FALSE, FALSE);
    for (i = 0; i < 75; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_014_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_016_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_016_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_016_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_016_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_016_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_016_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_016_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_016_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_016_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_016_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_016_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_016_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_016_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_016_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_016_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_016_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_016_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_016_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_016_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_016_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_016_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_016_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_016_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_016_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_016_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_016_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_016_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_106 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_106 w_pEvent;
    struct IVROverlay_IVROverlay_016_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_016_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_016_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_016_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_016_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_016_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_016_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_016_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_016_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_016_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_016_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_016_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_016_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_016_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_016_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_016_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_016_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_016_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_016_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_016_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_016_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_016_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_016_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_016_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_016_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_016_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_016_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_016_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_016_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_016_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_016_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_016_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_016_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_016_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_016_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_016_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_016_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_016_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_016_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_016_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_016_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_016_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_016_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_016, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_016_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_016,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_016_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_016(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_016_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_016(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_016_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(81);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 81 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_016_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_016_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_016_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_016_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_016_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_016_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_016_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_016_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_016_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_016_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_016_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_016_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_016_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_016_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_016_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_016_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_016_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_016_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_016_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_016_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_016_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_016_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_016_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_016_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_016_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_016_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_016_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_016_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_016_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_016_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_016_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_016_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_016_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_016_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_016_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_016_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_016_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_016_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_016_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_016_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_016_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_016_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_016_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_016_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_016_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_016_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_016_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_016_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_016_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_016_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_016_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_016_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_016_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_016_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_016_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_016_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_016_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_016_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_016_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_016_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_016_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_016_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_016_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_016_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_016_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_016_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_016_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_016_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_016_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_016_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_016_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_016_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_016_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_016_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_016_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_016_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_016_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_016_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[80], r, winIVROverlay_IVROverlay_016_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 81; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_016_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_HandleControllerOverlayInteractionAsMouse, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_017_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_017_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_017_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_017_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_017_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_017_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_017_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_017_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_017_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_017_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_017_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_017_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_017_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_017_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_017_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_017_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_017_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_017_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_017_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_017_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_017_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_017_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_017_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_017_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_017_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_017_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_017_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1011 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1011 w_pEvent;
    struct IVROverlay_IVROverlay_017_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_017_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_017_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_017_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_017_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_017_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_HandleControllerOverlayInteractionAsMouse(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unControllerDeviceIndex)
{
    struct IVROverlay_IVROverlay_017_HandleControllerOverlayInteractionAsMouse_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unControllerDeviceIndex = unControllerDeviceIndex,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_HandleControllerOverlayInteractionAsMouse, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_017_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_017_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_017_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_017_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_017_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, const HmdVector2_t *vCenter, float fRadius)
{
    struct IVROverlay_IVROverlay_017_SetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .vCenter = vCenter,
        .fRadius = fRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, HmdVector2_t *pvCenter, float *pfRadius)
{
    struct IVROverlay_IVROverlay_017_GetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .pfRadius = pfRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayDualAnalogTransform, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_017_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_017_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_017_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_017_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_017_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_017_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_017_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_017_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_017_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_017_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_017_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_017_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_017_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_017_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_017_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_017_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_017_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_017_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_017_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_017_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_017_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_017_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_017_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_017_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_017_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_017_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_017_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_017_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_017_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_017_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_017_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_017, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_017_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_017,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_HandleControllerOverlayInteractionAsMouse)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_017_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_017(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_017_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_017(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_017_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(83);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 83 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_017_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_017_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_017_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_017_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_017_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_017_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_017_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_017_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_017_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_017_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_017_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_017_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_017_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_017_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_017_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_017_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_017_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_017_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_017_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_017_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_017_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_017_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_017_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_017_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_017_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_017_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_017_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_017_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_017_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_017_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_017_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_017_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_017_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_017_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_017_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_017_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_017_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_017_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_017_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_017_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_017_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_017_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_017_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_017_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_017_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_017_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_017_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_017_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_017_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_017_HandleControllerOverlayInteractionAsMouse, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_017_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_017_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_017_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_017_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_017_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_017_SetOverlayDualAnalogTransform, 4, TRUE, TRUE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_017_GetOverlayDualAnalogTransform, 4, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_017_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_017_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_017_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_017_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_017_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_017_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_017_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_017_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_017_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_017_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_017_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_017_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_017_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_017_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_017_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_017_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_017_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_017_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_017_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_017_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_017_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[80], r, winIVROverlay_IVROverlay_017_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[81], r, winIVROverlay_IVROverlay_017_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[82], r, winIVROverlay_IVROverlay_017_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 83; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_017_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_018_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_018_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_018_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_018_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_018_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_018_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_018_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_018_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_018_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_018_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_018_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_018_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_018_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_018_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_018_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_018_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_018_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_018_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_018_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_018_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_018_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_018_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_018_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_018_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_018_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_018_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_018_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_018_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_018_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1016 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1016 w_pEvent;
    struct IVROverlay_IVROverlay_018_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_018_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_018_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_018_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_018_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_018_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_018_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_018_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_018_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_018_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_018_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_018_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_018_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, const HmdVector2_t *vCenter, float fRadius)
{
    struct IVROverlay_IVROverlay_018_SetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .vCenter = vCenter,
        .fRadius = fRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, HmdVector2_t *pvCenter, float *pfRadius)
{
    struct IVROverlay_IVROverlay_018_GetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .pfRadius = pfRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayDualAnalogTransform, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_018_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_018_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_018_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_018_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_018_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_018_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_018_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_018_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_018_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_018_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_018_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_018_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_018_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_018_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_018_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_018_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_018_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_018_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_018_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_018_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_018_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_018_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_018_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_018_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_018_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_018_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_018_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_018_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_018_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_018_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_018_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_018_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_018, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_018_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_018,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_018_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_018(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_018_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_018(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_018_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(82);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 82 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_018_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_018_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_018_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_018_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_018_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_018_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_018_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_018_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_018_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_018_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_018_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_018_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_018_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_018_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_018_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_018_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_018_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_018_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_018_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_018_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_018_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_018_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_018_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_018_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_018_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_018_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_018_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_018_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_018_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_018_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_018_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_018_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_018_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_018_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_018_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_018_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_018_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_018_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_018_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_018_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_018_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_018_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_018_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_018_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_018_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_018_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_018_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_018_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_018_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_018_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_018_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_018_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_018_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_018_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_018_SetOverlayDualAnalogTransform, 4, TRUE, TRUE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_018_GetOverlayDualAnalogTransform, 4, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_018_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_018_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_018_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_018_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_018_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_018_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_018_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_018_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_018_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_018_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_018_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_018_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_018_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_018_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_018_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_018_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_018_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_018_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_018_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_018_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_018_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_018_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[80], r, winIVROverlay_IVROverlay_018_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[81], r, winIVROverlay_IVROverlay_018_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 82; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_018_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetHighQualityOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetHighQualityOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_019_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_019_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetHighQualityOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_SetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetHighQualityOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_019_GetHighQualityOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_019_GetHighQualityOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetHighQualityOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_019_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_019_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_019_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_019_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_019_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_019_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_019_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_019_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_019_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_019_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_019_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_019_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_019_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_019_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_019_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_019_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_019_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_019_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_019_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_019_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_019_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_019_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_019_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_019_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_019_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1322 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1322 w_pEvent;
    struct IVROverlay_IVROverlay_019_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_019_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_019_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_019_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_019_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_019_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_019_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_019_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_019_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_019_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_019_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_019_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_019_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, const HmdVector2_t *pvCenter, float fRadius)
{
    struct IVROverlay_IVROverlay_019_SetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .fRadius = fRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, HmdVector2_t *pvCenter, float *pfRadius)
{
    struct IVROverlay_IVROverlay_019_GetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .pfRadius = pfRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayDualAnalogTransform, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_019_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_019_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_019_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_019_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_019_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_019_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_019_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_019_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_019_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_019_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_019_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_019_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_019_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_019_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_019_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_019_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_019_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_019_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_019_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_019_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_019_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_019_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_019_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_019_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_019_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_019_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_019_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_019_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_019_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_019_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_019_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_019_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_019, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_019_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_019,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetHighQualityOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_019_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_019(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_019_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_019(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_019_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(82);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 82 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_019_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_019_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_019_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_019_SetHighQualityOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_019_GetHighQualityOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_019_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_019_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_019_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_019_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_019_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_019_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_019_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_019_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_019_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_019_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_019_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_019_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_019_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_019_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_019_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_019_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_019_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_019_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_019_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_019_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_019_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_019_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_019_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_019_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_019_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_019_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_019_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_019_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_019_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_019_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_019_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_019_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_019_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_019_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_019_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_019_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_019_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_019_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_019_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_019_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_019_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_019_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_019_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_019_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_019_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_019_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_019_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_019_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_019_SetOverlayDualAnalogTransform, 4, TRUE, TRUE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_019_GetOverlayDualAnalogTransform, 4, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_019_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_019_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_019_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_019_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_019_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_019_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_019_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_019_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_019_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_019_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_019_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_019_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_019_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_019_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_019_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_019_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_019_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_019_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_019_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_019_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_019_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_019_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[80], r, winIVROverlay_IVROverlay_019_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[81], r, winIVROverlay_IVROverlay_019_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 82; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_019_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayAutoCurveDistanceRangeInMeters, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetGamepadFocusOverlay, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetGamepadFocusOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayNeighbor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_MoveGamepadFocusToNeighbor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_020_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_020_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_020_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_020_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_020_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_020_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_020_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_020_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_020_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_020_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_020_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_020_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_020_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_020_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_020_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_020_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_020_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_020_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_020_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_020_SetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fMinDistanceInMeters = fMinDistanceInMeters,
        .fMaxDistanceInMeters = fMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayAutoCurveDistanceRangeInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfMinDistanceInMeters, float *pfMaxDistanceInMeters)
{
    struct IVROverlay_IVROverlay_020_GetOverlayAutoCurveDistanceRangeInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfMinDistanceInMeters = pfMinDistanceInMeters,
        .pfMaxDistanceInMeters = pfMaxDistanceInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayAutoCurveDistanceRangeInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_020_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_020_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_020_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_020_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_020_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_020_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1322 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1322 w_pEvent;
    struct IVROverlay_IVROverlay_020_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_020_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_020_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_020_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_020_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_020_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_020_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_020_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint64_t __thiscall winIVROverlay_IVROverlay_020_GetGamepadFocusOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_020_GetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetGamepadFocusOverlay(struct w_steam_iface *_this, uint64_t ulNewFocusOverlay)
{
    struct IVROverlay_IVROverlay_020_SetGamepadFocusOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulNewFocusOverlay = ulNewFocusOverlay,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetGamepadFocusOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom, uint64_t ulTo)
{
    struct IVROverlay_IVROverlay_020_SetOverlayNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
        .ulTo = ulTo,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_MoveGamepadFocusToNeighbor(struct w_steam_iface *_this, uint32_t eDirection, uint64_t ulFrom)
{
    struct IVROverlay_IVROverlay_020_MoveGamepadFocusToNeighbor_params params =
    {
        .linux_side = _this->u_iface,
        .eDirection = eDirection,
        .ulFrom = ulFrom,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_MoveGamepadFocusToNeighbor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, const HmdVector2_t *pvCenter, float fRadius)
{
    struct IVROverlay_IVROverlay_020_SetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .fRadius = fRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, HmdVector2_t *pvCenter, float *pfRadius)
{
    struct IVROverlay_IVROverlay_020_GetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .pfRadius = pfRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayDualAnalogTransform, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_020_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_020_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_020_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_020_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_020_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_020_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_020_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_020_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_020_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_020_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_020_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_020_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_020_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_020_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_020_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_020_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_020_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_020_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_020_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_020_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_020_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_020_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_020_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_020_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_020_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_020_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_020_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_020_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_020_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_020_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_020_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_020_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_020, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_020_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_020,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayAutoCurveDistanceRangeInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetGamepadFocusOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_MoveGamepadFocusToNeighbor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_020_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_020(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_020_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_020(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_020_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(80);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 80 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_020_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_020_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_020_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_020_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_020_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_020_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_020_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_020_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_020_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_020_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_020_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_020_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_020_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_020_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_020_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_020_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_020_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_020_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_020_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_020_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_020_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_020_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_020_SetOverlayAutoCurveDistanceRangeInMeters, 3, TRUE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_020_GetOverlayAutoCurveDistanceRangeInMeters, 3, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_020_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_020_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_020_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_020_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_020_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_020_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_020_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_020_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_020_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_020_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_020_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_020_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_020_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_020_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_020_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_020_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_020_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_020_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_020_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_020_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_020_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_020_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_020_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_020_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_020_GetGamepadFocusOverlay, 0, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_020_SetGamepadFocusOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_020_SetOverlayNeighbor, 3, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_020_MoveGamepadFocusToNeighbor, 2, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_020_SetOverlayDualAnalogTransform, 4, TRUE, TRUE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_020_GetOverlayDualAnalogTransform, 4, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_020_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_020_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_020_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_020_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_020_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_020_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_020_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_020_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_020_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_020_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_020_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_020_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_020_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_020_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_020_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_020_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_020_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_020_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_020_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_020_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_020_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_020_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_020_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_020_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 80; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_020_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_021_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_021_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_021_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_021_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_021_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_021_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_021_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_021_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_021_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_021_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_021_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_021_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_021_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_021_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_021_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_021_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_021_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_021_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_021_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fCurvature)
{
    struct IVROverlay_IVROverlay_021_SetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fCurvature = fCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfCurvature)
{
    struct IVROverlay_IVROverlay_021_GetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfCurvature = pfCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_021_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_021_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_021_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_021_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_021_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_021_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1322 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1322 w_pEvent;
    struct IVROverlay_IVROverlay_021_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_021_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_021_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_021_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_021_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_021_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_021_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_021_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, const HmdVector2_t *pvCenter, float fRadius)
{
    struct IVROverlay_IVROverlay_021_SetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .fRadius = fRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, HmdVector2_t *pvCenter, float *pfRadius)
{
    struct IVROverlay_IVROverlay_021_GetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .pfRadius = pfRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayDualAnalogTransform, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_021_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
{
    struct IVROverlay_IVROverlay_021_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unDepth = unDepth,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_021_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_021_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_021_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_021_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_021_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_021_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_021_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_021_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_021_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_021_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_021_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_021_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_021_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_021_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_021_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_021_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_021_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_021_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_021_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_021_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_021_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_021_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_021_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_021_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_021_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_021_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_021_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_021_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_021_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_021_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_021, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_021_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_021,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_021_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_021(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_021_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_021(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_021_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(76);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 76 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_021_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_021_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_021_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_021_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_021_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_021_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_021_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_021_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_021_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_021_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_021_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_021_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_021_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_021_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_021_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_021_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_021_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_021_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_021_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_021_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_021_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_021_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_021_SetOverlayCurvature, 2, TRUE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_021_GetOverlayCurvature, 2, FALSE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_021_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_021_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_021_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_021_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_021_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_021_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_021_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_021_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_021_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_021_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_021_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_021_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_021_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_021_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_021_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_021_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_021_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_021_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_021_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_021_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_021_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_021_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_021_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_021_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_021_SetOverlayDualAnalogTransform, 4, TRUE, TRUE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_021_GetOverlayDualAnalogTransform, 4, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_021_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_021_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_021_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_021_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_021_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_021_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_021_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_021_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_021_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_021_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_021_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_021_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_021_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_021_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_021_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_021_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_021_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_021_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_021_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_021_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_021_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_021_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_021_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_021_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 76; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_021_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayRenderModel, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayRenderModel, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayDualAnalogTransform, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_TriggerLaserMouseHapticVibration, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayCursor, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayCursorPositionOverride, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ClearOverlayCursorPositionOverride, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_022_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_022_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_022_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_022_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_022_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_022_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_022_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_022_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_022_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_022_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_022_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_022_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_022_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_022_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_022_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_022_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_022_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_022_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_022_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_022_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fCurvature)
{
    struct IVROverlay_IVROverlay_022_SetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fCurvature = fCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfCurvature)
{
    struct IVROverlay_IVROverlay_022_GetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfCurvature = pfCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_022_GetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pColor = pColor,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayRenderModel(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchRenderModel, const HmdColor_t *pColor)
{
    struct IVROverlay_IVROverlay_022_SetOverlayRenderModel_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchRenderModel = pchRenderModel,
        .pColor = pColor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayRenderModel, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_022_SetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulCursorOverlayHandle = ulCursorOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_022_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_022_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_022_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1322 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1322 w_pEvent;
    struct IVROverlay_IVROverlay_022_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_022_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_022_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_022_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_022_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_022_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_022_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_022_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, const HmdVector2_t *pvCenter, float fRadius)
{
    struct IVROverlay_IVROverlay_022_SetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .fRadius = fRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayDualAnalogTransform(struct w_steam_iface *_this, uint64_t ulOverlay, uint32_t eWhich, HmdVector2_t *pvCenter, float *pfRadius)
{
    struct IVROverlay_IVROverlay_022_GetOverlayDualAnalogTransform_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlay = ulOverlay,
        .eWhich = eWhich,
        .pvCenter = pvCenter,
        .pfRadius = pfRadius,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayDualAnalogTransform, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_022_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_TriggerLaserMouseHapticVibration(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude)
{
    struct IVROverlay_IVROverlay_022_TriggerLaserMouseHapticVibration_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fDurationSeconds = fDurationSeconds,
        .fFrequency = fFrequency,
        .fAmplitude = fAmplitude,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_TriggerLaserMouseHapticVibration, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulCursorHandle)
{
    struct IVROverlay_IVROverlay_022_SetOverlayCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulCursorHandle = ulCursorHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvCursor)
{
    struct IVROverlay_IVROverlay_022_SetOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvCursor = pvCursor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayCursorPositionOverride, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_ClearOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_ClearOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ClearOverlayCursorPositionOverride, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_022_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unBytesPerPixel)
{
    struct IVROverlay_IVROverlay_022_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unBytesPerPixel = unBytesPerPixel,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_022_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_022_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_022_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_022_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_022_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_022_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_022_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_022_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_022_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_022_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_022_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_022_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_022_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_022_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, int8_t bUseMinimalMode, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_022_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .bUseMinimalMode = bUseMinimalMode,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_022_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_022_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_022_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_022_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_022_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_022_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_022_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_022_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_022_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_022_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_022_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_022_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_022_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_022, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_022_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_022,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayRenderModel)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayDualAnalogTransform)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_TriggerLaserMouseHapticVibration)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ClearOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_022_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_022(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_022_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_022(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_022_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(82);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 82 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_022_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_022_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_022_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_022_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_022_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_022_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_022_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_022_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_022_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_022_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_022_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_022_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_022_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_022_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_022_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_022_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_022_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_022_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_022_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_022_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_022_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_022_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_022_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_022_SetOverlayCurvature, 2, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_022_GetOverlayCurvature, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_022_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_022_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_022_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_022_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_022_GetOverlayRenderModel, 5, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_022_SetOverlayRenderModel, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_022_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_022_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_022_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_022_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_022_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_022_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_022_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_022_SetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_022_GetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_022_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_022_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_022_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_022_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_022_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_022_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_022_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_022_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_022_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_022_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_022_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_022_SetOverlayDualAnalogTransform, 4, TRUE, TRUE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_022_GetOverlayDualAnalogTransform, 4, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_022_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_022_TriggerLaserMouseHapticVibration, 4, TRUE, TRUE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_022_SetOverlayCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_022_SetOverlayCursorPositionOverride, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_022_ClearOverlayCursorPositionOverride, 1, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_022_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_022_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_022_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_022_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_022_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_022_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_022_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_022_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_022_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_022_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_022_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_022_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_022_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_022_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_022_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_022_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_022_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_022_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_022_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_022_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[80], r, winIVROverlay_IVROverlay_022_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[81], r, winIVROverlay_IVROverlay_022_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 82; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_022_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_TriggerLaserMouseHapticVibration, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayCursor, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayCursorPositionOverride, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ClearOverlayCursorPositionOverride, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_024_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_024_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_024_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_024_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_024_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_024_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_024_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_024_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_024_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_024_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_024_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_024_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_024_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_024_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_024_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_024_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_024_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_024_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_024_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_024_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fCurvature)
{
    struct IVROverlay_IVROverlay_024_SetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fCurvature = fCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfCurvature)
{
    struct IVROverlay_IVROverlay_024_GetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfCurvature = pfCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_024_SetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulCursorOverlayHandle = ulCursorOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_024_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_024_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_024_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_11030 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_11030 w_pEvent;
    struct IVROverlay_IVROverlay_024_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_024_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_024_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_024_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_024_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_024_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_024_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_024_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_024_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_TriggerLaserMouseHapticVibration(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude)
{
    struct IVROverlay_IVROverlay_024_TriggerLaserMouseHapticVibration_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fDurationSeconds = fDurationSeconds,
        .fFrequency = fFrequency,
        .fAmplitude = fAmplitude,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_TriggerLaserMouseHapticVibration, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulCursorHandle)
{
    struct IVROverlay_IVROverlay_024_SetOverlayCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulCursorHandle = ulCursorHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvCursor)
{
    struct IVROverlay_IVROverlay_024_SetOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvCursor = pvCursor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayCursorPositionOverride, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_ClearOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_ClearOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ClearOverlayCursorPositionOverride, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_024_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unBytesPerPixel)
{
    struct IVROverlay_IVROverlay_024_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unBytesPerPixel = unBytesPerPixel,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_024_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_024_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_024_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_024_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_024_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_024_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_024_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_024_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_024_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_024_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_024_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_024_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_024_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_024_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_024_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_024_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_024_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_024_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_024_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_024_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_024_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_024_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_024_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_024_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_024_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_024_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_024_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_024_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_024, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_024_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_024,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_TriggerLaserMouseHapticVibration)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ClearOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_024_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_024(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_024_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_024(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_024_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(78);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 78 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_024_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_024_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_024_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_024_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_024_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_024_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_024_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_024_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_024_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_024_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_024_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_024_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_024_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_024_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_024_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_024_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_024_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_024_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_024_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_024_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_024_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_024_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_024_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_024_SetOverlayCurvature, 2, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_024_GetOverlayCurvature, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_024_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_024_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_024_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_024_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_024_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_024_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_024_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_024_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_024_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_024_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_024_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_024_SetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_024_GetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_024_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_024_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_024_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_024_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_024_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_024_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_024_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_024_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_024_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_024_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_024_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_024_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_024_TriggerLaserMouseHapticVibration, 4, TRUE, TRUE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_024_SetOverlayCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_024_SetOverlayCursorPositionOverride, 2, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_024_ClearOverlayCursorPositionOverride, 1, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_024_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_024_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_024_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_024_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_024_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_024_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_024_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_024_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_024_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_024_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_024_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_024_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_024_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_024_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_024_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_024_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_024_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_024_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_024_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_024_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_024_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_024_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 78; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_024_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTransformProjection, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_TriggerLaserMouseHapticVibration, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayCursor, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayCursorPositionOverride, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ClearOverlayCursorPositionOverride, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_025_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_025_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_025_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_025_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_025_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_025_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_025_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_025_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_025_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_025_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_025_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_025_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_025_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_025_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_025_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_025_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_025_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_025_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_025_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_025_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fCurvature)
{
    struct IVROverlay_IVROverlay_025_SetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fCurvature = fCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfCurvature)
{
    struct IVROverlay_IVROverlay_025_GetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfCurvature = pfCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulCursorOverlayHandle = ulCursorOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTransformProjection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform, const VROverlayProjection_t *pProjection, uint32_t eEye)
{
    struct IVROverlay_IVROverlay_025_SetOverlayTransformProjection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
        .pProjection = pProjection,
        .eEye = eEye,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayTransformProjection, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_025_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_025_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_025_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1168 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1168 w_pEvent;
    struct IVROverlay_IVROverlay_025_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_025_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_025_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_025_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_025_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_025_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_025_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_025_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_025_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_TriggerLaserMouseHapticVibration(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude)
{
    struct IVROverlay_IVROverlay_025_TriggerLaserMouseHapticVibration_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fDurationSeconds = fDurationSeconds,
        .fFrequency = fFrequency,
        .fAmplitude = fAmplitude,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_TriggerLaserMouseHapticVibration, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulCursorHandle)
{
    struct IVROverlay_IVROverlay_025_SetOverlayCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulCursorHandle = ulCursorHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvCursor)
{
    struct IVROverlay_IVROverlay_025_SetOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvCursor = pvCursor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayCursorPositionOverride, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_ClearOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_ClearOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ClearOverlayCursorPositionOverride, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_025_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unBytesPerPixel)
{
    struct IVROverlay_IVROverlay_025_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unBytesPerPixel = unBytesPerPixel,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_025_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_025_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_025_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_025_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_025_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_025_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_025_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_025_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_025_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_025_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_025_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_025_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_025_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_025_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_025_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_025_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_025_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_025_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_025_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_025_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_025_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_025_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_025_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_025_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_025_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_025_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_025_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_025_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_025, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_025_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_025,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTransformProjection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_TriggerLaserMouseHapticVibration)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ClearOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_025_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_025(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_025_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_025(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_025_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(79);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 79 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_025_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_025_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_025_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_025_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_025_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_025_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_025_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_025_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_025_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_025_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_025_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_025_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_025_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_025_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_025_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_025_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_025_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_025_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_025_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_025_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_025_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_025_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_025_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_025_SetOverlayCurvature, 2, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_025_GetOverlayCurvature, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_025_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_025_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_025_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_025_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_025_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_025_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_025_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_025_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_025_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_025_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_025_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_025_SetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_025_GetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_025_SetOverlayTransformProjection, 5, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_025_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_025_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_025_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_025_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_025_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_025_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_025_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_025_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_025_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_025_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_025_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_025_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_025_TriggerLaserMouseHapticVibration, 4, TRUE, TRUE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_025_SetOverlayCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_025_SetOverlayCursorPositionOverride, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_025_ClearOverlayCursorPositionOverride, 1, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_025_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_025_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_025_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_025_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_025_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_025_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_025_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_025_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_025_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_025_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_025_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_025_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_025_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_025_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_025_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_025_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_025_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_025_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_025_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_025_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_025_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_025_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 79; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_025_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayPreCurvePitch, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayPreCurvePitch, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTransformOverlayRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTransformOverlayRelative, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTransformProjection, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_WaitFrameSync, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_TriggerLaserMouseHapticVibration, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayCursor, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayCursorPositionOverride, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ClearOverlayCursorPositionOverride, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_026_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_026_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_026_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_026_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_026_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_026_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_026_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_026_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_026_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_026_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_026_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_026_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_026_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_026_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_026_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_026_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_026_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_026_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_026_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_026_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fCurvature)
{
    struct IVROverlay_IVROverlay_026_SetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fCurvature = fCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfCurvature)
{
    struct IVROverlay_IVROverlay_026_GetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfCurvature = pfCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayPreCurvePitch(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRadians)
{
    struct IVROverlay_IVROverlay_026_SetOverlayPreCurvePitch_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRadians = fRadians,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayPreCurvePitch, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayPreCurvePitch(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRadians)
{
    struct IVROverlay_IVROverlay_026_GetOverlayPreCurvePitch_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRadians = pfRadians,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayPreCurvePitch, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTransformOverlayRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTransformOverlayRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulOverlayHandleParent = ulOverlayHandleParent,
        .pmatParentOverlayToOverlayTransform = pmatParentOverlayToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTransformOverlayRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulCursorOverlayHandle = ulCursorOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTransformProjection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform, const VROverlayProjection_t *pProjection, uint32_t eEye)
{
    struct IVROverlay_IVROverlay_026_SetOverlayTransformProjection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
        .pProjection = pProjection,
        .eEye = eEye,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayTransformProjection, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_026_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_026_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_WaitFrameSync(struct w_steam_iface *_this, uint32_t nTimeoutMs)
{
    struct IVROverlay_IVROverlay_026_WaitFrameSync_params params =
    {
        .linux_side = _this->u_iface,
        .nTimeoutMs = nTimeoutMs,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_WaitFrameSync, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_026_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_1168 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_1168 w_pEvent;
    struct IVROverlay_IVROverlay_026_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_026_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_026_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_026_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_026_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_026_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_026_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_026_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_026_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_TriggerLaserMouseHapticVibration(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude)
{
    struct IVROverlay_IVROverlay_026_TriggerLaserMouseHapticVibration_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fDurationSeconds = fDurationSeconds,
        .fFrequency = fFrequency,
        .fAmplitude = fAmplitude,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_TriggerLaserMouseHapticVibration, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulCursorHandle)
{
    struct IVROverlay_IVROverlay_026_SetOverlayCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulCursorHandle = ulCursorHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvCursor)
{
    struct IVROverlay_IVROverlay_026_SetOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvCursor = pvCursor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayCursorPositionOverride, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_ClearOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_ClearOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ClearOverlayCursorPositionOverride, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_026_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unBytesPerPixel)
{
    struct IVROverlay_IVROverlay_026_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unBytesPerPixel = unBytesPerPixel,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_026_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_026_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_026_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_026_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_026_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_026_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_026_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_026_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_026_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_026_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_026_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_026_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_026_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_026_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_026_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_026_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_026_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_026_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_026_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_026_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_026_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_026_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_026_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_026_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_026_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_026_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_026_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_026_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_026, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_026_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_026,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayPreCurvePitch)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayPreCurvePitch)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTransformOverlayRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTransformProjection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_WaitFrameSync)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_TriggerLaserMouseHapticVibration)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ClearOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_026_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_026(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_026_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_026(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_026_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(82);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 82 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_026_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_026_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_026_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_026_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_026_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_026_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_026_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_026_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_026_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_026_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_026_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_026_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_026_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_026_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_026_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_026_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_026_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_026_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_026_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_026_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_026_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_026_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_026_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_026_SetOverlayCurvature, 2, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_026_GetOverlayCurvature, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_026_SetOverlayPreCurvePitch, 2, TRUE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_026_GetOverlayPreCurvePitch, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_026_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_026_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_026_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_026_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_026_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_026_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_026_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_026_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_026_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_026_GetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_026_SetOverlayTransformOverlayRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_026_SetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_026_GetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_026_SetOverlayTransformProjection, 5, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_026_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_026_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_026_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_026_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_026_WaitFrameSync, 1, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_026_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_026_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_026_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_026_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_026_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_026_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_026_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_026_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_026_TriggerLaserMouseHapticVibration, 4, TRUE, TRUE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_026_SetOverlayCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_026_SetOverlayCursorPositionOverride, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_026_ClearOverlayCursorPositionOverride, 1, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_026_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_026_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_026_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_026_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_026_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_026_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_026_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_026_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_026_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_026_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_026_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_026_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_026_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_026_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_026_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_026_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_026_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_026_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_026_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_026_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[80], r, winIVROverlay_IVROverlay_026_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[81], r, winIVROverlay_IVROverlay_026_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 82; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_026_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_FindOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_CreateOverlay, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_DestroyOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayKey, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayName, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayName, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayImageData, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayErrorNameFromEnum, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayRenderingPid, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayRenderingPid, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayFlag, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayFlags, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayColor, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayAlpha, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTexelAspect, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlaySortOrder, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayWidthInMeters, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayCurvature, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayPreCurvePitch, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayPreCurvePitch, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTextureColorSpace, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTextureBounds, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTransformType, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTransformAbsolute, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceRelative, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceComponent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceComponent, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTransformCursor, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTransformProjection, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ShowOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_HideOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_IsOverlayVisible, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetTransformForOverlayCoordinates, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_WaitFrameSync, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_PollNextOverlayEvent, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayInputMethod, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayMouseScale, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ComputeOverlayIntersection, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_IsHoverTargetOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayIntersectionMask, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_TriggerLaserMouseHapticVibration, 24)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayCursor, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayCursorPositionOverride, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ClearOverlayCursorPositionOverride, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayTexture, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ClearOverlayTexture, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayRaw, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetOverlayFromFile, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTexture, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ReleaseNativeOverlayHandle, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetOverlayTextureSize, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_CreateDashboardOverlay, 20)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_IsDashboardVisible, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_IsActiveDashboardOverlay, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetDashboardOverlaySceneProcess, 16)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ShowDashboard, 8)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetPrimaryDashboardDevice, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ShowKeyboard, 36)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ShowKeyboardForOverlay, 44)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_GetKeyboardText, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_HideKeyboard, 4)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetKeyboardTransformAbsolute, 12)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_SetKeyboardPositionForOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_ShowMessageOverlay, 28)
DEFINE_THISCALL_WRAPPER(winIVROverlay_IVROverlay_027_CloseMessageOverlay, 4)

uint32_t __thiscall winIVROverlay_IVROverlay_027_FindOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_FindOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_FindOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_CreateOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayName, uint64_t *pOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_CreateOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayName = pchOverlayName,
        .pOverlayHandle = pOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_CreateOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_DestroyOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_DestroyOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_DestroyOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayKey(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_027_GetOverlayKey_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayKey, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, uint32_t *pError)
{
    struct IVROverlay_IVROverlay_027_GetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchValue = pchValue,
        .unBufferSize = unBufferSize,
        .pError = pError,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayName(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchName)
{
    struct IVROverlay_IVROverlay_027_SetOverlayName_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchName = pchName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayName, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayImageData(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unBufferSize, uint32_t *punWidth, uint32_t *punHeight)
{
    struct IVROverlay_IVROverlay_027_GetOverlayImageData_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unBufferSize = unBufferSize,
        .punWidth = punWidth,
        .punHeight = punHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayImageData, &params );
    return params._ret;
}

const char * __thiscall winIVROverlay_IVROverlay_027_GetOverlayErrorNameFromEnum(struct w_steam_iface *_this, uint32_t error)
{
    struct IVROverlay_IVROverlay_027_GetOverlayErrorNameFromEnum_params params =
    {
        .linux_side = _this->u_iface,
        .error = error,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayErrorNameFromEnum, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unPID)
{
    struct IVROverlay_IVROverlay_027_SetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unPID = unPID,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayRenderingPid(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_GetOverlayRenderingPid_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayRenderingPid, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t bEnabled)
{
    struct IVROverlay_IVROverlay_027_SetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .bEnabled = bEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayFlag(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eOverlayFlag, int8_t *pbEnabled)
{
    struct IVROverlay_IVROverlay_027_GetOverlayFlag_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eOverlayFlag = eOverlayFlag,
        .pbEnabled = pbEnabled,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayFlag, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayFlags(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pFlags)
{
    struct IVROverlay_IVROverlay_027_GetOverlayFlags_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pFlags = pFlags,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayFlags, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
{
    struct IVROverlay_IVROverlay_027_SetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRed = fRed,
        .fGreen = fGreen,
        .fBlue = fBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayColor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue)
{
    struct IVROverlay_IVROverlay_027_GetOverlayColor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRed = pfRed,
        .pfGreen = pfGreen,
        .pfBlue = pfBlue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayColor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fAlpha)
{
    struct IVROverlay_IVROverlay_027_SetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fAlpha = fAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayAlpha(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfAlpha)
{
    struct IVROverlay_IVROverlay_027_GetOverlayAlpha_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfAlpha = pfAlpha,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayAlpha, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fTexelAspect)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fTexelAspect = fTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTexelAspect(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfTexelAspect)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTexelAspect_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfTexelAspect = pfTexelAspect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTexelAspect, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unSortOrder)
{
    struct IVROverlay_IVROverlay_027_SetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unSortOrder = unSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlaySortOrder(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punSortOrder)
{
    struct IVROverlay_IVROverlay_027_GetOverlaySortOrder_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punSortOrder = punSortOrder,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlaySortOrder, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fWidthInMeters)
{
    struct IVROverlay_IVROverlay_027_SetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fWidthInMeters = fWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayWidthInMeters(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfWidthInMeters)
{
    struct IVROverlay_IVROverlay_027_GetOverlayWidthInMeters_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfWidthInMeters = pfWidthInMeters,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayWidthInMeters, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fCurvature)
{
    struct IVROverlay_IVROverlay_027_SetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fCurvature = fCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayCurvature(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfCurvature)
{
    struct IVROverlay_IVROverlay_027_GetOverlayCurvature_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfCurvature = pfCurvature,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayCurvature, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayPreCurvePitch(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fRadians)
{
    struct IVROverlay_IVROverlay_027_SetOverlayPreCurvePitch_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fRadians = fRadians,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayPreCurvePitch, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayPreCurvePitch(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float *pfRadians)
{
    struct IVROverlay_IVROverlay_027_GetOverlayPreCurvePitch_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pfRadians = pfRadians,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayPreCurvePitch, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTextureColorSpace)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTextureColorSpace = eTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTextureColorSpace(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTextureColorSpace)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTextureColorSpace_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTextureColorSpace = peTextureColorSpace,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTextureColorSpace, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTextureBounds(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTextureBounds_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pOverlayTextureBounds = pOverlayTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTextureBounds, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTransformType(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTransformType)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTransformType_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTransformType = peTransformType,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTransformType, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTransformAbsolute(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peTrackingOrigin, HmdMatrix34_t *pmatTrackingOriginToOverlayTransform)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peTrackingOrigin = peTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTransformAbsolute, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unTrackedDevice, const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unTrackedDevice = unTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceRelative(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punTrackedDevice, HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceRelative_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punTrackedDevice = punTrackedDevice,
        .pmatTrackedDeviceToOverlayTransform = pmatTrackedDeviceToOverlayTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceRelative, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unDeviceIndex, const char *pchComponentName)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unDeviceIndex = unDeviceIndex,
        .pchComponentName = pchComponentName,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceComponent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceComponent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punDeviceIndex = punDeviceIndex,
        .pchComponentName = pchComponentName,
        .unComponentNameSize = unComponentNameSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceComponent, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulCursorOverlayHandle = ulCursorOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTransformCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvHotspot)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTransformCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvHotspot = pvHotspot,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTransformCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTransformProjection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform, const VROverlayProjection_t *pProjection, uint32_t eEye)
{
    struct IVROverlay_IVROverlay_027_SetOverlayTransformProjection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToOverlayTransform = pmatTrackingOriginToOverlayTransform,
        .pProjection = pProjection,
        .eEye = eEye,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayTransformProjection, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_ShowOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_ShowOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ShowOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_HideOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_HideOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_HideOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_027_IsOverlayVisible(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_IsOverlayVisible_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_IsOverlayVisible, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetTransformForOverlayCoordinates(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform)
{
    struct IVROverlay_IVROverlay_027_GetTransformForOverlayCoordinates_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eTrackingOrigin = eTrackingOrigin,
        .coordinatesInOverlay = coordinatesInOverlay,
        .pmatTransform = pmatTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetTransformForOverlayCoordinates, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_WaitFrameSync(struct w_steam_iface *_this, uint32_t nTimeoutMs)
{
    struct IVROverlay_IVROverlay_027_WaitFrameSync_params params =
    {
        .linux_side = _this->u_iface,
        .nTimeoutMs = nTimeoutMs,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_WaitFrameSync, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_027_PollNextOverlayEvent(struct w_steam_iface *_this, uint64_t ulOverlayHandle, w_VREvent_t_223 *pEvent, uint32_t uncbVREvent)
{
    w_VREvent_t_223 w_pEvent;
    struct IVROverlay_IVROverlay_027_PollNextOverlayEvent_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pEvent = pEvent ? &w_pEvent : NULL,
        .uncbVREvent = uncbVREvent,
    };
    TRACE("%p\n", _this);
    uncbVREvent = min( uncbVREvent, sizeof(w_pEvent) );
    if (pEvent) memcpy( &w_pEvent, pEvent, uncbVREvent );
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_PollNextOverlayEvent, &params );
    if (pEvent) memcpy( pEvent, &w_pEvent, uncbVREvent );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *peInputMethod)
{
    struct IVROverlay_IVROverlay_027_GetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .peInputMethod = peInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayInputMethod(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMethod)
{
    struct IVROverlay_IVROverlay_027_SetOverlayInputMethod_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMethod = eInputMethod,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayInputMethod, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_027_GetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayMouseScale, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayMouseScale(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale)
{
    struct IVROverlay_IVROverlay_027_SetOverlayMouseScale_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvecMouseScale = pvecMouseScale,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayMouseScale, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_027_ComputeOverlayIntersection(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults)
{
    struct IVROverlay_IVROverlay_027_ComputeOverlayIntersection_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pParams = pParams,
        .pResults = pResults,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ComputeOverlayIntersection, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_027_IsHoverTargetOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_IsHoverTargetOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_IsHoverTargetOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayIntersectionMask(struct w_steam_iface *_this, uint64_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize)
{
    struct IVROverlay_IVROverlay_027_SetOverlayIntersectionMask_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pMaskPrimitives = pMaskPrimitives,
        .unNumMaskPrimitives = unNumMaskPrimitives,
        .unPrimitiveSize = unPrimitiveSize,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayIntersectionMask, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_TriggerLaserMouseHapticVibration(struct w_steam_iface *_this, uint64_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude)
{
    struct IVROverlay_IVROverlay_027_TriggerLaserMouseHapticVibration_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .fDurationSeconds = fDurationSeconds,
        .fFrequency = fFrequency,
        .fAmplitude = fAmplitude,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_TriggerLaserMouseHapticVibration, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayCursor(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint64_t ulCursorHandle)
{
    struct IVROverlay_IVROverlay_027_SetOverlayCursor_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .ulCursorHandle = ulCursorHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayCursor, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const HmdVector2_t *pvCursor)
{
    struct IVROverlay_IVROverlay_027_SetOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvCursor = pvCursor,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayCursorPositionOverride, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_ClearOverlayCursorPositionOverride(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_ClearOverlayCursorPositionOverride_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ClearOverlayCursorPositionOverride, &params );
    return params._ret;
}

extern uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const w_Texture_t *pTexture);

uint32_t __thiscall winIVROverlay_IVROverlay_027_ClearOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_ClearOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ClearOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayRaw(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unBytesPerPixel)
{
    struct IVROverlay_IVROverlay_027_SetOverlayRaw_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pvBuffer = pvBuffer,
        .unWidth = unWidth,
        .unHeight = unHeight,
        .unBytesPerPixel = unBytesPerPixel,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayRaw, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetOverlayFromFile(struct w_steam_iface *_this, uint64_t ulOverlayHandle, const char *pchFilePath)
{
    struct IVROverlay_IVROverlay_027_SetOverlayFromFile_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pchFilePath = pchFilePath,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetOverlayFromFile, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTexture(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void **pNativeTextureHandle, void *pNativeTextureRef, uint32_t *pWidth, uint32_t *pHeight, uint32_t *pNativeFormat, uint32_t *pAPIType, uint32_t *pColorSpace, VRTextureBounds_t *pTextureBounds)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTexture_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
        .pNativeTextureRef = pNativeTextureRef,
        .pWidth = pWidth,
        .pHeight = pHeight,
        .pNativeFormat = pNativeFormat,
        .pAPIType = pAPIType,
        .pColorSpace = pColorSpace,
        .pTextureBounds = pTextureBounds,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTexture, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_ReleaseNativeOverlayHandle(struct w_steam_iface *_this, uint64_t ulOverlayHandle, void *pNativeTextureHandle)
{
    struct IVROverlay_IVROverlay_027_ReleaseNativeOverlayHandle_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pNativeTextureHandle = pNativeTextureHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ReleaseNativeOverlayHandle, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetOverlayTextureSize(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight)
{
    struct IVROverlay_IVROverlay_027_GetOverlayTextureSize_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .pWidth = pWidth,
        .pHeight = pHeight,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetOverlayTextureSize, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_CreateDashboardOverlay(struct w_steam_iface *_this, const char *pchOverlayKey, const char *pchOverlayFriendlyName, uint64_t *pMainHandle, uint64_t *pThumbnailHandle)
{
    struct IVROverlay_IVROverlay_027_CreateDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayKey = pchOverlayKey,
        .pchOverlayFriendlyName = pchOverlayFriendlyName,
        .pMainHandle = pMainHandle,
        .pThumbnailHandle = pThumbnailHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_CreateDashboardOverlay, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_027_IsDashboardVisible(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_027_IsDashboardVisible_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_IsDashboardVisible, &params );
    return params._ret;
}

int8_t __thiscall winIVROverlay_IVROverlay_027_IsActiveDashboardOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle)
{
    struct IVROverlay_IVROverlay_027_IsActiveDashboardOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_IsActiveDashboardOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_SetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t unProcessId)
{
    struct IVROverlay_IVROverlay_027_SetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .unProcessId = unProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetDashboardOverlaySceneProcess(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t *punProcessId)
{
    struct IVROverlay_IVROverlay_027_GetDashboardOverlaySceneProcess_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .punProcessId = punProcessId,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetDashboardOverlaySceneProcess, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_027_ShowDashboard(struct w_steam_iface *_this, const char *pchOverlayToShow)
{
    struct IVROverlay_IVROverlay_027_ShowDashboard_params params =
    {
        .linux_side = _this->u_iface,
        .pchOverlayToShow = pchOverlayToShow,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ShowDashboard, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetPrimaryDashboardDevice(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_027_GetPrimaryDashboardDevice_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetPrimaryDashboardDevice, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_ShowKeyboard(struct w_steam_iface *_this, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_027_ShowKeyboard_params params =
    {
        .linux_side = _this->u_iface,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ShowKeyboard, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_ShowKeyboardForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, uint32_t eInputMode, uint32_t eLineInputMode, uint32_t unFlags, const char *pchDescription, uint32_t unCharMax, const char *pchExistingText, uint64_t uUserValue)
{
    struct IVROverlay_IVROverlay_027_ShowKeyboardForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .eInputMode = eInputMode,
        .eLineInputMode = eLineInputMode,
        .unFlags = unFlags,
        .pchDescription = pchDescription,
        .unCharMax = unCharMax,
        .pchExistingText = pchExistingText,
        .uUserValue = uUserValue,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ShowKeyboardForOverlay, &params );
    return params._ret;
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_GetKeyboardText(struct w_steam_iface *_this, char *pchText, uint32_t cchText)
{
    struct IVROverlay_IVROverlay_027_GetKeyboardText_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .cchText = cchText,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_GetKeyboardText, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_027_HideKeyboard(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_027_HideKeyboard_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_HideKeyboard, &params );
}

void __thiscall winIVROverlay_IVROverlay_027_SetKeyboardTransformAbsolute(struct w_steam_iface *_this, uint32_t eTrackingOrigin, const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform)
{
    struct IVROverlay_IVROverlay_027_SetKeyboardTransformAbsolute_params params =
    {
        .linux_side = _this->u_iface,
        .eTrackingOrigin = eTrackingOrigin,
        .pmatTrackingOriginToKeyboardTransform = pmatTrackingOriginToKeyboardTransform,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetKeyboardTransformAbsolute, &params );
}

void __thiscall winIVROverlay_IVROverlay_027_SetKeyboardPositionForOverlay(struct w_steam_iface *_this, uint64_t ulOverlayHandle, HmdRect2_t avoidRect)
{
    struct IVROverlay_IVROverlay_027_SetKeyboardPositionForOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .ulOverlayHandle = ulOverlayHandle,
        .avoidRect = avoidRect,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_SetKeyboardPositionForOverlay, &params );
}

uint32_t __thiscall winIVROverlay_IVROverlay_027_ShowMessageOverlay(struct w_steam_iface *_this, const char *pchText, const char *pchCaption, const char *pchButton0Text, const char *pchButton1Text, const char *pchButton2Text, const char *pchButton3Text)
{
    struct IVROverlay_IVROverlay_027_ShowMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
        .pchText = pchText,
        .pchCaption = pchCaption,
        .pchButton0Text = pchButton0Text,
        .pchButton1Text = pchButton1Text,
        .pchButton2Text = pchButton2Text,
        .pchButton3Text = pchButton3Text,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_ShowMessageOverlay, &params );
    return params._ret;
}

void __thiscall winIVROverlay_IVROverlay_027_CloseMessageOverlay(struct w_steam_iface *_this)
{
    struct IVROverlay_IVROverlay_027_CloseMessageOverlay_params params =
    {
        .linux_side = _this->u_iface,
    };
    TRACE("%p\n", _this);
    VRCLIENT_CALL( IVROverlay_IVROverlay_027_CloseMessageOverlay, &params );
}

extern vtable_ptr winIVROverlay_IVROverlay_027_vtable;

DEFINE_RTTI_DATA0(winIVROverlay_IVROverlay_027, 0, ".?AVIVROverlay@@")

__ASM_BLOCK_BEGIN(winIVROverlay_IVROverlay_027_vtables)
    __ASM_VTABLE(winIVROverlay_IVROverlay_027,
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_FindOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_CreateOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_DestroyOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayKey)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayName)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayImageData)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayErrorNameFromEnum)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayRenderingPid)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayFlag)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayFlags)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayColor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayAlpha)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTexelAspect)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlaySortOrder)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayWidthInMeters)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayCurvature)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayPreCurvePitch)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayPreCurvePitch)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTextureColorSpace)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTextureBounds)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTransformType)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceRelative)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceComponent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTransformCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTransformProjection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ShowOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_HideOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_IsOverlayVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetTransformForOverlayCoordinates)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_WaitFrameSync)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_PollNextOverlayEvent)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayInputMethod)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayMouseScale)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ComputeOverlayIntersection)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_IsHoverTargetOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayIntersectionMask)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_TriggerLaserMouseHapticVibration)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayCursor)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ClearOverlayCursorPositionOverride)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ClearOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayRaw)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetOverlayFromFile)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTexture)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ReleaseNativeOverlayHandle)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetOverlayTextureSize)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_CreateDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_IsDashboardVisible)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_IsActiveDashboardOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetDashboardOverlaySceneProcess)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ShowDashboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetPrimaryDashboardDevice)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ShowKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ShowKeyboardForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_GetKeyboardText)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_HideKeyboard)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetKeyboardTransformAbsolute)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_SetKeyboardPositionForOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_ShowMessageOverlay)
        VTABLE_ADD_FUNC(winIVROverlay_IVROverlay_027_CloseMessageOverlay)
    );
__ASM_BLOCK_END

struct w_steam_iface *create_winIVROverlay_IVROverlay_027(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    TRACE("-> %p\n", r);
    r->vtable = &winIVROverlay_IVROverlay_027_vtable;
    r->u_iface = u_iface;
    return r;
}

void destroy_winIVROverlay_IVROverlay_027(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    HeapFree(GetProcessHeap(), 0, object);
}

struct w_steam_iface *create_winIVROverlay_IVROverlay_027_FnTable(void *u_iface)
{
    struct w_steam_iface *r = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*r));
    struct thunk *thunks = alloc_thunks(80);
    struct thunk **vtable = HeapAlloc(GetProcessHeap(), 0, 80 * sizeof(*vtable));
    int i;

    TRACE("-> %p, vtable %p, thunks %p\n", r, vtable, thunks);
    init_thunk(&thunks[0], r, winIVROverlay_IVROverlay_027_FindOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[1], r, winIVROverlay_IVROverlay_027_CreateOverlay, 3, FALSE, FALSE);
    init_thunk(&thunks[2], r, winIVROverlay_IVROverlay_027_DestroyOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[3], r, winIVROverlay_IVROverlay_027_GetOverlayKey, 4, FALSE, FALSE);
    init_thunk(&thunks[4], r, winIVROverlay_IVROverlay_027_GetOverlayName, 4, FALSE, FALSE);
    init_thunk(&thunks[5], r, winIVROverlay_IVROverlay_027_SetOverlayName, 2, FALSE, FALSE);
    init_thunk(&thunks[6], r, winIVROverlay_IVROverlay_027_GetOverlayImageData, 5, FALSE, FALSE);
    init_thunk(&thunks[7], r, winIVROverlay_IVROverlay_027_GetOverlayErrorNameFromEnum, 1, FALSE, FALSE);
    init_thunk(&thunks[8], r, winIVROverlay_IVROverlay_027_SetOverlayRenderingPid, 2, FALSE, FALSE);
    init_thunk(&thunks[9], r, winIVROverlay_IVROverlay_027_GetOverlayRenderingPid, 1, FALSE, FALSE);
    init_thunk(&thunks[10], r, winIVROverlay_IVROverlay_027_SetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[11], r, winIVROverlay_IVROverlay_027_GetOverlayFlag, 3, FALSE, FALSE);
    init_thunk(&thunks[12], r, winIVROverlay_IVROverlay_027_GetOverlayFlags, 2, FALSE, FALSE);
    init_thunk(&thunks[13], r, winIVROverlay_IVROverlay_027_SetOverlayColor, 4, TRUE, TRUE);
    init_thunk(&thunks[14], r, winIVROverlay_IVROverlay_027_GetOverlayColor, 4, FALSE, FALSE);
    init_thunk(&thunks[15], r, winIVROverlay_IVROverlay_027_SetOverlayAlpha, 2, TRUE, FALSE);
    init_thunk(&thunks[16], r, winIVROverlay_IVROverlay_027_GetOverlayAlpha, 2, FALSE, FALSE);
    init_thunk(&thunks[17], r, winIVROverlay_IVROverlay_027_SetOverlayTexelAspect, 2, TRUE, FALSE);
    init_thunk(&thunks[18], r, winIVROverlay_IVROverlay_027_GetOverlayTexelAspect, 2, FALSE, FALSE);
    init_thunk(&thunks[19], r, winIVROverlay_IVROverlay_027_SetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[20], r, winIVROverlay_IVROverlay_027_GetOverlaySortOrder, 2, FALSE, FALSE);
    init_thunk(&thunks[21], r, winIVROverlay_IVROverlay_027_SetOverlayWidthInMeters, 2, TRUE, FALSE);
    init_thunk(&thunks[22], r, winIVROverlay_IVROverlay_027_GetOverlayWidthInMeters, 2, FALSE, FALSE);
    init_thunk(&thunks[23], r, winIVROverlay_IVROverlay_027_SetOverlayCurvature, 2, TRUE, FALSE);
    init_thunk(&thunks[24], r, winIVROverlay_IVROverlay_027_GetOverlayCurvature, 2, FALSE, FALSE);
    init_thunk(&thunks[25], r, winIVROverlay_IVROverlay_027_SetOverlayPreCurvePitch, 2, TRUE, FALSE);
    init_thunk(&thunks[26], r, winIVROverlay_IVROverlay_027_GetOverlayPreCurvePitch, 2, FALSE, FALSE);
    init_thunk(&thunks[27], r, winIVROverlay_IVROverlay_027_SetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[28], r, winIVROverlay_IVROverlay_027_GetOverlayTextureColorSpace, 2, FALSE, FALSE);
    init_thunk(&thunks[29], r, winIVROverlay_IVROverlay_027_SetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[30], r, winIVROverlay_IVROverlay_027_GetOverlayTextureBounds, 2, FALSE, FALSE);
    init_thunk(&thunks[31], r, winIVROverlay_IVROverlay_027_GetOverlayTransformType, 2, FALSE, FALSE);
    init_thunk(&thunks[32], r, winIVROverlay_IVROverlay_027_SetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[33], r, winIVROverlay_IVROverlay_027_GetOverlayTransformAbsolute, 3, FALSE, FALSE);
    init_thunk(&thunks[34], r, winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[35], r, winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceRelative, 3, FALSE, FALSE);
    init_thunk(&thunks[36], r, winIVROverlay_IVROverlay_027_SetOverlayTransformTrackedDeviceComponent, 3, FALSE, FALSE);
    init_thunk(&thunks[37], r, winIVROverlay_IVROverlay_027_GetOverlayTransformTrackedDeviceComponent, 4, FALSE, FALSE);
    init_thunk(&thunks[38], r, winIVROverlay_IVROverlay_027_SetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[39], r, winIVROverlay_IVROverlay_027_GetOverlayTransformCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[40], r, winIVROverlay_IVROverlay_027_SetOverlayTransformProjection, 5, FALSE, FALSE);
    init_thunk(&thunks[41], r, winIVROverlay_IVROverlay_027_ShowOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[42], r, winIVROverlay_IVROverlay_027_HideOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[43], r, winIVROverlay_IVROverlay_027_IsOverlayVisible, 1, FALSE, FALSE);
    init_thunk(&thunks[44], r, winIVROverlay_IVROverlay_027_GetTransformForOverlayCoordinates, 4, FALSE, FALSE);
    init_thunk(&thunks[45], r, winIVROverlay_IVROverlay_027_WaitFrameSync, 1, FALSE, FALSE);
    init_thunk(&thunks[46], r, winIVROverlay_IVROverlay_027_PollNextOverlayEvent, 3, FALSE, FALSE);
    init_thunk(&thunks[47], r, winIVROverlay_IVROverlay_027_GetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[48], r, winIVROverlay_IVROverlay_027_SetOverlayInputMethod, 2, FALSE, FALSE);
    init_thunk(&thunks[49], r, winIVROverlay_IVROverlay_027_GetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[50], r, winIVROverlay_IVROverlay_027_SetOverlayMouseScale, 2, FALSE, FALSE);
    init_thunk(&thunks[51], r, winIVROverlay_IVROverlay_027_ComputeOverlayIntersection, 3, FALSE, FALSE);
    init_thunk(&thunks[52], r, winIVROverlay_IVROverlay_027_IsHoverTargetOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[53], r, winIVROverlay_IVROverlay_027_SetOverlayIntersectionMask, 4, FALSE, FALSE);
    init_thunk(&thunks[54], r, winIVROverlay_IVROverlay_027_TriggerLaserMouseHapticVibration, 4, TRUE, TRUE);
    init_thunk(&thunks[55], r, winIVROverlay_IVROverlay_027_SetOverlayCursor, 2, FALSE, FALSE);
    init_thunk(&thunks[56], r, winIVROverlay_IVROverlay_027_SetOverlayCursorPositionOverride, 2, FALSE, FALSE);
    init_thunk(&thunks[57], r, winIVROverlay_IVROverlay_027_ClearOverlayCursorPositionOverride, 1, FALSE, FALSE);
    init_thunk(&thunks[58], r, winIVROverlay_IVROverlay_027_SetOverlayTexture, 2, FALSE, FALSE);
    init_thunk(&thunks[59], r, winIVROverlay_IVROverlay_027_ClearOverlayTexture, 1, FALSE, FALSE);
    init_thunk(&thunks[60], r, winIVROverlay_IVROverlay_027_SetOverlayRaw, 5, FALSE, FALSE);
    init_thunk(&thunks[61], r, winIVROverlay_IVROverlay_027_SetOverlayFromFile, 2, FALSE, FALSE);
    init_thunk(&thunks[62], r, winIVROverlay_IVROverlay_027_GetOverlayTexture, 9, FALSE, FALSE);
    init_thunk(&thunks[63], r, winIVROverlay_IVROverlay_027_ReleaseNativeOverlayHandle, 2, FALSE, FALSE);
    init_thunk(&thunks[64], r, winIVROverlay_IVROverlay_027_GetOverlayTextureSize, 3, FALSE, FALSE);
    init_thunk(&thunks[65], r, winIVROverlay_IVROverlay_027_CreateDashboardOverlay, 4, FALSE, FALSE);
    init_thunk(&thunks[66], r, winIVROverlay_IVROverlay_027_IsDashboardVisible, 0, FALSE, FALSE);
    init_thunk(&thunks[67], r, winIVROverlay_IVROverlay_027_IsActiveDashboardOverlay, 1, FALSE, FALSE);
    init_thunk(&thunks[68], r, winIVROverlay_IVROverlay_027_SetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[69], r, winIVROverlay_IVROverlay_027_GetDashboardOverlaySceneProcess, 2, FALSE, FALSE);
    init_thunk(&thunks[70], r, winIVROverlay_IVROverlay_027_ShowDashboard, 1, FALSE, FALSE);
    init_thunk(&thunks[71], r, winIVROverlay_IVROverlay_027_GetPrimaryDashboardDevice, 0, FALSE, FALSE);
    init_thunk(&thunks[72], r, winIVROverlay_IVROverlay_027_ShowKeyboard, 7, FALSE, FALSE);
    init_thunk(&thunks[73], r, winIVROverlay_IVROverlay_027_ShowKeyboardForOverlay, 8, FALSE, FALSE);
    init_thunk(&thunks[74], r, winIVROverlay_IVROverlay_027_GetKeyboardText, 2, FALSE, FALSE);
    init_thunk(&thunks[75], r, winIVROverlay_IVROverlay_027_HideKeyboard, 0, FALSE, FALSE);
    init_thunk(&thunks[76], r, winIVROverlay_IVROverlay_027_SetKeyboardTransformAbsolute, 2, FALSE, FALSE);
    init_thunk(&thunks[77], r, winIVROverlay_IVROverlay_027_SetKeyboardPositionForOverlay, 2, FALSE, FALSE);
    init_thunk(&thunks[78], r, winIVROverlay_IVROverlay_027_ShowMessageOverlay, 6, FALSE, FALSE);
    init_thunk(&thunks[79], r, winIVROverlay_IVROverlay_027_CloseMessageOverlay, 0, FALSE, FALSE);
    for (i = 0; i < 80; i++)
        vtable[i] = &thunks[i];
    r->u_iface = u_iface;
    r->vtable = (void *)vtable;
    return r;
}

void destroy_winIVROverlay_IVROverlay_027_FnTable(struct w_steam_iface *object)
{
    TRACE("%p\n", object);
    VirtualFree(object->vtable[0], 0, MEM_RELEASE);
    HeapFree(GetProcessHeap(), 0, object->vtable);
    HeapFree(GetProcessHeap(), 0, object);
}

void init_winIVROverlay_rtti( char *base )
{
#ifdef __x86_64__
    init_winIVROverlay_IVROverlay_001_rtti( base );
    init_winIVROverlay_IVROverlay_002_rtti( base );
    init_winIVROverlay_IVROverlay_003_rtti( base );
    init_winIVROverlay_IVROverlay_004_rtti( base );
    init_winIVROverlay_IVROverlay_005_rtti( base );
    init_winIVROverlay_IVROverlay_007_rtti( base );
    init_winIVROverlay_IVROverlay_008_rtti( base );
    init_winIVROverlay_IVROverlay_010_rtti( base );
    init_winIVROverlay_IVROverlay_011_rtti( base );
    init_winIVROverlay_IVROverlay_012_rtti( base );
    init_winIVROverlay_IVROverlay_013_rtti( base );
    init_winIVROverlay_IVROverlay_014_rtti( base );
    init_winIVROverlay_IVROverlay_016_rtti( base );
    init_winIVROverlay_IVROverlay_017_rtti( base );
    init_winIVROverlay_IVROverlay_018_rtti( base );
    init_winIVROverlay_IVROverlay_019_rtti( base );
    init_winIVROverlay_IVROverlay_020_rtti( base );
    init_winIVROverlay_IVROverlay_021_rtti( base );
    init_winIVROverlay_IVROverlay_022_rtti( base );
    init_winIVROverlay_IVROverlay_024_rtti( base );
    init_winIVROverlay_IVROverlay_025_rtti( base );
    init_winIVROverlay_IVROverlay_026_rtti( base );
    init_winIVROverlay_IVROverlay_027_rtti( base );
#endif /* __x86_64__ */
}
