080787e0:Call kernel32.LOCAL_Alloc(000001ff,00000002,00000068) ret=409cfbf8 may be the offender in this case (this is the line right before err:local)
Hmmm. Maybe. I think here though this call is what is wrong:
080787e0:Call kernel32.CreateFileA(40758c28 "C:\Program Files\Half-Life\valve\gfx\shell\cb_disabled.bmp",80000000,00000003,40758b80,00000003,00000080,00000000) ret=0048e4ee 080787e0:Ret kernel32.CreateFileA() retval=ffffffff ret=0048e4ee
The very first ones you pasted in fact. MSDN says that CreateFile should return a handle to a file, but if it goes wrong it'll return INVALID_HANDLE_VALUE. The calls to GetLastError immediately afterwards strongly suggest that's what's happening, and in fact the retval section is what you're interested in here: ffffffffff is -1 in hex (using twos compliment, thanks francois!).
So basically it looks like it can't open cb_disabled.bmp, and that leads to a cascade failure. Remember that often apps will try to recover from an error but fail so you need to look quite a bit up the trace to discover what's going on.
080787e0:Call kernel32.GetLastError() ret=0048e4fa 080787e0:Ret kernel32.GetLastError() retval=00000002 ret=0048e4fa
And in fact the app detects it went wrong, and calls GetLastError. The part you are interested in here is retval, which is 2. MSDN tells us that is ERROR_FILE_NOT_FOUND, so it didn't find the file. Have a poke around, make sure it installed correctly would be what I'd do next.
thanks -mike