Compare two strings, and print lines containing mismatches

pls help me on this... and im really sorry because i really don't know where to start here...

FILE1

ABC DEF 10 2
DEF GHI 11 3
GHI JKL 12 5
JKL MNO 13 7
MNO PQR 14 5

requirements:

  1. The third string should only be 10 or 12
  2. The fourth string should only be 2 or 3
  3. Prinnt lines that contains mismatches.

RESULTING FILE:
DEF GHI 11 3
GHI JKL 12 5
JKL MNO 13 7
MNO PQR 14 5

can anyone pls help me! thanks in advance!

 
while read record
do
a=`echo $record | cut -d " " -f3`
b=`echo $record | cut -d " " -f4`
if test  $a -eq 10 -o  $a -eq 12
then
if test $b -ne 2 -a $b -ne 3
then
echo $record >>outfile
fi
else
echo $record >>outfile
fi
done<infile