https://bugs.winehq.org/show_bug.cgi?id=44375
--- Comment #23 from Konstantin Kharlamov hi-angel@yandex.ru --- So, about that 2.6G VSS. While investigating I contacted Wine developers, and they explained what's going on.
It turns out, by default Windows 32-bit executables aren't able to adderss more than 2G of memory. The ones that do must have LAA bit set in their PE header.
The 2G VSS that is seen by default is simply a reservation to make sure that if an app tries to allocate more than 2G of memory it'll get an out-of-memory signal.
So, for LAA-less games people could simply set the LAA bit on the binary, thus unlocking access to full 4G of memory. You can do that with `radare2` package, for example. Although, it is worth mentioning, that I read a horror story, where many Windows developers have treated pointers as signed entities, which is the reason LAA isn't set by default. Which would mean it may misbehave or crash upon accessing high 2G of memory. Idk if that's true, but you never know… So, make sure to have backup.
With all that said, there's still an oddity left: for my Mass Effect binary, even upon setting the LAA bit, WINE still reserves 2G of VSS. Unless I misunderstand something, this probably should not happen. Gotta look into it.