+// byte swap the header
+ prog->progs_version = LittleLong(dprograms->version);
+ prog->progs_crc = LittleLong(dprograms->crc);
+ if (prog->progs_version != PROG_VERSION)
+ PRVM_ERROR ("%s: %s has wrong version number (%i should be %i)", PRVM_NAME, filename, prog->progs_version, PROG_VERSION);
+ if (prog->progs_crc != prog->headercrc && prog->progs_crc != prog->headercrc2)
+ PRVM_ERROR ("%s: %s system vars have been modified (CRC of progs.dat systemvars %i != engine %i), progdefs.h is out of date", PRVM_NAME, filename, prog->progs_crc, prog->headercrc);
+ instatements = (dstatement_t *)((unsigned char *)dprograms + LittleLong(dprograms->ofs_statements));
+ prog->progs_numstatements = LittleLong(dprograms->numstatements);
+ inglobaldefs = (ddef_t *)((unsigned char *)dprograms + LittleLong(dprograms->ofs_globaldefs));
+ prog->progs_numglobaldefs = LittleLong(dprograms->numglobaldefs);
+ infielddefs = (ddef_t *)((unsigned char *)dprograms + LittleLong(dprograms->ofs_fielddefs));
+ prog->progs_numfielddefs = LittleLong(dprograms->numfielddefs);
+ infunctions = (dfunction_t *)((unsigned char *)dprograms + LittleLong(dprograms->ofs_functions));
+ prog->progs_numfunctions = LittleLong(dprograms->numfunctions);
+ instrings = (char *)((unsigned char *)dprograms + LittleLong(dprograms->ofs_strings));
+ prog->progs_numstrings = LittleLong(dprograms->numstrings);
+ inglobals = (float *)((unsigned char *)dprograms + LittleLong(dprograms->ofs_globals));
+ prog->progs_numglobals = LittleLong(dprograms->numglobals);
+ prog->progs_entityfields = LittleLong(dprograms->entityfields);
+
+ prog->numstatements = prog->progs_numstatements;
+ prog->numglobaldefs = prog->progs_numglobaldefs;
+ prog->numfielddefs = prog->progs_numfielddefs;
+ prog->numfunctions = prog->progs_numfunctions;
+ prog->numstrings = prog->progs_numstrings;
+ prog->numglobals = prog->progs_numglobals;
+ prog->entityfields = prog->progs_entityfields;
+
+ if (LittleLong(dprograms->ofs_strings) + prog->progs_numstrings >= (int)filesize)