<s> from struct import pack , unpack <EOL> vnckey = [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:7> ] <EOL> bytebit = [ <NUM_LIT:0> <NUM_LIT:1> , <NUM_LIT:0> <NUM_LIT:2> , <NUM_LIT:0> <NUM_LIT:4> , <NUM_LIT:0> <NUM_LIT:10> , <NUM_LIT:0> <NUM_LIT:20> , <NUM_LIT:0> <NUM_LIT> , <NUM_LIT:0> <NUM_LIT:100> , <NUM_LIT:0> <NUM_LIT:200> ] <EOL> def decrypt_passwd ( data ) : <EOL> dk = deskey ( pack ( '<STR_LIT>' , * vnckey ) , True ) <EOL> return desfunc ( data , dk ) <EOL> def generate_response ( passwd , challange ) : <EOL> ek = deskey ( ( passwd + '<STR_LIT:\x00>' * <NUM_LIT:8> ) [ : <NUM_LIT:8> ] , False ) <EOL> return desfunc ( challange [ : <NUM_LIT:8> ] , ek ) + desfunc ( challange [ <NUM_LIT:8> : ] , ek ) <EOL> bigbyte = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> pc1 = [ <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT:8> , <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <EOL> <NUM_LIT:9> , <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <EOL> <NUM_LIT> , <NUM_LIT:5> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT:12> , <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:11> , <NUM_LIT:3> <EOL> ] <EOL> totrot = [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:6> , <NUM_LIT:8> , <NUM_LIT:10> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] <EOL> pc2 = [ <EOL> <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:5> , <NUM_LIT:20> , <NUM_LIT:9> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT:11> , <NUM_LIT:3> , <NUM_LIT> , <NUM_LIT:7> , <NUM_LIT:15> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:12> , <NUM_LIT:1> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> <EOL> ] <EOL> def deskey ( key , decrypt ) : <EOL> key = unpack ( '<STR_LIT>' , key ) <EOL> pc1m = [ <NUM_LIT:0> ] * <NUM_LIT> <EOL> pcr = [ <NUM_LIT:0> ] * <NUM_LIT> <EOL> kn = [ <NUM_LIT:0> L ] * <NUM_LIT:32> <EOL> for j in range ( <NUM_LIT> ) : <EOL> l = pc1 [ j ] <EOL> m = l & <NUM_LIT:0> <NUM_LIT:7> <EOL> if key [ l >> <NUM_LIT:3> ] & bytebit [ m ] : <EOL> pc1m [ j ] = <NUM_LIT:1> <EOL> else : <EOL> pc1m [ j ] = <NUM_LIT:0> <EOL> for i in range ( <NUM_LIT:16> ) : <EOL> if decrypt : <EOL> m = ( <NUM_LIT:15> - i ) << <NUM_LIT:1> <EOL> else : <EOL> m = i << <NUM_LIT:1> <EOL> n = m + <NUM_LIT:1> <EOL> kn [ m ] = kn [ n ] = <NUM_LIT:0> L <EOL> for j in range ( <NUM_LIT> ) : <EOL> l = j + totrot [ i ] <EOL> if l < <NUM_LIT> : <EOL> pcr [ j ] = pc1m [ l ] <EOL> else : <EOL> pcr [ j ] = pc1m [ l - <NUM_LIT> ] <EOL> for j in range ( <NUM_LIT> , <NUM_LIT> ) : <EOL> l = j + totrot [ i ] <EOL> if l < <NUM_LIT> : <EOL> pcr [ j ] = pc1m [ l ] <EOL> else : <EOL> pcr [ j ] = pc1m [ l - <NUM_LIT> ] <EOL> for j in range ( <NUM_LIT> ) : <EOL> if pcr [ pc2 [ j ] ] : <EOL> kn [ m ] |= bigbyte [ j ] <EOL> if pcr [ pc2 [ j + <NUM_LIT> ] ] : <EOL> kn [ n ] |= bigbyte [ j ] <EOL> return cookey ( kn ) <EOL> def cookey ( raw ) : <EOL> key = [ ] <EOL> for i in range ( <NUM_LIT:0> , <NUM_LIT:32> , <NUM_LIT:2> ) : <EOL> ( raw0 , raw1 ) = ( raw [ i ] , raw [ i + <NUM_LIT:1> ] ) <EOL> k = ( raw0 & <NUM_LIT> L ) << <NUM_LIT:6> <EOL> k |= ( raw0 & <NUM_LIT> L ) << <NUM_LIT:10> <EOL> k |= ( raw1 & <NUM_LIT> L ) >> <NUM_LIT:10> <EOL> k |= ( raw1 & <NUM_LIT> L ) >> <NUM_LIT:6> <EOL> key . append ( k ) <EOL> k = ( raw0 & <NUM_LIT> L ) << <NUM_LIT:12> <EOL> k |= ( raw0 & <NUM_LIT> L ) << <NUM_LIT:16> <EOL> k |= ( raw1 & <NUM_LIT> L ) >> <NUM_LIT:4> <EOL> k |= ( raw1 & <NUM_LIT> L ) <EOL> key . append ( k ) <EOL> return key <EOL> SP1 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP2 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP3 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP4 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP5 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP6 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP7 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> SP8 = [ <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <EOL> <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L , <NUM_LIT> L <EOL> ] <EOL> def desfunc ( block , keys ) : <EOL> ( leftt , right ) = unpack ( '<STR_LIT>' , block ) <EOL> work = ( ( leftt >> <NUM_LIT:4> ) ^ right ) & <NUM_LIT> L <EOL> right ^= work <EOL> leftt ^= ( work << <NUM_LIT:4> ) <EOL> work = ( ( leftt >> <NUM_LIT:16> ) ^ right ) & <NUM_LIT> L <EOL> right ^= work <EOL> leftt ^= ( work << <NUM_LIT:16> ) <EOL> work = ( ( right >> <NUM_LIT:2> ) ^ leftt ) & <NUM_LIT> L <EOL> leftt ^= work <EOL> right ^= ( work << <NUM_LIT:2> ) <EOL> work = ( ( right >> <NUM_LIT:8> ) ^ leftt ) & <NUM_LIT> L <EOL> leftt ^= work <EOL> right ^= ( work << <NUM_LIT:8> ) <EOL> right = ( ( right << <NUM_LIT:1> ) | ( ( right >> <NUM_LIT> ) & <NUM_LIT:1> L ) ) & <NUM_LIT> L <EOL> work = ( leftt ^ right ) & <NUM_LIT> L <EOL> leftt ^= work <EOL> right ^= work <EOL> leftt = ( ( leftt << <NUM_LIT:1> ) | ( ( leftt >> <NUM_LIT> ) & <NUM_LIT:1> L ) ) & <NUM_LIT> L <EOL> for i in range ( <NUM_LIT:0> , <NUM_LIT:32> , <NUM_LIT:4> ) : <EOL> work = ( right << <NUM_LIT> ) | ( right >> <NUM_LIT:4> ) <EOL> work ^= keys [ i ] <EOL> fval = SP7 [ work & <NUM_LIT> L ] <EOL> fval |= SP5 [ ( work >> <NUM_LIT:8> ) & <NUM_LIT> L ] <EOL> fval |= SP3 [ ( work >> <NUM_LIT:16> ) & <NUM_LIT> L ] <EOL> fval |= SP1 [ ( work >> <NUM_LIT> ) & <NUM_LIT> L ] <EOL> work = right ^ keys [ i + <NUM_LIT:1> ] <EOL> fval |= SP8 [ work & <NUM_LIT> L ] <EOL> fval |= SP6 [ ( work >> <NUM_LIT:8> ) & <NUM_LIT> L ] <EOL> fval |= SP4 [ ( work >> <NUM_LIT:16> ) & <NUM_LIT> L ] <EOL> fval |= SP2 [ ( work >> <NUM_LIT> ) & <NUM_LIT> L ] <EOL> leftt ^= fval <EOL> work = ( leftt << <NUM_LIT> ) | ( leftt >> <NUM_LIT:4> ) <EOL> work ^= keys [ i + <NUM_LIT:2> ] <EOL> fval = SP7 [ work & <NUM_LIT> L ] <EOL> fval |= SP5 [ ( work >> <NUM_LIT:8> ) & <NUM_LIT> L ] <EOL> fval |= SP3 [ ( work >> <NUM_LIT:16> ) & <NUM_LIT> L ] <EOL> fval |= SP1 [ ( work >> <NUM_LIT> ) & <NUM_LIT> L ] <EOL> work = leftt ^ keys [ i + <NUM_LIT:3> ] <EOL> fval |= SP8 [ work & <NUM_LIT> L ] <EOL> fval |= SP6 [ ( work >> <NUM_LIT:8> ) & <NUM_LIT> L ] <EOL> fval |= SP4 [ ( work >> <NUM_LIT:16> ) & <NUM_LIT> L ] <EOL> fval |= SP2 [ ( work >> <NUM_LIT> ) & <NUM_LIT> L ] <EOL> right ^= fval <EOL> right = ( right << <NUM_LIT> ) | ( right >> <NUM_LIT:1> ) <EOL> work = ( leftt ^ right ) & <NUM_LIT> L <EOL> leftt ^= work <EOL> right ^= work <EOL> leftt = ( leftt << <NUM_LIT> ) | ( leftt >> <NUM_LIT:1> ) <EOL> work = ( ( leftt >> <NUM_LIT:8> ) ^ right ) & <NUM_LIT> L <EOL> right ^= work <EOL> leftt ^= ( work << <NUM_LIT:8> ) <EOL> work = ( ( leftt >> <NUM_LIT:2> ) ^ right ) & <NUM_LIT> L <EOL> right ^= work <EOL> leftt ^= ( work << <NUM_LIT:2> ) <EOL> work = ( ( right >> <NUM_LIT:16> ) ^ leftt ) & <NUM_LIT> L <EOL> leftt ^= work <EOL> right ^= ( work << <NUM_LIT:16> ) <EOL> work = ( ( right >> <NUM_LIT:4> ) ^ leftt ) & <NUM_LIT> L <EOL> leftt ^= work <EOL> right ^= ( work << <NUM_LIT:4> ) <EOL> leftt &= <NUM_LIT> L <EOL> right &= <NUM_LIT> L <EOL> return pack ( '<STR_LIT>' , right , leftt ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> key = '<STR_LIT>' . decode ( '<STR_LIT>' ) <EOL> plain = '<STR_LIT>' . decode ( '<STR_LIT>' ) <EOL> cipher = '<STR_LIT>' . decode ( '<STR_LIT>' ) <EOL> ek = deskey ( key , False ) <EOL> dk = deskey ( key , True ) <EOL> assert desfunc ( plain , ek ) == cipher <EOL> assert desfunc ( desfunc ( plain , ek ) , dk ) == plain <EOL> assert desfunc ( desfunc ( plain , dk ) , ek ) == plain <EOL> print '<STR_LIT>' </s>
