Well, I told the game to just ignore the error and it crashed for reals.
00450379 | 83F9 03 | CMP ECX, 3 |
0045037C | 75 1F | JNZ 0045039D | Initial error is detected here
0045037E | 8B95 B0FEFFFF | MOV EDX, DWORD PTR [EBP-150] |
00450384 | 83EA 05 | SUB EDX, 5 |
00450387 | 52 | PUSH EDX |
00450388 | 8B45 F0 | MOV EAX, DWORD PTR [EBP-10] |
0045038B | 50 | PUSH EAX |
0045038C | 8B8D B8FEFFFF | MOV ECX, DWORD PTR [EBP-148] |
00450392 | 51 | PUSH ECX |
00450393 | E8 48CC0400 | CALL 0049CFE0 |
00450398 | 83C4 0C | ADD ESP, C |
0045039B | EB 6A | JMP 00450407 |
0045039D | 8B55 F0 | MOV EDX, DWORD PTR [EBP-10] |
004503A0 | 33C0 | XOR EAX, EAX |
004503A2 | 8A42 FF | MOV AL, BYTE PTR [EDX-1] |
004503A5 | 83F8 04 | CMP EAX, 4 | If this passes, the game will not crash
004503A8 | EB 1A | JMP 004503C4 |
004503AA | 8B4D 08 | MOV ECX, DWORD PTR [EBP+8] |
004503AD | 51 | PUSH ECX |
004503AE | 6A 3F | PUSH 3F |
004503B0 | 68 78034C00 | PUSH 4C0378 |
004503B5 | E8 68240300 | CALL 00482822 | This calls the routine to display the message box
004503BA | 83C4 0C | ADD ESP, C |
004503BD | 6A 00 | PUSH 0 |
004503BF | E8 8FCF0400 | CALL 0049D353 | This presumably has an exit() somewhere.
004503C4 | 8B95 A8FEFFFF | MOV EDX, DWORD PTR [EBP-158] |
I'm still experimenting seeing if I can get it to pass anyway, since as far as I can tell, the texture is valid by the time it gets here.