at address 004E38B0 there is an array of structures (I termed them VolSearchEntry structures), that would look like this:
typedef struct _VolSearchEntry {
char *pFileName;
int unknown1;
int flags;
int unknown2;
} VolSearchEntry;
pFileName points to the ascii string holding the vol filename.
unknown1 and unknown2 are always set to 0, the flags (if that's what it really is) always is set to 1.
The code which iterates thru this list is pretty straightforward, it only took a few minutes to figure it out. (Look in ResManager::Init() right past the CD check stuff, where it references that address up above).
The list in the EXE contains 6 elements (the first 5 being references to the VOL's, the last one is a termination of some sort. The address, and unknowns 1 and 2 are 0 but the flags is still 1).
This is somewhat interesting/odd, as well. This value occurs immediately after the VOL search list.
.text:0047111D cmp edi, offset dword_4E3910
This is a snippet from IDA if you didn't already notice. the dword_4E3910 represents address 004E3910 (if you didn't notice that)
Looking at the data section at this address, I found:
.data:004E3910 dword_4E3910 dd 193948Ah ; DATA XREF: ResManager::Init(void)+1ADo
.data:004E3910 ; ResManager::VerifyCD(void)+85r