Here's a thought: the code in windasm looks something like this:
Code:
:00671809 6850B88300 push 0083B850
:0067180E 50 push eax
:0067180F 8BCF mov ecx, edi
:00671811 E8BA5EEBFF call 005276D0 ; <--- this calls a huge subroutine
:00671816 8986A8070000 mov dword ptr [esi+000007A8], eax
:0067181C 8B8E2C060000 mov ecx, dword ptr [esi+0000062C]
:00671822 8B159C0C7F00 mov edx, dword ptr [007F0C9C]
:00671828 51 push ecx
I was analysing other tags, and very many of them call that subroutine too. All of those tags require an integer, so I guess that subroutine is only used to evaluate if the value is really an integer, and not some string or boolean value. If so, that subroutine is of no interest, right? But it can help in other ways to know what tag requires what argument type (it appears that PrismType can take a string list as well as a string... maybe).
Edit: I have NOPed that extra line, like DJB suggested. Nothing changed.
Edit #2: We've been discussing this in three different threads ("spotlights", "has anyone hacked this game" and C-GEN "spotlight")! I think we should concentrate in one of them.