Jacek Caban (@jacek) commented about dlls/vbscript/interp.c:
static inline BOOL is_numeric_vt(VARTYPE vt) { return vt == VT_I2 || vt == VT_I4 || vt == VT_R4 || vt == VT_R8 - || vt == VT_CY || vt == VT_DATE || vt == VT_UI1; + || vt == VT_CY || vt == VT_DATE || vt == VT_UI1 || vt == VT_DECIMAL + || vt == VT_I1 || vt == VT_I8 || vt == VT_UI2 || vt == VT_UI4 + || vt == VT_UI8 || vt == VT_INT || vt == VT_UINT; Applying the same logic to VT_I8 and VT_UI8 would require adjustments. Converting them to double would result in a loss of precision.
`VarCmp` seems to already handle that, in combination with VT_RESERVED. Maybe could just set that bit in `var_cmp` and let it do the work? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10775#note_138234