bool Filter::isValidFilter(int filter_id, const int *allowed_filters) { if (!isValidFilter(filter_id)) return false; if (filter_id == 0) return true; if (allowed_filters == NULL) return false; while (*allowed_filters != FT_END) if (*allowed_filters++ == filter_id) return true; return false; }
void PackCom::addFilter16(int filter_id) { assert(filter_id > 0); assert(isValidFilter(filter_id)); if (filter_id % 3 == 0) addLoader("CALLTR16", filter_id < 4 ? "CT16SUB0" : "", filter_id < 4 ? "" : (opt->cpu == opt->CPU_8086 ? "CT16I086" : "CT16I286,CT16SUB0"), "CALLTRI2", getFormat() == UPX_F_DOS_COM ? "CORETURN" : "", NULL ); else addLoader(filter_id%3 == 1 ? "CT16E800" : "CT16E900", "CALLTRI5", getFormat() == UPX_F_DOS_COM ? "CT16JEND" : "CT16JUL2", filter_id < 4 ? "CT16SUB1" : "", filter_id < 4 ? "" : (opt->cpu == opt->CPU_8086 ? "CT16I087" : "CT16I287,CT16SUB1"), "CALLTRI6", NULL ); }