package core
{
public class Crypto extends Object
{
private static var mykey:Array = new Array(255);
private static var sbox:Array = new Array(255);
public function Crypto()
{
return;
}// end function
public static function perynate(param1:String, param2:String) : String
{
var _loc_3:* = hexToChars(param1);
var _loc_4:* = strToChars(param2);
var _loc_5:* = calculate(_loc_3, _loc_4);
return charsToStr(_loc_5);
}// end function
private static function charsToHex(param1:Array) : String
{
var _loc_2:String = "";
var _loc_3:Array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
var _loc_4:* = param1.length;
var _loc_5:int = 0;
while (_loc_5 < _loc_4)
{
_loc_2 = _loc_2 + (_loc_3[param1[_loc_5] >> 4] + _loc_3[param1[_loc_5] & 15]);
_loc_5++;
}
return _loc_2;
}// end function
public static function parsePyern(param1:String) : String
{
return param1.substring(0, param1.indexOf("*"

;
}// end function
private static function hexToChars(param1:String) : Array
{
var _loc_2:Array = [];
var _loc_3:* = param1.length;
var _loc_4:* = param1.substr(0, 2) == "0x" ? (2) : (0);
while (_loc_4 < _loc_3)
{
_loc_2.push(parseInt(param1.substr(_loc_4, 2), 16));
_loc_4 = _loc_4 + 2;
}
return _loc_2;
}// end function
public static function vPyern(param1:String, param2:String) : Boolean
{
return perynate(parsePyern(param1), perynate("08b6e3d994021a5a1d9b4188bfe50e", "45b64da4f4e21c1c77d7eb5b903d9a"

== param2;
}// end function
public static function pelynate(param1:String) : String
{
return param1.substring((param1.indexOf("*"

+ 1), param1.length);
}// end function
public static function perynote(param1:String, param2:String) : String
{
var _loc_3:* = strToChars(param1);
var _loc_4:* = strToChars(param2);
var _loc_5:* = calculate(_loc_3, _loc_4);
return charsToHex(_loc_5);
}// end function
private static function strToChars(param1:String) : Array
{
var _loc_2:Array = [];
var _loc_3:* = param1.length;
var _loc_4:int = 0;
while (_loc_4 < _loc_3)
{
_loc_2.push(param1.charCodeAt(_loc_4));
_loc_4++;
}
return _loc_2;
}// end function
public static function penrynAlytic(param1:String) : Boolean
{
var _loc_3:String = null;
var _loc_2:* = param1.split("/"

;
for each (_loc_3 in _loc_2)
{
if (_loc_3.indexOf("*"

> 0)
{
return true;
}
}
return false;
}// end function
private static function initialize(param1:Array) : void
{
var _loc_3:Number = NaN;
var _loc_5:int = 0;
var _loc_2:Number = 0;
var _loc_4:* = param1.length;
_loc_5 = 0;
while (_loc_5 <= 255)
{
mykey[_loc_5] = param1[_loc_5 % _loc_4];
sbox[_loc_5] = _loc_5;
_loc_5++;
}
_loc_5 = 0;
while (_loc_5 <= 255)
{
_loc_2 = (_loc_2 + sbox[_loc_5] + mykey[_loc_5]) % 256;
_loc_3 = sbox[_loc_5];
sbox[_loc_5] = sbox[_loc_2];
sbox[_loc_2] = _loc_3;
_loc_5++;
}
return;
}// end function
private static function charsToStr(param1:Array) : String
{
var _loc_2:String = "";
var _loc_3:* = param1.length;
var _loc_4:int = 0;
while (_loc_4 < _loc_3)
{
_loc_2 = _loc_2 + String.fromCharCode(param1[_loc_4]);
_loc_4++;
}
return _loc_2;
}// end function
private static function calculate(param1:Array, param2:Array) : Array
{
var _loc_6:Number = NaN;
var _loc_7:Number = NaN;
var _loc_8:Number = NaN;
var _loc_11:Number = NaN;
initialize(param2);
var _loc_3:Number = 0;
var _loc_4:Number = 0;
var _loc_5:Array = [];
var _loc_9:* = param1.length;
var _loc_10:int = 0;
while (_loc_10 < _loc_9)
{
_loc_3 = (_loc_3 + 1) % 256;
_loc_4 = (_loc_4 + sbox[_loc_3]) % 256;
_loc_7 = sbox[_loc_3];
sbox[_loc_3] = sbox[_loc_4];
sbox[_loc_4] = _loc_7;
_loc_11 = (sbox[_loc_3] + sbox[_loc_4]) % 256;
_loc_6 = sbox[_loc_11];
_loc_8 = param1[_loc_10] ^ _loc_6;
_loc_5.push(_loc_8);
_loc_10++;
}
return _loc_5;
}// end function
}
}