AddRoomDataActual's nDepth is an int: compared with the room status and the slot index by JL/JLE
Ghidra v1841 · 4ca0e98
nDepth (ESI) is the zero-extended init depth, and every compare on it is signed: 0061b4ad MOVZX ECX,byte ptr [EDI+0x44] (fRoomStatus) / 0061b4b1 MOVZX ESI,BL / 0061b4b4 CMP ECX,ESI / 0061b4b6 JL; 0061b4ba TEST ESI,ESI / 0061b4bc JL; the slot scan 0061b4cd CMP EAX,ESI / 0061b4cf JLE; then 0061b4d1 MOV EDX,[ESI*4+0x744384] indexes gaRoomExActivationHandlers. Ghidra leaves it undefined4 and resolves it to uint, so the generator declares uint32_t and the status compare comes out unsigned (JA). Recompiled with VC8 SP1 (the 1.14d compiler) on main f26206a with the local as int: that compare becomes signed like the original's, and no function in the TU changes status.
Changes 1, applied together
Retype variable
win 0x0061b490 ESItypeundefined4→int