function huh(pw) {
var b = Array(8, 0, 28, 20, 20, 12, 0, 8);
var c = Array(0x71B131DD, 0xD965BB95, 0x99351B35, 0x313BB71B);
for(var i=0; i<pw.length; i+=4) {
var tmp = 0;
for(var j=0; j<b.length; j++)
tmp |= (pw.charCodeAt(i+j%4) & ((j>3) ? 0xF0 : 0xF)) << b[j];
for(var j=31; j+1; c[i/4]>>=1)
tmp ^= (c[i/4] & 1) << j--;
if(++tmp) break;
}
log(tmp)
return(i==16);
}
ZnVuY3Rpb24gaHVoKHB3KSB7CiAgICB2YXIgYiA9IEFycmF5KDgsIDAsIDI4LCAyMCwgMjAsIDEyLCAwLCA4KTsKICAgIHZhciBjID0gQXJyYXkoMHg3MUIxMzFERCwgMHhEOTY1QkI5NSwgMHg5OTM1MUIzNSwgMHgzMTNCQjcxQik7CiAgICBmb3IodmFyIGk9MDsgaTxwdy5sZW5ndGg7IGkrPTQpIHsKICAgICAgdmFyIHRtcCA9IDA7CiAgICAgIGZvcih2YXIgaj0wOyBqPGIubGVuZ3RoOyBqKyspCiAgICAgICAgdG1wIHw9IChwdy5jaGFyQ29kZUF0KGkraiU0KSAmICgoaj4zKSA/IDB4RjAgOiAweEYpKSA8PCBiW2pdOwogICAgICBmb3IodmFyIGo9MzE7IGorMTsgY1tpLzRdPj49MSkKICAgICAgICB0bXAgXj0gKGNbaS80XSAmIDEpIDw8IGotLTsKICAgICAgaWYoKyt0bXApIGJyZWFrOwogICAgfQogICAgbG9nKHRtcCkKICAgIHJldHVybihpPT0xNik7Cn0=