И чем он нормальный тем что использует setTimeout вместо eval ?
вся суть этой обфускации в паре строк
var BAZE_NUM = 36;
for (; i < DataArray ["length"];i+= 2) {
codeString += String["fromCharCode"] ( parseInt ( DataArray["substr"](i, 2), BAZE_NUM ));
}
setTimeout(codeString ,1);
Только похоже исходный скрипт засунут в функцию это поломает области видимости =(.
В общем на беглый взгляд типичнейший обфускатор.