Skip to content

Instantly share code, notes, and snippets.

@Romain-P
Created October 20, 2017 23:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Romain-P/6ad900da416c87d63d849e9208a2c47c to your computer and use it in GitHub Desktop.
Save Romain-P/6ad900da416c87d63d849e9208a2c47c to your computer and use it in GitHub Desktop.
antibot challenge
// Decompiled by AS3 Sorcerer 2.72
// http://www.as3sorcerer.com/
//HumanCheck
package
{
import flash.display.MovieClip;
import flash.utils.ByteArray;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.utils.IDataInput;
import flash.display.Stage;
import flash.utils.Dictionary;
import __AS3__.vec.Vector;
import flash.display.*;
import flash.system.*;
import __AS3__.vec.*;
import flash.utils.*;
public class HumanCheck extends MovieClip
{
private static var _init:Boolean = false;
private static var _passer:Object = new Object();
private static var _SMELMLEOMG:int;
private var $DOFUSCATOR_0:ByteArray;
private var $DOFUSCATOR_1:BitmapData;
private var _hashKey:ByteArray;
private var _SEOIILHMLGI:int;
private var _SDXDEHWEOXX:int;
private var _SIXLXOLMML:int;
private var _SLOXEIDMD:int;
private var _SEDOWXHIOI:int;
private var _SDXIGMHEHIX:int;
private var _SHMLDDMIXO:int;
private var _SEDILIXWLEM:int;
private var _SHHOOXXMOW:int;
private var _SEIIXGEHIHD:int;
private var _SEXIIXLELWH:int;
private var _SDGHWHWGOG:int;
private var _SEGHOOIXMII:int;
private var _SEHLOLGXIMH:int;
private var _SEHWXMOEMME:int;
private var _SEWDMMEHGEL:int;
public function HumanCheck(passer:Object=null)
{
var ti:* = undefined;
var lfc:* = undefined;
this._SEOIILHMLGI = (_SOIHEODHGI(748) ^ -94111);
this._SDXDEHWEOXX = (_SELIOIHOEDL(419) + 17835);
this._SIXLXOLMML = (_SOIHEODHGI(-696) + -94091);
this._SLOXEIDMD = (_SHXHIMXIGO(493) ^ 32873);
this._SEDOWXHIOI = (_SELWOWHMLML(325) ^ -31925);
this._SDXIGMHEHIX = (_SHMHXLMXGD(67) + -32040);
this._SHMLDDMIXO = (_SLGIEIEGEM(-844) + -31859);
this._SEDILIXWLEM = (-23964250 - _SEMXXIXOHDI(466));
this._SHHOOXXMOW = (_SLGIEIEGEM(-642) ^ -31874);
this._SEIIXGEHIHD = (_SEMXXIXOHDI(-855) ^ 23964359);
this._SEXIIXLELWH = (_SELIOIHOEDL(-391) ^ -17668);
this._SDGHWHWGOG = (-336957 - _SMWMMHIEOM(-274));
this._SEGHOOIXMII = (_SEGMHMIIMXX(644) + -18594);
this._SEHLOLGXIMH = (94219 - _SOIHEODHGI(-586));
this._SEHWXMOEMME = (-32768 - _SHXHIMXIGO(223));
this._SEWDMMEHGEL = (_SOILEIMMEI(796) ^ 31960);
super();
if (((_init) && (!((passer == _passer))))){
throw (new Error("You shall not pass"));
};
if (passer == _passer){
return;
};
if (!_init){
gotoAndStop(0);
while (numChildren) {
removeChildAt(0);
};
};
_init = true;
this._SEGHOOIXMII = (this._SEGHOOIXMII ^ parseInt(_SafeStr_2._SafeStr_7(-1820302790)));
this._SLOXEIDMD = (this._SLOXEIDMD ^ parseInt(_SafeStr_2._SafeStr_7(-1820302796)));
this._SHHOOXXMOW = (this._SHHOOXXMOW ^ parseInt(_SafeStr_2._SafeStr_7(-1820302805)));
this._SEXIIXLELWH = (this._SEXIIXLELWH ^ parseInt(_SafeStr_2._SafeStr_7(-1820302789)));
this._SEHLOLGXIMH = (this._SEHLOLGXIMH ^ parseInt(_SafeStr_2._SafeStr_7(-1820302786)));
this._SEHWXMOEMME = (this._SEHWXMOEMME ^ parseInt("2"));
this._SEIIXGEHIHD = (this._SEIIXGEHIHD ^ parseInt(_SafeStr_2._SafeStr_7(-1820302801)));
this._SDXDEHWEOXX = (this._SDXDEHWEOXX ^ parseInt(_SafeStr_2._SafeStr_7(-1820302801)));
this._SEDOWXHIOI = (this._SEDOWXHIOI ^ parseInt(_SafeStr_2._SafeStr_7(-1820302798)));
this._SIXLXOLMML = (this._SIXLXOLMML ^ parseInt(_SafeStr_2._SafeStr_7(-1820302803)));
this._SHMLDDMIXO = (this._SHMLDDMIXO ^ parseInt(_SafeStr_2._SafeStr_7(-1820302806)));
this._SEOIILHMLGI = (this._SEOIILHMLGI ^ parseInt(_SafeStr_2._SafeStr_7(-1820302812)));
this._SDGHWHWGOG = (this._SDGHWHWGOG ^ parseInt(_SafeStr_2._SafeStr_7(-1820302796)));
this._SEDILIXWLEM = (this._SEDILIXWLEM ^ parseInt(_SafeStr_2._SafeStr_7(-1820302807)));
this._SEWDMMEHGEL = (this._SEWDMMEHGEL ^ parseInt(_SafeStr_2._SafeStr_7(-1820302795)));
this._SDXIGMHEHIX = (this._SDXIGMHEHIX ^ parseInt(_SafeStr_2._SafeStr_7(-1820302804)));
ti = setTimeout(this.sendTicket, 1000);
lfc = new ((getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302800)) as Class))();
var _local_3 = lfc[_SafeStr_2._SafeStr_7(-1820302816)];
(_local_3[_SafeStr_2._SafeStr_7(-1820302825)](_SafeStr_2._SafeStr_7(-1820302808), function (e:*):void
{
var dataToDecrypt:ByteArray;
var pad:_SEWEGXWIEEM;
var mode:_SDIDIWOHGD;
var hashKey:ByteArray;
var c:* = undefined;
var hashColor:ByteArray;
var lastColorCount:uint;
var ci:uint;
var dofusInstance:Sprite;
var swfSigData:Object;
var rawSignature:ByteArray;
var swfContent:ByteArray;
var pem:String;
var rsaKey:_SLXOGXMDOX;
var ANKAMA_SIGNED_FILE_HEADER:String;
var SIGNATURE_HEADER:String;
var headerPosition:int;
var header:String;
var signedDataLenght:int;
var cryptedData:ByteArray;
var sigData:ByteArray;
var tsDecrypt:uint;
var sigHeader:String;
var _decoyXorKeyPart2_:uint;
var sigVersion:uint;
var sigFileLenght:uint;
var _decoyXorKeyPart3_:uint;
var hashType:uint;
var sigHash:String;
var tsHash:uint;
var contentHash:String;
var sigDate:Date;
var _decoyXorKeyPart4_:uint;
var _decoyXorKeyPart7_:uint;
var _decoyXorKeyPart8_:uint;
var _decoyXorKeyPart9_:uint;
var n:int;
clearTimeout(ti);
var dec:Function = function (_arg_1:String, _arg_2:String):String
{
var _local_3:ByteArray = __slot_20["decodeToByteArray"](_arg_1);
var _local_4:ByteArray = __slot_20["decodeToByteArray"](_arg_2);
var _local_5:uint;
while (_local_5 < _local_3.length) {
_local_3[_local_5] = (_local_3[_local_5] ^ _local_4[(_local_5 % _local_4["length"])]);
_local_5++;
};
return (_local_3.toString());
};
var decoyXorKey:int;
try {
dofusInstance = ApplicationDomain["currentDomain"]["getDefinition"]("Dofus")["getInstance"]()["stage"]["loaderInfo"]["applicationDomain"]["getDefinition"]("Dofus")["getInstance"]();
}
catch(err:Error) {
sendTicket();
return;
};
var _decoyXorKeyPart1_:uint;
var dofusClassDesc:XML = describeType(dofusInstance);
if ((((((((((((dofusClassDesc.@name.toString() == dec("WYaYgGMelHIhvGmkn5x+", "Hen+9RBd+BtE0g=="))) && ((dofusClassDesc.@base.toString() == dec("9VLigMMc+zmkS/9f+smRYe8ivk/2", "kz6D86syn1DXOw=="))))) && ((dofusClassDesc.@isDynamic.toString() == "false")))) && ((dofusClassDesc.@isFinal.toString() == "false")))) && ((dofusClassDesc.@isStatic.toString() == "false")))) && ((dofusClassDesc.accessor.(@name == dec("/0HCF18OycvwHQ==", "ky6jczp8gKWWcg==")).@declaredBy.toString() == dec("nUrBLIhnyfoYi5dH2WXaDcTgG5eaX+89iizO5w==", "+yagX+BJrZNr+w==")))) != function ():Boolean
{
if (((((_SELIOIHOEDL(-577) ^ 17632) >= (32792 - _SLGIEIEGEM(-166)))) || (((((_SHXHIMXIGO(-342) + 33699) < (-31858 - _SHXHIMXIGO(-507)))) && (((_SHMHXLMXGD(-975) ^ -32252) > (32962 - _SELIOIHOEDL(-857)))))))){
return (((_SOIHEODHGI(-41) ^ 93206) == (_SOIHEODHGI(741) ^ -93918)));
};
if (((((_SELWOWHMLML(-165) ^ -41396) >= (_SEMXXIXOHDI(347) ^ 23963705))) && (((32583 - _SLGIEIEGEM(225)) < (-17446 - _SELIOIHOEDL(-308)))))){
return (((34125 - _SEGMHMIIMXX(496)) <= (_SHMHXLMXGD(914) + -32177)));
};
if (((((((((_SHXHIMXIGO(578) + 33577) <= (_SOIHEODHGI(-549) ^ 94181))) && (((_SHMHXLMXGD(-984) + -31898) < (_SOILEIMMEI(674) + -31282))))) && (((31153 - _SELWOWHMLML(277)) < (_SLGIEIEGEM(-143) + -31073))))) || (((_SHXHIMXIGO(268) + 32285) < (_SHMHXLMXGD(722) ^ -32495))))){
return (((((_SLGIEIEGEM(312) + -31642) >= (_SEMXXIXOHDI(160) ^ -23963877))) || (((_SHMHXLMXGD(918) ^ 32017) == (_SEMXXIXOHDI(-432) ^ -23964480)))));
};
if (((((((((42314 - _SELWOWHMLML(-556)) >= (_SMWMMHIEOM(918) + -533653))) && (((_SMWMMHIEOM(-658) ^ -345696) >= (-71567 - _SEGMHMIIMXX(-681)))))) && (((76669 - _SMWMMHIEOM(-202)) == (_SOIHEODHGI(-20) + -93930))))) || (((((_SMWMMHIEOM(-72) + 333192) == (-332138 - _SMWMMHIEOM(-958)))) && (((_SELWOWHMLML(591) + -32150) == (_SELWOWHMLML(-761) + -32288))))))){
return (((((-33613 - _SHXHIMXIGO(0x0202)) >= (31544 - _SHMHXLMXGD(-744)))) && (((-32352 - _SHXHIMXIGO(479)) < (_SELIOIHOEDL(289) + 16758)))));
};
if (((((_SMWMMHIEOM(705) ^ 524385) == (93159 - _SOIHEODHGI(-675)))) && (((_SLGIEIEGEM(153) ^ -32082) > (_SEGMHMIIMXX(-37) + 70871))))){
return (((((77026 - _SMWMMHIEOM(564)) <= (_SELIOIHOEDL(-966) ^ 17794))) && (((_SMWMMHIEOM(-297) ^ 337106) <= (-10617 - _SEGMHMIIMXX(569))))));
};
if (((((_SEGMHMIIMXX(-568) + 54320) < (-33294 - _SHXHIMXIGO(-671)))) || (((_SOILEIMMEI(709) + -32846) >= (_SMWMMHIEOM(962) ^ -534313))))){
return (((_SELIOIHOEDL(-941) + 17617) >= (_SELWOWHMLML(968) + -230351)));
};
if (((((((((_SHMHXLMXGD(-205) ^ -31773) > (_SHXHIMXIGO(-69) + 32637))) && (((-333020 - _SMWMMHIEOM(-923)) == (_SEGMHMIIMXX(-328) + 19406))))) || (((((_SOILEIMMEI(-484) + -31401) < (_SELIOIHOEDL(679) + -32192))) && (((31927 - _SELIOIHOEDL(338)) > (531468 - _SMWMMHIEOM(154)))))))) || (((_SELIOIHOEDL(859) + -31204) == (_SHMHXLMXGD(-762) ^ 32255))))){
return (((_SHMHXLMXGD(-269) + -31825) <= (_SHMHXLMXGD(-522) + -31953)));
};
if (((((((_SOILEIMMEI(-27) + -32656) >= (_SELWOWHMLML(-898) + -42136))) && (((_SHMHXLMXGD(418) + -32160) == (_SELWOWHMLML(337) + -41651))))) || (((((_SHXHIMXIGO(-791) + 32154) == (31552 - _SLGIEIEGEM(50)))) && (((_SMWMMHIEOM(-563) ^ 347487) <= (94256 - _SOIHEODHGI(-518)))))))){
return (((((77471 - _SMWMMHIEOM(203)) <= (-190590 - _SEGMHMIIMXX(-298)))) || (((_SHMHXLMXGD(938) + -32459) > (_SEGMHMIIMXX(408) ^ 7886304)))));
};
return (((((_SELIOIHOEDL(-952) ^ -18235) >= (-23964776 - _SEMXXIXOHDI(-908)))) && (((_SLGIEIEGEM(353) ^ 32495) == (-14304 - _SEGMHMIIMXX(-181))))));
}()){
decoyXorKey = (decoyXorKey ^ (_SELIOIHOEDL(-261) ^ -31959));
};
var getSigData:Function = function (_arg_1:IDataInput, _arg_2:Boolean=true):Object
{
var _local_9:int;
var _local_10:int;
var _local_11:int;
var _local_12:Object;
var _local_13:String;
if (_arg_2){
_arg_1["position"] = 0;
};
_arg_1["endian"] = Endian["LITTLE_ENDIAN"];
var _local_3:String = _arg_1["readUTFBytes"](3);
var _local_4:uint = _arg_1["readUnsignedByte"]();
var _local_5:uint = _arg_1["readUnsignedInt"]();
var _local_6 = (_arg_1["readUnsignedByte"]() >> 3);
_arg_1["position"] = (_arg_1["position"] + Math["ceil"](((_local_6 * 4) / 8)));
var _local_7:uint = ((_arg_1["readUnsignedByte"]() / 0xFF) + _arg_1["readByte"]());
var _local_8:uint = _arg_1["readUnsignedShort"]();
while (_arg_1["bytesAvailable"] != 0) {
_local_9 = _arg_1["readUnsignedShort"]();
_local_10 = (_local_9 >> 6);
_local_11 = (_local_9 & ((1 << 6) - 1));
if (_local_11 == 63){
_local_11 = _arg_1["readInt"]();
};
if (_local_10 == 77){
_local_12 = new Object();
_local_13 = _arg_1["readUTFBytes"](_local_11);
if (_local_13["substr"](0, 4) == "SMD%"){
_local_12["signature"] = __slot_20["decodeToByteArray"](_local_13["substr"](4));
_local_12["signedData"] = new (getDefinitionByName("flash.utils.ByteArray"))();
var _local_14 = _arg_1;
(_local_14["readBytes"](_local_12["signedData"]));
return (_local_12);
};
}
else {
_arg_1["position"] = (_arg_1["position"] + _local_11);
};
if ((((_local_10 == 0)) || ((_local_10 == 82)))){
return (null);
};
};
return (null);
};
var sigOk:Boolean = true;
try {
swfSigData = getSigData(dofusInstance["root"]["loaderInfo"]["bytes"]);
rawSignature = swfSigData["signature"];
swfContent = swfSigData["signedData"];
if (!rawSignature){
sendTicket();
return;
};
pem = ((dec("CxtaR/3R3Dp4RQZmIiic2tpdek5/G1pH/b4=", "JjZ3atCTmX0xCw==") + dec("GnqJkjBHDBmzsDxCqLsQanQgwZUWYoWWOGwCFLCGb3KNmTBvDjC6lBZihZFAdT01opkSZq+dT0MkLcKPA3aThzMCBGTav2R564kKSBgelZIEW7ipCR0jGpePb0uVmCxGORzehhFq64ZNfH4xp/gnV67hKVUCNomcEnL4gyBqAxaftHxGibEVFBcQuaY8UYazN2t6FL+nZ36VlhxOHD7EsBBqsLdNZx07suc4Xaa9FxsfZYK/BHKs5zQGGBSnsBFDiZMvXzkPibg0XLP/E0p9GKH4ZVSXliN4dRabnBNc9JozfWI2gaEiUaqFHlgrFLaZD3aXqRd/JhiSuxpxmKA4Wn8es5YYBYu6K0kKFZ27B16KtiBOHgaA/BAY+aQJGCMc2rMtWIy3MHkeMMmdI3jypAkYOnyXtSMGtJIVbgE0h5R4BIORCRQ5ZLv8DXqtnzYYJgWG/BRd9JodHx8CvLQHcKTnChwHH4CFD1WPpAxkOS3GrzR8rKExWTQbtK8hXLS2NFoEE7CGFnE=", "VzPA0HktTVfx1w==")) + dec("+xBYxmoYuxfd+YN/OaIEfb4WpIT7EFjG", "1j1160dd9VP9qQ=="));
rsaKey = _SEGXOIIMDXX["readRSAPublicKey"](pem);
ANKAMA_SIGNED_FILE_HEADER = dec("QoHnJg==", "A8q0YA==");
SIGNATURE_HEADER = dec("epYicw==", "O91xNw==");
headerPosition = (rawSignature["bytesAvailable"] - ANKAMA_SIGNED_FILE_HEADER["length"]);
rawSignature["position"] = headerPosition;
header = rawSignature["readUTFBytes"](4);
if (header != ANKAMA_SIGNED_FILE_HEADER){
sigOk = false;
};
if (sigOk){
rawSignature["position"] = (headerPosition - 4);
signedDataLenght = rawSignature["readShort"]();
rawSignature["position"] = ((headerPosition - 4) - signedDataLenght);
cryptedData = new ByteArray();
var _local_3 = rawSignature;
(_local_3["readBytes"](cryptedData, 0, signedDataLenght));
sigData = new ByteArray();
tsDecrypt = getTimer();
_local_3 = rsaKey;
(_local_3["verify"](cryptedData, sigData, cryptedData["length"]));
sigData["position"] = 0;
sigHeader = sigData["readUTF"]();
_decoyXorKeyPart2_ = 0;
if ((sigHeader == SIGNATURE_HEADER) != function ():Boolean
{
if (((((525427 - _SMWMMHIEOM(759)) >= (_SMWMMHIEOM(-368) + 333297))) || (((32805 - _SLGIEIEGEM(148)) < (_SEMXXIXOHDI(-602) + 23963495))))){
return (((-32047 - _SHXHIMXIGO(-807)) < (_SHMHXLMXGD(592) + -31873)));
};
if (((((((_SOILEIMMEI(-486) + -32101) == (_SOIHEODHGI(-428) ^ 93294))) || (((-32762 - _SHXHIMXIGO(-637)) > (_SELIOIHOEDL(-194) ^ 17477))))) || (((_SMWMMHIEOM(-61) + -76583) > (_SMWMMHIEOM(835) + -523051))))){
return (((76923 - _SMWMMHIEOM(457)) > (_SOILEIMMEI(508) ^ -32304)));
};
if (((((((((-23965258 - _SEMXXIXOHDI(-92)) < (_SHMHXLMXGD(710) + -31954))) && (((_SEGMHMIIMXX(-824) ^ -18887) > (_SOILEIMMEI(606) + -31732))))) && (((_SELIOIHOEDL(895) + 16943) > (_SHMHXLMXGD(976) ^ 32649))))) || (((_SEMXXIXOHDI(500) + 23964942) >= (_SHMHXLMXGD(825) ^ 31765))))){
return (((((_SELWOWHMLML(0xFF) ^ -32650) > (_SLGIEIEGEM(53) + -31462))) && (((-23964675 - _SEMXXIXOHDI(-758)) < (_SLGIEIEGEM(175) ^ 31831)))));
};
if (((((((((((_SEMXXIXOHDI(-454) ^ -23963914) >= (-32134 - _SHXHIMXIGO(577)))) && (((_SELIOIHOEDL(7) + 17988) > (_SEGMHMIIMXX(-434) + 71006))))) && (((_SEMXXIXOHDI(-325) + 23964376) < (_SEMXXIXOHDI(179) ^ -23963742))))) || (((_SOIHEODHGI(956) + -94122) == (_SHMHXLMXGD(-674) ^ 32315))))) || (((31757 - _SLGIEIEGEM(386)) <= (_SELIOIHOEDL(-340) + -31514))))){
return (((((_SHMHXLMXGD(-745) ^ 31888) <= (_SMWMMHIEOM(-238) + 331802))) && (((_SEGMHMIIMXX(194) ^ -24664) == (93578 - _SOIHEODHGI(-310))))));
};
if (((((_SLGIEIEGEM(790) ^ -32466) > (_SMWMMHIEOM(-386) + -76756))) || (((-18586 - _SEGMHMIIMXX(-323)) == (-23963515 - _SEMXXIXOHDI(505)))))){
return (((((_SHMHXLMXGD(-397) ^ 31933) < (_SELWOWHMLML(-896) ^ -107518))) && (((32393 - _SOILEIMMEI(-953)) >= (31449 - _SELIOIHOEDL(496))))));
};
return (((_SEMXXIXOHDI(-2) ^ -23963875) <= (_SEGMHMIIMXX(-606) + 11526)));
}()){
decoyXorKey = (decoyXorKey ^ (_SEMXXIXOHDI(717) ^ 23964358));
};
if (sigHeader != SIGNATURE_HEADER){
sigOk = false;
};
if (sigOk){
sigVersion = sigData["readByte"]();
_local_3 = sigData;
(_local_3["readInt"]());
_local_3 = sigData;
(_local_3["readInt"]());
sigFileLenght = sigData["readInt"]();
_decoyXorKeyPart3_ = 0;
if ((sigFileLenght == (swfContent as ByteArray).length) == function ():Boolean
{
if (((((((_SMWMMHIEOM(-335) ^ 334085) < (_SOIHEODHGI(-476) + -94809))) || (((_SELIOIHOEDL(836) + -32471) >= (_SOIHEODHGI(137) ^ 94159))))) || (((_SLGIEIEGEM(657) ^ -32619) <= (_SMWMMHIEOM(-973) + -77310))))){
return (((((93736 - _SOIHEODHGI(814)) <= (-31804 - _SHXHIMXIGO(-900)))) && (((-55359 - _SEGMHMIIMXX(-17)) <= (_SOILEIMMEI(-162) + -31051)))));
};
if (((((((((_SOILEIMMEI(299) + -32128) > (_SMWMMHIEOM(-401) ^ -76168))) && (((_SOILEIMMEI(-886) + -31015) > (_SELIOIHOEDL(-308) + 17820))))) || (((_SLGIEIEGEM(874) + -32658) < (31165 - _SOILEIMMEI(-625)))))) || (((((_SEGMHMIIMXX(115) ^ 11123) == (525894 - _SMWMMHIEOM(767)))) && (((_SOIHEODHGI(855) ^ -93479) >= (_SOIHEODHGI(-340) ^ 93356))))))){
return (((-23964196 - _SEMXXIXOHDI(-200)) <= (32164 - _SLGIEIEGEM(-932))));
};
if (((((((((-55525 - _SEGMHMIIMXX(-960)) > (_SEGMHMIIMXX(821) + 584863))) && (((32265 - _SOILEIMMEI(-358)) <= (76662 - _SMWMMHIEOM(574)))))) || (((((_SELWOWHMLML(-326) ^ -42532) < (_SEMXXIXOHDI(-341) ^ -23964362))) && (((_SEGMHMIIMXX(302) ^ -579885) >= (_SELIOIHOEDL(-433) ^ -17840))))))) || (((_SEGMHMIIMXX(425) + 11121) <= (_SEGMHMIIMXX(199) ^ 373215898))))){
return (((((32610 - _SOILEIMMEI(-889)) >= (_SEGMHMIIMXX(-19) + 15630))) || (((_SELIOIHOEDL(-601) + -31906) <= (-10228 - _SEGMHMIIMXX(-526))))));
};
if (((((_SOILEIMMEI(-563) ^ -32165) == (_SELIOIHOEDL(396) ^ 31764))) || (((_SLGIEIEGEM(-891) ^ 32187) == (_SMWMMHIEOM(601) ^ 526125))))){
return (((((_SELIOIHOEDL(798) ^ -17423) > (_SEGMHMIIMXX(246) ^ -11167))) || (((_SEMXXIXOHDI(-843) + 23965080) >= (_SELIOIHOEDL(-847) + -32041)))));
};
if (((((((((_SEGMHMIIMXX(-22) ^ 15132) < (_SOIHEODHGI(-925) + -93485))) || (((((_SLGIEIEGEM(-960) ^ -32013) >= (_SHMHXLMXGD(-762) + -31560))) && (((_SOILEIMMEI(884) + -32393) == (_SEMXXIXOHDI(-289) ^ -23964352))))))) || (((-32127 - _SHXHIMXIGO(12)) <= (_SHMHXLMXGD(-29) + -32876))))) || (((93679 - _SOIHEODHGI(412)) < (_SLGIEIEGEM(-608) + -32466))))){
return (((_SMWMMHIEOM(-914) ^ 333432) >= (_SOIHEODHGI(-538) ^ 93744)));
};
if (((((((32836 - _SLGIEIEGEM(-111)) > (_SEGMHMIIMXX(-440) + 15512))) || (((_SHMHXLMXGD(246) ^ -32679) == (-333519 - _SMWMMHIEOM(-69)))))) || (((((((_SEMXXIXOHDI(-293) + 23963546) > (_SEMXXIXOHDI(405) + 23964712))) && (((_SLGIEIEGEM(977) ^ -32141) >= (-32892 - _SHXHIMXIGO(698)))))) && (((94507 - _SOIHEODHGI(-225)) > (_SEGMHMIIMXX(-886) ^ -55147))))))){
return (((523099 - _SMWMMHIEOM(832)) < (-23964312 - _SEMXXIXOHDI(-553))));
};
if (((((_SHXHIMXIGO(-525) ^ 33427) < (_SLGIEIEGEM(18) + -32961))) || (((((((_SOIHEODHGI(-162) + -94977) <= (_SHMHXLMXGD(173) + -31383))) && (((_SEMXXIXOHDI(-407) ^ -23963884) == (_SOILEIMMEI(-327) ^ 32362))))) && (((_SELWOWHMLML(503) ^ 41627) <= (_SELIOIHOEDL(-689) ^ -17532))))))){
return (((((_SOILEIMMEI(-976) ^ -32240) > (_SEMXXIXOHDI(-257) ^ 23963693))) && (((_SELWOWHMLML(-692) + -42134) >= (_SLGIEIEGEM(-492) ^ 32447)))));
};
if (((((((((((_SOILEIMMEI(909) + -32934) == (-32781 - _SHXHIMXIGO(-862)))) && (((94295 - _SOIHEODHGI(892)) <= (_SEGMHMIIMXX(-635) ^ -55129))))) && (((-23964332 - _SEMXXIXOHDI(304)) < (_SELIOIHOEDL(782) + -32044))))) && (((_SHMHXLMXGD(405) + -32901) <= (_SELIOIHOEDL(589) ^ 31843))))) || (((_SELWOWHMLML(171) ^ 41104) > (_SEGMHMIIMXX(-772) ^ 55158))))){
return (((((_SEMXXIXOHDI(241) ^ 23964329) < (42571 - _SELWOWHMLML(-156)))) || (((_SHXHIMXIGO(869) + 32696) >= (_SELWOWHMLML(157) ^ -41273)))));
};
return (((93565 - _SOIHEODHGI(804)) > (_SLGIEIEGEM(-31) ^ -32307)));
}()){
decoyXorKey = (decoyXorKey ^ (42361 - _SELWOWHMLML(-764)));
};
if (sigFileLenght != (swfContent as ByteArray)["length"]){
sigOk = false;
};
if (sigOk){
hashType = sigData["readByte"]();
sigHash = sigData["readUTF"]();
swfContent["position"] = 0;
tsHash = getTimer();
if (hashType == 0){
contentHash = lfc["contentLoaderInfo"]["applicationDomain"]["getDefinition"](dec("kgCpZm4DgfbBr94a9X1yGIG86JLF", "8HmHBAJs7pKl1g=="))["hashBytes"](swfContent);
}
else {
sigOk = false;
};
if (sigOk){
sigDate = new Date();
_local_3 = sigDate;
(_local_3["setTime"](sigData["readDouble"]()));
_decoyXorKeyPart4_ = 0;
if ((sigHash == contentHash) == function ():Boolean
{
if (((((((((_SLGIEIEGEM(713) + -31797) >= (77015 - _SMWMMHIEOM(-790)))) || (((((_SMWMMHIEOM(708) ^ 76509) >= (_SELIOIHOEDL(-31) ^ 17669))) && (((_SOILEIMMEI(-544) + -31760) < (94975 - _SOIHEODHGI(870)))))))) || (((_SELIOIHOEDL(821) ^ -18424) > (_SELWOWHMLML(541) + -40889))))) || (((_SHXHIMXIGO(629) ^ 33146) == (_SEGMHMIIMXX(-531) ^ -185654))))){
return (((_SHMHXLMXGD(723) ^ -32438) <= (_SHMHXLMXGD(-136) + -32727)));
};
if (((((((-33624 - _SHXHIMXIGO(26)) <= (_SELIOIHOEDL(-854) + -32952))) || (((_SEMXXIXOHDI(-429) + 23964327) <= (32182 - _SOILEIMMEI(-326)))))) || (((_SHMHXLMXGD(516) + -31475) == (94105 - _SOIHEODHGI(499)))))){
return (((_SMWMMHIEOM(-820) ^ 76146) > (_SLGIEIEGEM(-142) ^ 31972)));
};
if (((((((_SELIOIHOEDL(788) + 18216) < (_SMWMMHIEOM(737) + -76647))) || (((((_SHXHIMXIGO(-699) ^ 0x8100) <= (-32947 - _SHXHIMXIGO(195)))) && (((_SELWOWHMLML(-474) ^ 42222) <= (_SLGIEIEGEM(165) + -32579))))))) || (((_SHMHXLMXGD(-461) ^ -31805) == (-333695 - _SMWMMHIEOM(-345)))))){
return (((31267 - _SELWOWHMLML(354)) == (-33121 - _SHXHIMXIGO(-161))));
};
if (((((((((76036 - _SMWMMHIEOM(-887)) < (_SOIHEODHGI(931) + -94747))) && (((_SEGMHMIIMXX(997) ^ 11011) <= (42146 - _SELWOWHMLML(-639)))))) && (((_SHXHIMXIGO(901) ^ -32800) >= (-32830 - _SHXHIMXIGO(450)))))) && (((-17410 - _SELIOIHOEDL(-668)) >= (_SOILEIMMEI(-967) ^ -31778))))){
return (((_SOILEIMMEI(764) + -31344) <= (_SHXHIMXIGO(5) + 33232)));
};
if (((((((31129 - _SELIOIHOEDL(660)) <= (_SELWOWHMLML(835) + -41184))) && (((_SOIHEODHGI(362) ^ -93828) >= (_SELWOWHMLML(991) ^ -230782))))) && (((_SELWOWHMLML(-79) ^ -32687) == (-23963578 - _SEMXXIXOHDI(-219)))))){
return (((((_SELWOWHMLML(770) + -41081) >= (_SEGMHMIIMXX(966) ^ -25441))) && (((_SHMHXLMXGD(481) ^ 32750) >= (_SELIOIHOEDL(413) ^ 32332)))));
};
if (((((((32698 - _SHMHXLMXGD(-299)) > (_SOILEIMMEI(541) + -31871))) || (((_SMWMMHIEOM(588) ^ -526560) > (31233 - _SELIOIHOEDL(-50)))))) || (((_SHXHIMXIGO(570) + 33735) > (_SHXHIMXIGO(374) ^ -33345))))){
return (((((_SHXHIMXIGO(-269) + 32199) < (93720 - _SOIHEODHGI(-911)))) && (((5830 - _SEGMHMIIMXX(-750)) < (_SHXHIMXIGO(733) ^ -33416)))));
};
return (((_SEGMHMIIMXX(705) + -19099) >= (_SHXHIMXIGO(-642) + 33773)));
}()){
decoyXorKey = (decoyXorKey ^ (_SHXHIMXIGO(-227) + 32862));
};
if (sigHash != contentHash){
sigOk = false;
};
};
};
};
};
}
catch(err:Error) {
sigOk = false;
};
var _decoyXorKeyPart5_:uint;
if ((sigHash == contentHash) != function ():Boolean
{
if (((((((((_SOILEIMMEI(-808) + -31040) < (_SOIHEODHGI(-981) ^ -93412))) || (((-19200 - _SEGMHMIIMXX(-239)) < (31206 - _SHMHXLMXGD(-746)))))) || (((((_SMWMMHIEOM(-335) + 334812) == (32357 - _SHMHXLMXGD(615)))) && (((_SEMXXIXOHDI(914) + 23963567) < (_SLGIEIEGEM(574) ^ -32249))))))) || (((-23963959 - _SEMXXIXOHDI(-915)) >= (_SOIHEODHGI(-796) + -94984))))){
return (((_SELIOIHOEDL(-538) ^ 18132) == (-16951 - _SELIOIHOEDL(-687))));
};
if (((((((_SLGIEIEGEM(-977) + -31573) == (_SHXHIMXIGO(-577) ^ -32928))) || (((-11310 - _SEGMHMIIMXX(442)) < (_SHMHXLMXGD(315) ^ 32747))))) || (((_SHXHIMXIGO(-674) + 32535) > (-23963699 - _SEMXXIXOHDI(357)))))){
return (((((_SOILEIMMEI(-281) + -32512) == (32922 - _SELIOIHOEDL(861)))) || (((-54527 - _SEGMHMIIMXX(-915)) <= (31633 - _SHMHXLMXGD(82))))));
};
if (((((((((((-32299 - _SHXHIMXIGO(-697)) >= (_SOILEIMMEI(-167) ^ -32381))) && (((_SOILEIMMEI(-400) + -32569) >= (_SEGMHMIIMXX(45) ^ -10501))))) || (((32347 - _SLGIEIEGEM(62)) > (_SEGMHMIIMXX(542) ^ -579305))))) || (((31102 - _SELWOWHMLML(-765)) == (_SEMXXIXOHDI(-442) + 23964144))))) || (((_SOIHEODHGI(-468) + -94558) > (41694 - _SELWOWHMLML(730)))))){
return (((_SHMHXLMXGD(-418) + -31545) >= (_SHMHXLMXGD(-267) ^ -31852)));
};
if (((((((((31006 - _SLGIEIEGEM(-489)) < (41977 - _SELWOWHMLML(-62)))) || (((((_SOILEIMMEI(12) + -32121) > (_SLGIEIEGEM(520) ^ 32339))) && (((-54713 - _SEGMHMIIMXX(-674)) == (_SMWMMHIEOM(-696) + 347919))))))) || (((_SELIOIHOEDL(-637) ^ 17789) == (_SEGMHMIIMXX(832) + -38906))))) || (((75565 - _SMWMMHIEOM(-463)) < (_SELIOIHOEDL(98) ^ -31917))))){
return (((31634 - _SELIOIHOEDL(453)) < (_SLGIEIEGEM(-575) ^ -31825)));
};
if (((((32173 - _SELIOIHOEDL(-779)) > (_SLGIEIEGEM(26) + -31974))) || (((_SMWMMHIEOM(989) ^ 75871) <= (-23964266 - _SEMXXIXOHDI(749)))))){
return (((230961 - _SELWOWHMLML(988)) > (_SEMXXIXOHDI(686) + 23964156)));
};
if (((((((_SOIHEODHGI(765) + -94893) == (32374 - _SLGIEIEGEM(-636)))) || (((_SEGMHMIIMXX(-743) + 33064) > (-23965252 - _SEMXXIXOHDI(-691)))))) || (((_SELIOIHOEDL(28) ^ 32149) <= (_SOIHEODHGI(-958) ^ 94087))))){
return (((_SELIOIHOEDL(730) ^ 32170) <= (32614 - _SELIOIHOEDL(531))));
};
if (((((((((31033 - _SLGIEIEGEM(-699)) <= (-23963908 - _SEMXXIXOHDI(-580)))) || (((31613 - _SOILEIMMEI(342)) < (_SMWMMHIEOM(746) ^ -76483))))) || (((-32540 - _SHXHIMXIGO(705)) < (230466 - _SELWOWHMLML(992)))))) || (((31958 - _SLGIEIEGEM(-194)) <= (31312 - _SLGIEIEGEM(615)))))){
return (((_SELIOIHOEDL(142) ^ 32062) == (_SOIHEODHGI(-719) ^ 93474)));
};
if (((((((31784 - _SHMHXLMXGD(106)) < (_SHMHXLMXGD(950) + -31359))) && (((_SHMHXLMXGD(720) + -31381) > (_SOIHEODHGI(837) ^ -93574))))) && (((_SLGIEIEGEM(-848) + -32056) > (32266 - _SOILEIMMEI(-486)))))){
return (((_SOILEIMMEI(-50) ^ -32393) == (_SMWMMHIEOM(-893) + 332296)));
};
return (((_SOIHEODHGI(290) + -94731) == (_SOIHEODHGI(-277) + -94373)));
}()){
decoyXorKey = (decoyXorKey ^ (31896 - _SOILEIMMEI(112)));
};
var _decoyXorKeyPart1000_:uint;
if (function ():Boolean
{
if (((((_SHXHIMXIGO(-765) + 33531) >= (_SELWOWHMLML(-40) ^ -41704))) && (((42450 - _SELWOWHMLML(-219)) > (_SELWOWHMLML(-165) ^ 40982))))){
return (((((_SELIOIHOEDL(764) + -31758) <= (_SELIOIHOEDL(-256) ^ 17546))) && (((-23963588 - _SEMXXIXOHDI(-846)) < (32158 - _SELWOWHMLML(310))))));
};
if (((((((_SOIHEODHGI(-291) ^ 93523) <= (_SHXHIMXIGO(943) ^ -33575))) && (((_SEMXXIXOHDI(93) + 23965001) < (_SHMHXLMXGD(510) + -31366))))) || (((((((_SEGMHMIIMXX(-528) ^ -6084462) >= (-17817 - _SELIOIHOEDL(153)))) && (((_SMWMMHIEOM(572) + -75792) > (32641 - _SHMHXLMXGD(734)))))) && (((_SHXHIMXIGO(745) ^ -33051) >= (_SLGIEIEGEM(-621) ^ -32158))))))){
return (((((_SOIHEODHGI(-369) ^ 93863) < (_SELIOIHOEDL(419) ^ -17430))) && (((_SOIHEODHGI(367) + -93433) <= (_SELIOIHOEDL(-241) ^ -17862)))));
};
if (((((((_SLGIEIEGEM(482) ^ 32075) <= (_SELIOIHOEDL(-461) + 17182))) || (((((_SELIOIHOEDL(637) ^ 17755) == (_SHXHIMXIGO(384) + 32627))) && (((95093 - _SOIHEODHGI(-523)) >= (_SOIHEODHGI(-252) + -94065))))))) || (((((_SLGIEIEGEM(-352) ^ 32044) == (-745461277 - _SEGMHMIIMXX(444)))) && (((_SEGMHMIIMXX(-917) + 767186675) <= (_SHMHXLMXGD(546) ^ -32444))))))){
return (((_SLGIEIEGEM(325) + -31167) <= (_SMWMMHIEOM(-424) ^ -76389)));
};
if (((((((31869 - _SLGIEIEGEM(-98)) >= (-23964963 - _SEMXXIXOHDI(242)))) && (((_SEGMHMIIMXX(470) + -33037) > (_SEMXXIXOHDI(-792) ^ -23963924))))) || (((_SELIOIHOEDL(-251) + 17745) == (32769 - _SOILEIMMEI(59)))))){
return (((((_SEGMHMIIMXX(-903) ^ 54785) == (40410 - _SELWOWHMLML(860)))) || (((-767187309 - _SEGMHMIIMXX(-104)) > (_SMWMMHIEOM(-340) + 333947)))));
};
if (((((((_SLGIEIEGEM(-274) ^ 32653) < (_SOILEIMMEI(14) + -31052))) || (((((((42149 - _SELWOWHMLML(489)) <= (527327 - _SMWMMHIEOM(577)))) && (((_SLGIEIEGEM(619) + -31889) <= (533432 - _SMWMMHIEOM(896)))))) && (((_SELIOIHOEDL(-536) + -32535) <= (_SLGIEIEGEM(550) + -31342))))))) || (((35730 - _SEGMHMIIMXX(749)) >= (_SEGMHMIIMXX(972) + 746481331))))){
return (((((_SHMHXLMXGD(346) ^ 32381) <= (_SELWOWHMLML(-794) ^ 32230))) || (((_SEGMHMIIMXX(341) + 10087) < (_SLGIEIEGEM(-228) ^ -32054)))));
};
if (((((_SHMHXLMXGD(-754) + -32711) == (_SLGIEIEGEM(-523) + -31774))) && (((_SELIOIHOEDL(549) + 17220) == (_SOILEIMMEI(816) ^ -32643))))){
return (((-11342 - _SEGMHMIIMXX(262)) == (-347146 - _SMWMMHIEOM(-864))));
};
return (((-32216 - _SHXHIMXIGO(-194)) < (_SHXHIMXIGO(54) + 33649)));
}() != true){
decoyXorKey = (decoyXorKey ^ (_SLGIEIEGEM(101) + -31955));
};
sigOk = true;
try {
swfSigData = getSigData(dofusInstance["stage"]["loaderInfo"]["bytes"]);
if (swfSigData){
rawSignature = swfSigData["signature"];
swfContent = swfSigData["signedData"];
};
if (!rawSignature){
sendTicket();
return;
};
rsaKey = _SEGXOIIMDXX["readRSAPublicKey"](pem);
headerPosition = (rawSignature["bytesAvailable"] - ANKAMA_SIGNED_FILE_HEADER["length"]);
rawSignature["position"] = headerPosition;
header = rawSignature["readUTFBytes"](4);
if (header != ANKAMA_SIGNED_FILE_HEADER){
sigOk = false;
};
if (sigOk){
rawSignature["position"] = (headerPosition - 4);
signedDataLenght = rawSignature["readShort"]();
rawSignature["position"] = ((headerPosition - 4) - signedDataLenght);
cryptedData = new ByteArray();
_local_3 = rawSignature;
(_local_3["readBytes"](cryptedData, 0, signedDataLenght));
sigData = new ByteArray();
tsDecrypt = getTimer();
_local_3 = rsaKey;
(_local_3["verify"](cryptedData, sigData, cryptedData["length"]));
sigData["position"] = 0;
sigHeader = sigData["readUTF"]();
_decoyXorKeyPart7_ = 0;
if ((sigHeader == SIGNATURE_HEADER) == function ():Boolean
{
if (((((((((_SHMHXLMXGD(-738) + -31774) < (_SHMHXLMXGD(-464) ^ -31830))) && (((_SELWOWHMLML(941) + -31397) > (_SELIOIHOEDL(-238) ^ 17657))))) && (((_SEMXXIXOHDI(-761) + 23963469) < (_SLGIEIEGEM(117) + -31476))))) || (((32507 - _SHMHXLMXGD(394)) > (_SELIOIHOEDL(304) ^ 18228))))){
return (((_SELWOWHMLML(298) ^ 32589) > (-15730 - _SEGMHMIIMXX(-63))));
};
if (((((_SELIOIHOEDL(804) + 17500) >= (_SHMHXLMXGD(911) + -31311))) || (((((_SELIOIHOEDL(-699) + -31657) == (_SELWOWHMLML(-990) ^ -42882))) && (((_SHMHXLMXGD(-909) ^ 32421) < (_SEMXXIXOHDI(-484) ^ -23964279))))))){
return (((32274 - _SOILEIMMEI(661)) == (_SHMHXLMXGD(841) ^ -31926)));
};
if (((((((77532 - _SMWMMHIEOM(-804)) >= (_SOILEIMMEI(-182) ^ 31829))) && (((32018 - _SLGIEIEGEM(997)) > (_SHMHXLMXGD(890) + -31349))))) || (((_SMWMMHIEOM(416) + -533236) <= (32659 - _SHMHXLMXGD(259)))))){
return (((94063 - _SOIHEODHGI(11)) == (-23963995 - _SEMXXIXOHDI(-194))));
};
if (((((_SEMXXIXOHDI(-421) ^ -23964467) == (_SEMXXIXOHDI(982) ^ -23964308))) || (((((-32803 - _SHXHIMXIGO(325)) < (_SEMXXIXOHDI(-886) ^ -23964554))) && (((_SELWOWHMLML(33) ^ -32228) < (_SOIHEODHGI(-682) + -93250))))))){
return (((_SOILEIMMEI(827) ^ 32438) > (_SMWMMHIEOM(-604) ^ 346094)));
};
return (((_SEGMHMIIMXX(-406) + 18807) <= (-23964254 - _SEMXXIXOHDI(-541))));
}()){
decoyXorKey = (decoyXorKey ^ (_SLGIEIEGEM(549) ^ 31934));
};
if (sigHeader != SIGNATURE_HEADER){
sigOk = false;
};
if (sigOk){
sigVersion = sigData["readByte"]();
_local_3 = sigData;
(_local_3["readInt"]());
_local_3 = sigData;
(_local_3["readInt"]());
sigFileLenght = sigData["readInt"]();
_decoyXorKeyPart8_ = 0;
if ((sigFileLenght == (swfContent as ByteArray).length) != function ():Boolean
{
if (((((((((_SLGIEIEGEM(922) + -32828) < (_SEGMHMIIMXX(-249) ^ 19238))) && (((_SHXHIMXIGO(-672) + 33472) >= (_SEGMHMIIMXX(-732) + 54512))))) && (((_SHXHIMXIGO(54) ^ 33107) == (_SEGMHMIIMXX(-155) ^ -18520))))) || (((_SELIOIHOEDL(-310) + 17262) <= (_SLGIEIEGEM(-42) + -31720))))){
return (((533404 - _SMWMMHIEOM(442)) >= (_SHMHXLMXGD(-24) ^ 32003)));
};
if (((((((_SELWOWHMLML(-600) + -43198) < (30992 - _SHMHXLMXGD(-53)))) || (((((_SELIOIHOEDL(844) + -31572) < (_SOIHEODHGI(-662) ^ 93498))) && (((_SELIOIHOEDL(-483) ^ 17572) > (-18413 - _SELIOIHOEDL(-963)))))))) || (((((_SHXHIMXIGO(71) + 33292) <= (94458 - _SOIHEODHGI(-935)))) && (((-23963441 - _SEMXXIXOHDI(-721)) <= (31882 - _SELIOIHOEDL(596)))))))){
return (((_SEMXXIXOHDI(694) + 23964411) >= (_SLGIEIEGEM(150) + -31974)));
};
if (((((((-10335 - _SEGMHMIIMXX(281)) >= (_SHMHXLMXGD(638) + -32299))) || (((_SEMXXIXOHDI(342) + 23963772) == (-23964704 - _SEMXXIXOHDI(338)))))) || (((((_SELWOWHMLML(-996) ^ 42013) < (31743 - _SLGIEIEGEM(133)))) && (((_SELIOIHOEDL(-866) ^ -17950) >= (_SHXHIMXIGO(-68) ^ -33759))))))){
return (((((_SHMHXLMXGD(-778) + -31185) == (_SEGMHMIIMXX(626) ^ -10864))) || (((_SOILEIMMEI(-139) + -31101) >= (_SELIOIHOEDL(718) ^ 31914)))));
};
if (((((((((((_SELIOIHOEDL(934) ^ 32737) <= (_SELIOIHOEDL(534) + 17131))) || (((25460 - _SEGMHMIIMXX(713)) > (_SEGMHMIIMXX(383) ^ 306222))))) || (((32088 - _SOILEIMMEI(-235)) <= (_SEGMHMIIMXX(721) ^ 36213))))) || (((_SHXHIMXIGO(-48) ^ 33498) < (_SOIHEODHGI(-807) ^ 93505))))) || (((_SMWMMHIEOM(-311) ^ -76407) >= (_SOIHEODHGI(-172) + -94116))))){
return (((-19001 - _SEGMHMIIMXX(-283)) == (_SEMXXIXOHDI(-589) ^ 23964520)));
};
if (((((((_SHMHXLMXGD(335) + -32862) > (-17868 - _SELIOIHOEDL(569)))) && (((_SEGMHMIIMXX(-952) ^ -54305) <= (_SMWMMHIEOM(-127) + -76249))))) && (((_SOILEIMMEI(-83) + -30980) > (-18653 - _SEGMHMIIMXX(-134)))))){
return (((((_SMWMMHIEOM(-182) ^ -334314) <= (_SEMXXIXOHDI(-64) ^ -23964413))) || (((-23963994 - _SEMXXIXOHDI(123)) == (_SOIHEODHGI(-346) ^ 93549)))));
};
if (((((((((_SELIOIHOEDL(-276) ^ -32492) >= (_SELWOWHMLML(-121) ^ -41443))) && (((_SELIOIHOEDL(437) ^ 32309) <= (_SMWMMHIEOM(-777) + -76718))))) || (((31433 - _SOILEIMMEI(908)) <= (_SHMHXLMXGD(463) + -30994))))) || (((((_SHMHXLMXGD(935) + -31240) <= (-334970 - _SMWMMHIEOM(-359)))) && (((_SELWOWHMLML(19) + -41127) < (_SHXHIMXIGO(683) + 32259))))))){
return (((32743 - _SLGIEIEGEM(-148)) == (-23964742 - _SEMXXIXOHDI(13))));
};
return (((33255 - _SEGMHMIIMXX(197)) <= (_SOIHEODHGI(-180) + -93915)));
}()){
decoyXorKey = (decoyXorKey ^ (94026 - _SOIHEODHGI(12)));
};
if (sigFileLenght != (swfContent as ByteArray)["length"]){
sigOk = false;
};
if (sigOk){
hashType = sigData["readByte"]();
sigHash = sigData["readUTF"]();
swfContent["position"] = 0;
tsHash = getTimer();
if (hashType == 0){
contentHash = lfc["contentLoaderInfo"]["applicationDomain"]["getDefinition"](dec("kgCpZm4DgfbBr94a9X1yGIG86JLF", "8HmHBAJs7pKl1g=="))["hashBytes"](swfContent);
}
else {
sigOk = false;
};
if (sigOk){
sigDate = new Date();
_local_3 = sigDate;
(_local_3["setTime"](sigData["readDouble"]()));
_decoyXorKeyPart9_ = 0;
if ((sigHash == contentHash) == function ():Boolean
{
if (((((_SELIOIHOEDL(-750) ^ -18136) > (_SMWMMHIEOM(686) + -524547))) || (((_SOILEIMMEI(164) ^ 32571) > (_SEMXXIXOHDI(-263) ^ -23964403))))){
return (((_SEMXXIXOHDI(-484) ^ 23964465) < (31178 - _SOILEIMMEI(-642))));
};
if (((((((((((-332305 - _SMWMMHIEOM(-893)) == (41326 - _SELWOWHMLML(93)))) || (((_SEMXXIXOHDI(-154) ^ 23964447) < (_SEMXXIXOHDI(409) ^ -23964562))))) || (((_SELWOWHMLML(214) + -40793) < (_SLGIEIEGEM(-230) + -32579))))) || (((_SHXHIMXIGO(-213) ^ 33691) >= (31122 - _SELIOIHOEDL(-698)))))) || (((_SMWMMHIEOM(-493) ^ -337298) > (94504 - _SOIHEODHGI(375)))))){
return (((_SHMHXLMXGD(26) + -32820) <= (31144 - _SLGIEIEGEM(602))));
};
if (((((31950 - _SOILEIMMEI(171)) == (_SLGIEIEGEM(299) + -32579))) || (((_SELIOIHOEDL(207) ^ 31786) <= (-333351 - _SMWMMHIEOM(-185)))))){
return (((((_SHXHIMXIGO(959) ^ -32840) == (_SHMHXLMXGD(353) + -32199))) && (((31473 - _SHMHXLMXGD(-170)) >= (_SHXHIMXIGO(-337) ^ 33623)))));
};
if (((((-17174 - _SELIOIHOEDL(123)) >= (_SLGIEIEGEM(992) + -31770))) || (((_SEGMHMIIMXX(627) + -24836) == (_SMWMMHIEOM(407) ^ 533390))))){
return (((((32667 - _SELIOIHOEDL(808)) >= (_SLGIEIEGEM(-644) + -32757))) && (((_SELIOIHOEDL(484) + -32528) <= (43399 - _SELWOWHMLML(-990))))));
};
if (((((_SLGIEIEGEM(308) + -32540) > (_SHMHXLMXGD(-427) ^ -32097))) || (((_SMWMMHIEOM(543) + -75786) > (32008 - _SLGIEIEGEM(-700)))))){
return (((_SEMXXIXOHDI(37) + 23963327) < (_SMWMMHIEOM(-686) + 346246)));
};
if (((((((_SELWOWHMLML(-96) + -42069) == (_SOIHEODHGI(-202) ^ 93743))) && (((-23963640 - _SEMXXIXOHDI(-957)) == (-347612 - _SMWMMHIEOM(-541)))))) || (((_SHXHIMXIGO(-31) + 32377) < (_SHXHIMXIGO(117) + 33772))))){
return (((_SELIOIHOEDL(-628) + -32484) <= (_SMWMMHIEOM(841) + -524805)));
};
if (((((31775 - _SOILEIMMEI(582)) > (_SOIHEODHGI(26) ^ -93415))) || (((((_SHXHIMXIGO(-726) + 33726) < (-23963764 - _SEMXXIXOHDI(828)))) && (((_SELIOIHOEDL(-424) ^ -18370) > (32501 - _SOILEIMMEI(-770)))))))){
return (((((_SMWMMHIEOM(-441) ^ 75968) > (_SEGMHMIIMXX(-240) ^ 13790))) && (((_SLGIEIEGEM(551) ^ 31955) < (31134 - _SOILEIMMEI(68))))));
};
if (((((_SLGIEIEGEM(-599) + -32641) <= (32605 - _SHMHXLMXGD(-884)))) || (((((_SOIHEODHGI(-219) ^ -93823) >= (-23964045 - _SEMXXIXOHDI(-725)))) && (((_SELWOWHMLML(529) + -41234) < (_SLGIEIEGEM(672) ^ 32322))))))){
return (((_SHMHXLMXGD(612) ^ -31826) == (_SOILEIMMEI(807) ^ 31798)));
};
return (((((_SEMXXIXOHDI(821) + 23964759) > (_SOIHEODHGI(729) + -94854))) || (((109248 - _SELWOWHMLML(649)) > (_SELIOIHOEDL(-430) ^ 18275)))));
}()){
decoyXorKey = (decoyXorKey ^ (_SELWOWHMLML(663) + -40951));
};
if (sigHash != contentHash){
sigOk = false;
};
};
};
};
};
}
catch(err:Error) {
sigOk = false;
};
var _decoyXorKeyPart10_:uint;
if ((sigHash == contentHash) != function ():Boolean
{
if (((((((((_SEMXXIXOHDI(859) + 23964739) <= (_SOIHEODHGI(-510) ^ -93389))) && (((32543 - _SOILEIMMEI(348)) > (_SEGMHMIIMXX(-331) + 15540))))) && (((_SHXHIMXIGO(914) + 33587) > (_SEGMHMIIMXX(778) + 582447))))) && (((31924 - _SLGIEIEGEM(-908)) <= (_SMWMMHIEOM(-457) ^ -76563))))){
return (((_SEMXXIXOHDI(174) ^ 23964213) == (533247 - _SMWMMHIEOM(117))));
};
if (((((((((_SHXHIMXIGO(-678) ^ -33157) < (_SEMXXIXOHDI(-928) + 23963660))) && (((_SHMHXLMXGD(466) + -32216) < (-18028 - _SELIOIHOEDL(622)))))) && (((_SELWOWHMLML(-485) + -42888) < (_SEMXXIXOHDI(-939) + 23963591))))) || (((_SEGMHMIIMXX(-639) + 54270) == (_SMWMMHIEOM(725) + -76780))))){
return (((_SELIOIHOEDL(-767) + -32805) <= (-23964249 - _SEMXXIXOHDI(-255))));
};
if (((((_SELIOIHOEDL(-995) + 17930) >= (_SELWOWHMLML(239) + -32058))) || (((-23963564 - _SEMXXIXOHDI(-628)) == (_SHMHXLMXGD(-959) ^ -32021))))){
return (((((-23965175 - _SEMXXIXOHDI(-860)) == (_SEGMHMIIMXX(-723) ^ 186948))) && (((76175 - _SMWMMHIEOM(361)) >= (_SEGMHMIIMXX(-876) + 33752)))));
};
if (((((((_SMWMMHIEOM(-272) ^ 337291) == (_SELIOIHOEDL(742) + -31254))) && (((_SHMHXLMXGD(-779) + -32272) < (31635 - _SOILEIMMEI(-285)))))) || (((31712 - _SOILEIMMEI(899)) > (_SOIHEODHGI(120) ^ -93230))))){
return (((((_SMWMMHIEOM(342) + -76677) >= (-190677 - _SEGMHMIIMXX(-217)))) && (((32956 - _SLGIEIEGEM(644)) <= (_SEGMHMIIMXX(-591) ^ -55278)))));
};
if (((((_SOIHEODHGI(-353) ^ 93822) <= (_SELIOIHOEDL(336) ^ -18153))) || (((((_SHMHXLMXGD(-863) ^ -32103) <= (_SHMHXLMXGD(275) ^ 31983))) && (((_SELIOIHOEDL(517) ^ 18006) > (_SELIOIHOEDL(-742) ^ 17526))))))){
return (((76742 - _SMWMMHIEOM(266)) == (_SHMHXLMXGD(254) + -31507)));
};
if (((((((-33090 - _SHXHIMXIGO(-629)) <= (_SHXHIMXIGO(787) ^ -33123))) || (((_SEGMHMIIMXX(735) ^ -36860) == (_SOIHEODHGI(767) + -95118))))) || (((((25338 - _SEGMHMIIMXX(143)) >= (_SOILEIMMEI(-464) + -31293))) && (((_SHXHIMXIGO(591) ^ -33479) < (-23963335 - _SEMXXIXOHDI(-3)))))))){
return (((_SHXHIMXIGO(-89) + 32562) >= (42989 - _SELWOWHMLML(-523))));
};
return (((((-33628 - _SHXHIMXIGO(261)) == (_SHXHIMXIGO(-612) + 0x8282))) && (((_SEMXXIXOHDI(548) + 23964955) == (_SELIOIHOEDL(-196) + -31634)))));
}()){
decoyXorKey = (decoyXorKey ^ (_SEMXXIXOHDI(296) ^ -23964342));
};
var _decoyXorKeyPart1001_:uint;
if (function ():Boolean
{
if (((((_SELWOWHMLML(-654) ^ -42957) > (31500 - _SOILEIMMEI(217)))) || (((((_SMWMMHIEOM(-170) + 332646) <= (_SEGMHMIIMXX(582) ^ 10569))) && (((_SELIOIHOEDL(863) ^ 32452) == (32061 - _SLGIEIEGEM(-193)))))))){
return (((_SOIHEODHGI(597) ^ 93198) >= (_SHMHXLMXGD(-699) ^ -31912)));
};
if (((((((_SEMXXIXOHDI(402) ^ 23964629) > (43205 - _SELWOWHMLML(-623)))) || (((((-70839 - _SEGMHMIIMXX(-733)) < (_SEMXXIXOHDI(-65) + 23964217))) && (((32587 - _SHMHXLMXGD(525)) < (_SHMHXLMXGD(-441) + -32214))))))) || (((-18541 - _SELIOIHOEDL(-285)) <= (94649 - _SOIHEODHGI(433)))))){
return (((31217 - _SOILEIMMEI(610)) <= (32844 - _SHMHXLMXGD(-598))));
};
if (((((((((_SHXHIMXIGO(-355) + 33245) > (_SELWOWHMLML(903) + -40276))) && (((_SHXHIMXIGO(-817) + 32320) >= (_SELIOIHOEDL(587) + 17342))))) && (((_SELIOIHOEDL(416) + -32874) < (_SHMHXLMXGD(-962) + -31685))))) && (((32815 - _SLGIEIEGEM(635)) >= (_SELWOWHMLML(-840) + -32514))))){
return (((_SHMHXLMXGD(-807) ^ -32308) >= (_SEMXXIXOHDI(799) ^ -23964124)));
};
if (((((((((42236 - _SELWOWHMLML(-20)) == (_SLGIEIEGEM(308) ^ 32254))) || (((_SOIHEODHGI(-599) + -93686) < (_SLGIEIEGEM(204) + -32675))))) || (((31991 - _SLGIEIEGEM(-7)) < (31566 - _SLGIEIEGEM(393)))))) || (((32737 - _SLGIEIEGEM(-437)) == (_SELIOIHOEDL(561) ^ -17822))))){
return (((((_SEMXXIXOHDI(675) + 23964953) > (_SHMHXLMXGD(213) ^ 32007))) && (((_SEGMHMIIMXX(-517) ^ -54761) == (_SHMHXLMXGD(689) ^ 32374)))));
};
return (((((-23963726 - _SEMXXIXOHDI(-872)) == (42796 - _SELWOWHMLML(-745)))) && (((_SHXHIMXIGO(939) + 32763) >= (_SEGMHMIIMXX(-701) + 55052)))));
}() == false){
decoyXorKey = (decoyXorKey ^ (_SLGIEIEGEM(-481) ^ 31945));
};
var _decoyXorKeyPart666_:uint;
if (function ():Boolean
{
if (((((_SEMXXIXOHDI(701) + 23964198) < (_SOIHEODHGI(199) + -94249))) && (((_SOIHEODHGI(33) ^ 93308) <= (_SELIOIHOEDL(23) + -32441))))){
return (((((-23963370 - _SEMXXIXOHDI(67)) <= (_SELIOIHOEDL(-527) + -31770))) && (((-31944 - _SHXHIMXIGO(100)) <= (32275 - _SELIOIHOEDL(529))))));
};
if (((((_SHXHIMXIGO(-830) + 33521) >= (31711 - _SELWOWHMLML(-225)))) || (((((-333192 - _SMWMMHIEOM(-74)) <= (_SOILEIMMEI(422) ^ 32513))) && (((_SOIHEODHGI(-326) ^ 94063) > (32920 - _SOILEIMMEI(-183)))))))){
return (((_SOILEIMMEI(556) ^ -31803) < (_SOILEIMMEI(-614) ^ 32325)));
};
if (((((((31978 - _SOILEIMMEI(613)) >= (-32691 - _SHXHIMXIGO(-184)))) && (((75685 - _SMWMMHIEOM(23)) >= (24317 - _SEGMHMIIMXX(583)))))) || (((((31526 - _SHMHXLMXGD(-926)) <= (_SHXHIMXIGO(560) + 32425))) && (((32129 - _SLGIEIEGEM(927)) <= (_SEMXXIXOHDI(927) + 23964268))))))){
return (((((_SHMHXLMXGD(627) ^ 32164) == (-23964174 - _SEMXXIXOHDI(-522)))) && (((32678 - _SHMHXLMXGD(852)) == (_SOILEIMMEI(769) + -31111)))));
};
if (((((((-333987 - _SMWMMHIEOM(-916)) < (_SELIOIHOEDL(917) ^ -32203))) || (((((_SMWMMHIEOM(810) + -533100) < (_SHXHIMXIGO(-860) + 32155))) && (((31075 - _SLGIEIEGEM(945)) > (31061 - _SELIOIHOEDL(531)))))))) || (((_SOILEIMMEI(-441) ^ 32303) < (_SHXHIMXIGO(-519) ^ -33077))))){
return (((((_SMWMMHIEOM(-141) ^ 332233) < (_SMWMMHIEOM(-87) + 332197))) && (((31103 - _SLGIEIEGEM(-302)) < (_SHXHIMXIGO(770) ^ -33182)))));
};
if (((((31203 - _SLGIEIEGEM(-674)) == (-33415 - _SHXHIMXIGO(-7)))) && (((_SHXHIMXIGO(-157) + 33352) > (_SEGMHMIIMXX(-232) + 13582))))){
return (((((-33070 - _SHXHIMXIGO(-294)) >= (_SHXHIMXIGO(960) + 31859))) || (((_SLGIEIEGEM(26) + -31679) < (_SOILEIMMEI(994) ^ -31871)))));
};
if (((((_SOILEIMMEI(884) ^ -31944) > (_SOIHEODHGI(-925) + -94755))) || (((_SOILEIMMEI(518) + -31894) == (32426 - _SELIOIHOEDL(505)))))){
return (((((_SEGMHMIIMXX(-832) + 19032) <= (_SHMHXLMXGD(-785) ^ 31758))) || (((_SELIOIHOEDL(-707) + 18105) == (_SHMHXLMXGD(-513) ^ -32309)))));
};
return (((_SELWOWHMLML(742) + -40263) == (-19406 - _SEGMHMIIMXX(-879))));
}() == function ():Boolean
{
if (((((32535 - _SLGIEIEGEM(-230)) > (_SEGMHMIIMXX(-792) ^ 19177))) && (((_SOILEIMMEI(814) + -31304) == (_SEMXXIXOHDI(-355) ^ 23964569))))){
return (((_SHMHXLMXGD(-898) + -31997) >= (32963 - _SOILEIMMEI(-7))));
};
if (((((((_SHXHIMXIGO(977) ^ 33304) < (_SLGIEIEGEM(-382) ^ 32612))) || (((_SELWOWHMLML(-530) + -41757) <= (31240 - _SLGIEIEGEM(-508)))))) || (((((_SOILEIMMEI(-955) ^ 31982) > (40568 - _SELWOWHMLML(418)))) && (((_SLGIEIEGEM(894) ^ -32416) <= (_SELIOIHOEDL(-851) ^ -32187))))))){
return (((_SMWMMHIEOM(-563) + 346904) >= (_SMWMMHIEOM(-888) ^ -75935)));
};
if (((((((((530425 - _SMWMMHIEOM(320)) == (32499 - _SOILEIMMEI(-546)))) && (((_SHMHXLMXGD(131) ^ 32220) == (25729 - _SEGMHMIIMXX(124)))))) || (((_SEGMHMIIMXX(757) ^ 36630) <= (-23964470 - _SEMXXIXOHDI(127)))))) || (((((93989 - _SOIHEODHGI(140)) <= (_SELIOIHOEDL(-328) + -32212))) && (((_SELIOIHOEDL(646) + -31415) <= (_SEMXXIXOHDI(73) ^ -23964548))))))){
return (((_SLGIEIEGEM(158) + -31008) == (_SELIOIHOEDL(549) + 18345)));
};
if (((((-33306 - _SHXHIMXIGO(-538)) >= (32130 - _SOILEIMMEI(289)))) || (((-32125 - _SHXHIMXIGO(712)) <= (305573 - _SEGMHMIIMXX(440)))))){
return (((_SHXHIMXIGO(-514) ^ -33715) < (_SHMHXLMXGD(-935) + -31759)));
};
if (((((((_SELWOWHMLML(455) + -40374) == (_SELWOWHMLML(702) ^ 41032))) && (((_SOIHEODHGI(606) + -94771) > (-19448 - _SEGMHMIIMXX(-311)))))) && (((_SOILEIMMEI(-680) ^ -32311) > (-23964768 - _SEMXXIXOHDI(992)))))){
return (((((36246 - _SEGMHMIIMXX(772)) == (41407 - _SELWOWHMLML(-364)))) || (((_SELWOWHMLML(-729) + -32318) < (_SOILEIMMEI(-344) + -31232)))));
};
if (((((((((((_SOIHEODHGI(355) + -94946) > (-23965082 - _SEMXXIXOHDI(-881)))) && (((-33308 - _SHXHIMXIGO(-470)) > (-348205 - _SMWMMHIEOM(-534)))))) || (((_SMWMMHIEOM(699) ^ 523976) >= (_SELWOWHMLML(965) ^ 32218))))) || (((_SLGIEIEGEM(499) ^ -32603) == (_SEGMHMIIMXX(-89) ^ -19036))))) || (((-18683 - _SELIOIHOEDL(56)) > (_SHXHIMXIGO(-947) ^ 33016))))){
return (((32594 - _SHMHXLMXGD(-343)) == (31851 - _SLGIEIEGEM(-909))));
};
if (((((((_SELIOIHOEDL(433) ^ -32024) == (_SEMXXIXOHDI(-140) + 23963411))) && (((_SELIOIHOEDL(-423) + 17633) < (_SEGMHMIIMXX(-946) + 54680))))) || (((_SEGMHMIIMXX(-106) ^ 19012) > (_SELIOIHOEDL(94) + 17586))))){
return (((_SELWOWHMLML(695) + -41140) >= (_SEMXXIXOHDI(-952) + 23964814)));
};
return (((32694 - _SELWOWHMLML(382)) > (_SHMHXLMXGD(-944) + -32536)));
}()){
decoyXorKey = (decoyXorKey ^ (_SELWOWHMLML(-973) ^ -42710));
};
var key:* = new (getDefinitionByName("flash.utils.ByteArray"))();
var AuthentificationManager:Object = getDefinitionByName(dec("fgytCOA/Vme/knoCrUPyf1lptIZuTaxJ5jheKLGccw2lRfU4Umj8nnwNoUHkI0486LJoF6hD7yVUYLuQfBepSe8cXGizlHgR", "HWPAJoFRPQbS8w=="));
var ciMsg:Class = (getDefinitionByName(dec("DB05py9xX327UAgTOew9MVBzsEQcXDrsOmhbbr0fAhcn+i94UW/4QgoRIfsna00m7HIHFzfiB3FAebFDBgYtxCtsR32xVA==", "b3JUiU4fNBzWMQ==")) as Class);
var ConnectionsHandler:Object = getDefinitionByName(dec("3EliggyOPBYEJ9hHYskezjMYDzPMCGTJH44yG0co2lI1li6PORkMJctPYMIeqDYZDSraVA==", "vyYPrG3gV3dpRg=="));
_local_3 = key;
(_local_3["writeByte"](((_SELIOIHOEDL(758) + -31925) ^ _SHHOOXXMOW)));
_local_3 = key;
(_local_3["writeByte"](((_SHXHIMXIGO(739) + 32863) ^ _SEHLOLGXIMH)));
_local_3 = key;
(_local_3["writeByte"](((_SHXHIMXIGO(1) ^ -32865) ^ _SEIIXGEHIHD)));
_local_3 = key;
(_local_3["writeByte"](((-10764 - _SEGMHMIIMXX(-558)) ^ _SEGHOOIXMII)));
_local_3 = key;
(_local_3["writeByte"](((_SHMHXLMXGD(-598) ^ 31898) ^ _SEOIILHMLGI)));
_local_3 = key;
(_local_3["writeByte"](((_SOILEIMMEI(-428) ^ 31895) ^ _SEXIIXLELWH)));
_local_3 = key;
(_local_3["writeByte"](((_SELIOIHOEDL(278) ^ -17690) ^ _SEHWXMOEMME)));
_local_3 = key;
(_local_3["writeByte"](((_SELIOIHOEDL(-558) + -31952) ^ _SLOXEIDMD)));
_local_3 = key;
(_local_3["writeByte"](((_SEGMHMIIMXX(279) + -306100) ^ _SEWDMMEHGEL)));
_local_3 = key;
(_local_3["writeByte"](((_SLGIEIEGEM(414) ^ -31890) ^ _SEDOWXHIOI)));
_local_3 = key;
(_local_3["writeByte"](((31885 - _SOILEIMMEI(-924)) ^ _SDXDEHWEOXX)));
_local_3 = key;
(_local_3["writeByte"](((-10620 - _SEGMHMIIMXX(65)) ^ _SDGHWHWGOG)));
_local_3 = key;
(_local_3["writeByte"](((_SHMHXLMXGD(-54) ^ 31959) ^ _SIXLXOLMML)));
_local_3 = key;
(_local_3["writeByte"](((-32788 - _SHXHIMXIGO(-241)) ^ _SHMLDDMIXO)));
_local_3 = key;
(_local_3["writeByte"](((_SELWOWHMLML(407) ^ -41221) ^ _SEDILIXWLEM)));
_local_3 = key;
(_local_3["writeByte"](((31997 - _SHMHXLMXGD(356)) ^ _SDXIGMHEHIX)));
var FastBase64:Object = lfc["contentLoaderInfo"]["applicationDomain"]["getDefinition"](dec("zRAKvXqDobBkyIEKVqZmmKH6QtDcDBLr", "r2kk3xbsztQAsQ=="));
var xorKey:ByteArray = FastBase64["decode"]("YWCUR9VQVsTGPnXi/jRqXw==");
var keyLen:uint = 128;
hashKey = new ByteArray();
var i:int;
while (i < (keyLen / 8)) {
_local_3 = hashKey;
(_local_3["writeByte"](((Math["random"]() * 0x0100) - 128)));
i = (i + 1);
};
var dataToEncrypt:ByteArray = new (getDefinitionByName("flash.utils.ByteArray"))();
_local_3 = dataToEncrypt;
(_local_3["writeUTF"](((AuthentificationManager["getInstance"]()["gameServerTicket"]) ? AuthentificationManager["getInstance"]()["gameServerTicket"] : "")));
_local_3 = dataToEncrypt;
(_local_3["writeShort"](hashKey["length"]));
_local_3 = dataToEncrypt;
(_local_3["writeBytes"](hashKey));
dataToEncrypt["position"] = 0;
var key2:ByteArray = new ByteArray();
i = 0;
while (i < key.length) {
_local_3 = key2;
(_local_3["writeByte"](((key[((key["length"] - i) - 1)] ^ xorKey[(i % xorKey["length"])]) ^ decoyXorKey)));
i = (i + 1);
};
var s:Stage = getDefinitionByName("com.ankamagames.jerakine.utils.display::StageShareManager")["stage"];
var tMc:int = getTimer();
var q:String = s["quality"];
s["quality"] = StageQuality["HIGH"];
var mc2:MovieClip = new HumanCheck(_passer);
_local_3 = mc2;
(_local_3["gotoAndStop"]((_SELIOIHOEDL(845) + -31951)));
var bd2:BitmapData = new (getDefinitionByName("flash.display.BitmapData"))(300, 225);
_local_3 = bd2;
(_local_3["draw"](mc2));
var color:uint;
var colorCount:uint;
var colorIndex:Dictionary = new Dictionary();
var pba:ByteArray = bd2["getPixels"](bd2["rect"]);
pba["position"] = 0;
while (pba["bytesAvailable"]) {
color = pba["readUnsignedInt"]();
if (!colorIndex[color]){
colorIndex[color] = 1;
colorCount++;
}
else {
_local_3 = colorIndex;
var _local_4 = color;
var _local_5 = (_local_3[_local_4] + 1);
_local_3[_local_4] = _local_5;
};
};
var threshold:uint = ((bd2["rect"]["width"] * bd2["rect"]["height"]) * 0.005);
var colors:Array = [];
var colorCounts:Dictionary = new Dictionary();
var k:uint;
for (c in colorIndex) {
if (colorIndex[c] > threshold){
if (colorCounts[colorIndex[c]] == undefined){
colorCounts[colorIndex[c]] = colors["length"];
_local_5 = colors;
(_local_5["push"]({
"color":c,
"count":colorIndex[c]
}));
}
else {
if (colors[colorCounts[colorIndex[c]]]["color"] < c){
colors[colorCounts[colorIndex[c]]]["color"] = c;
};
};
};
};
_local_3 = colors;
(_local_3["sortOn"]("count", (Array["DESCENDING"] | Array["NUMERIC"])));
hashColor = new ByteArray();
lastColorCount = uint["MAX_VALUE"];
ci = 0;
while (ci < colors.length) {
if ((lastColorCount - colors[ci]["count"]) > 100){
lastColorCount = colors[ci]["count"];
_local_3 = hashColor;
(_local_3["writeUnsignedInt"](colors[ci]["color"]));
};
ci++;
};
var key3:ByteArray = new ByteArray();
_local_3 = key3;
(_local_3["writeUTFBytes"](lfc["contentLoaderInfo"]["applicationDomain"]["getDefinition"](dec("kgCpZm4DgfbBr94a9X1yGIG86JLF", "8HmHBAJs7pKl1g=="))["hashBytes"](hashColor)));
key3["position"] = 0;
i = 0;
while (i < key.length) {
key2[i] = (key2[i] ^ key3[i]);
i = (i + 1);
};
s["quality"] = q;
var dataIndex:uint;
while (dataIndex < dataToEncrypt.length) {
dataToEncrypt[dataIndex] = (dataToEncrypt[dataIndex] ^ key2[(dataIndex % key2["length"])]);
dataIndex++;
};
var tsRsa:int = getTimer();
var publicModulo:ByteArray = _SEMOMHOGHLL["decodeToByteArray"](dec("NqjJKHq4p+9vuiO5lix+nuS+Iv4j1KscLLbHxDC5DYK0Cnm75r4g+z6atToRk87WA7sPh4osfJi9zXPYWNPJPSyk4u4r3zSIjCohj97FDrgj2rV+HZq1wy7aEZudAgKdzsst4g6tnSgCtvzYEvkVsKUBEJXuyzPIBtqOdw2K5O8yv0aQyConlNXnDaA2zLUderH66h7uItuMen2G1sJ0viGKqnwnrM20Iv8SsaQGMa7H4hW2JKeofR+44cMX2wWIyiYMvf+4duMCl6Ubf+3lx2vOQ5OVJCut5sEU/E6GsRoFpcu5K+BYpqocEb3FxTTKBafMCCTz1ekRoBi612ELlsPpEvsllZAtH5D1uQrnP9XPOXq678Br3CarvgY7pcPNLOUlgMQHP6nczyzJOtG9eiO4te1z2EC7qQIclu65JeNEpIgIPqi+9BbBHrCLeiuR/bpzwx3UuXM=", "d+P8TkncjIxEjw=="));
var rsaKeyNetwork:_SLXOGXMDOX = new _SLXOGXMDOX(new BigInteger(publicModulo), parseInt(dec("akNtPKo=", "XHZYD50=")));
var rsaCryptedData:ByteArray = new ByteArray();
_local_3 = rsaKeyNetwork;
(_local_3["encrypt"](dataToEncrypt, rsaCryptedData, dataToEncrypt["length"]));
var _AESKey:Class = (lfc["contentLoaderInfo"]["applicationDomain"]["getDefinition"](dec("6D1vyPYEJ73X4P98YZTnASG+mP3yP2+D6gM8spjPzgFJg+c=", "i1IC5p5xVdG2jg==")) as Class);
dofusInstance.stage.loaderInfo.applicationDomain.getDefinition(dec("oQLEXqRUN5YlSqUMxBW2FDaSOkqpBMcV61Q5gz9EsAaTSotfKIAnWakgzAO2WzuS", "wm2pcMU6XPdIKw=="))[dec("5OEFmmXJ7n3u7eXvGA==", "rKBW0jqPuzOtuQ==")] = function (_arg_1:ByteArray):void
{
var _local_2:ByteArray = new ByteArray();
var _local_3 = _local_2;
(_local_3["writeBytes"](__slot_3["hash"](_arg_1)));
_local_2["position"] = 0;
pad = new _SEWEGXWIEEM();
mode = new _SDIDIWOHGD(new _SDXGEILDEDH(new _AESKey(hashKey), pad));
_local_3 = pad;
(_local_3["setBlockSize"](mode["getBlockSize"]()));
_local_3 = mode;
(_local_3["encrypt"](_local_2));
_arg_1["position"] = _arg_1["length"];
_local_3 = _arg_1;
(_local_3["writeBytes"](_local_2));
};
var ret:Vector.<int> = new Vector.<int>();
rsaCryptedData["position"] = 0;
i = 0;
while (rsaCryptedData["bytesAvailable"] != 0) {
n = rsaCryptedData["readByte"]();
ret[i] = n;
i = (i + 1);
};
var msg:* = new (ciMsg)();
_local_3 = msg;
(_local_3["initCheckIntegrityMessage"](ret));
_local_3 = ConnectionsHandler["getConnection"]();
(_local_3["send"](msg));
}));
var fc:* = _SafeStr_2._SafeStr_7(-1820302810);
var fclc:* = new ((getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302797)) as Class))(false, new (getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302814)))());
fclc[(_SafeStr_2._SafeStr_7(-1820302813) + _SafeStr_2._SafeStr_7(-1820302799))] = true;
_local_3 = lfc;
(_local_3[_SafeStr_2._SafeStr_7(-1820302787)](_SEMOMHOGHLL[(("dec" + _SafeStr_2._SafeStr_7(-1820302792)) + _SafeStr_2._SafeStr_7(-1820302788))](fc), fclc));
}
private static function _SEMXXIXOHDI(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = 28426;
var _local_4 = 24729;
var _local_5 = 22827;
var _local_6 = 38171;
var _local_7 = 16030;
if (_arg_2 == 0){
_SMELMLEOMG = 22466;
};
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG - -28432));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
for (;_local_3 < 28429;_local_3++) {
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 ^ -12547));
if (((((_SOILEIMMEI((_local_3 ^ 37807), (_arg_2 + 1)) % 16) <= (_SOILEIMMEI((_arg_1 ^ -10547), (_arg_2 + 1)) % 73))) && (((_SELWOWHMLML((_SMELMLEOMG ^ 19703), (_arg_2 + 1)) % 27) >= (_SLGIEIEGEM((_arg_1 ^ 7476), (_arg_2 + 1)) % 1))))){
if (((((_SEGMHMIIMXX((_SMELMLEOMG + -37179), (_arg_2 + 1)) % -44) >= (_SMWMMHIEOM((_local_3 ^ 22409), (_arg_2 + 1)) % 72))) || (((_SLGIEIEGEM((_SMELMLEOMG ^ -16655), (_arg_2 + 1)) % -70) < (_SELWOWHMLML((_SMELMLEOMG ^ -40622), (_arg_2 + 1)) % 38))))) continue;
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 + -39416));
}
else {
if (((_SHXHIMXIGO((_SMELMLEOMG + 13258), (_arg_2 + 1)) % 90) == (_SHXHIMXIGO((_local_3 - -17299), (_arg_2 + 1)) % -71))){
if (((((((_SOIHEODHGI((_arg_1 - 16023), (_arg_2 + 1)) % -82) >= (_SHMHXLMXGD((_SMELMLEOMG + 27837), (_arg_2 + 1)) % -100))) || (((_SOILEIMMEI((_SMELMLEOMG + -28284), (_arg_2 + 1)) % -66) < (_SHXHIMXIGO((_SMELMLEOMG - -43001), (_arg_2 + 1)) % -18))))) || (((_SOIHEODHGI((_arg_1 - 22120), (_arg_2 + 1)) % 13) > (_SMWMMHIEOM((_arg_1 ^ -19333), (_arg_2 + 1)) % 53))))){
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 + 24315));
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG - -47605));
}
else {
while (_local_4 < 24730) {
_SMELMLEOMG = (_SMELMLEOMG - (_arg_1 + 46798));
if (((_SOIHEODHGI((_arg_1 ^ 22065), (_arg_2 + 1)) % 38) > (_SEMXXIXOHDI((_local_4 + -2905), (_arg_2 + 1)) % 98))){
if (((((_SHMHXLMXGD((_local_3 + -32144), (_arg_2 + 1)) % 43) >= (_SELWOWHMLML((_arg_1 - -1548), (_arg_2 + 1)) % 64))) || (((((_SMWMMHIEOM((_arg_1 ^ -40351), (_arg_2 + 1)) % 104) > (_SEMXXIXOHDI((_arg_1 ^ -41330), (_arg_2 + 1)) % -43))) && (((_SEGMHMIIMXX((_SMELMLEOMG + 6393), (_arg_2 + 1)) % 64) >= (_SEMXXIXOHDI((_local_3 + -33307), (_arg_2 + 1)) % 3))))))){
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG + -36453));
break;
};
if (((_SHMHXLMXGD((_local_4 - 46823), (_arg_2 + 1)) % 37) == (_SLGIEIEGEM((_local_3 + 37081), (_arg_2 + 1)) % -47))){
_SMELMLEOMG = (_SMELMLEOMG + (_local_3 + 3228));
while (_local_5 < 22828) {
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG - 40301));
if (((((_SEMXXIXOHDI((_local_4 + -1566), (_arg_2 + 1)) % 76) >= (_SELIOIHOEDL((_local_5 + 18943), (_arg_2 + 1)) % 55))) || (((_SEGMHMIIMXX((_local_3 + 15194), (_arg_2 + 1)) % 69) < (_SOILEIMMEI((_SMELMLEOMG ^ -30653), (_arg_2 + 1)) % -18))))){
while (_local_6 < 38174) {
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG - -39998));
if (((_SOILEIMMEI((_local_6 ^ 43073), (_arg_2 + 1)) % -24) <= (_SEGMHMIIMXX((_local_5 - -22947), (_arg_2 + 1)) % 23))){
while (_local_7 < 16031) {
_SMELMLEOMG = (_SMELMLEOMG + (_local_7 - -46217));
if (((((_SELWOWHMLML((_local_6 ^ -28495), (_arg_2 + 1)) % 106) == (_SEGMHMIIMXX((_local_4 + -298), (_arg_2 + 1)) % 29))) || (((_SEMXXIXOHDI((_SMELMLEOMG + 31469), (_arg_2 + 1)) % -69) <= (_SMWMMHIEOM((_local_6 ^ -2511), (_arg_2 + 1)) % 114))))){
if (((((_SMWMMHIEOM((_arg_1 - 8841), (_arg_2 + 1)) % 73) <= (_SELIOIHOEDL((_arg_1 - 14959), (_arg_2 + 1)) % -54))) || (((_SHXHIMXIGO((_local_3 + -27007), (_arg_2 + 1)) % 58) < (_SLGIEIEGEM((_SMELMLEOMG + -27414), (_arg_2 + 1)) % 13))))){
if (((_SEMXXIXOHDI((_local_6 ^ 37645), (_arg_2 + 1)) % 66) < (_SMWMMHIEOM((_local_5 + -37569), (_arg_2 + 1)) % -20))){
};
};
};
_local_7++;
};
_SMELMLEOMG = (_SMELMLEOMG ^ (_SMELMLEOMG ^ -11002));
}
else {
_SMELMLEOMG = (_SMELMLEOMG - (_local_4 - -98));
};
_local_6++;
};
}
else {
_SMELMLEOMG = (_SMELMLEOMG ^ (_SMELMLEOMG ^ -34430));
};
_local_5++;
};
}
else {
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG + 7883));
};
};
_local_4++;
};
if (((_SMWMMHIEOM((_SMELMLEOMG - 10224), (_arg_2 + 1)) % 82) <= (_SHXHIMXIGO((_arg_1 ^ 22161), (_arg_2 + 1)) % 113))){
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 ^ -33934));
};
};
};
};
};
return (_SMELMLEOMG);
}
private static function _SEGMHMIIMXX(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -37360;
var _local_4 = -14801;
if (_arg_2 == 0){
_SMELMLEOMG = 37393;
};
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 + 416));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -37358) {
_SMELMLEOMG = (_SMELMLEOMG ^ (_SMELMLEOMG + -18900));
if (((_SHXHIMXIGO((_SMELMLEOMG + -40053), (_arg_2 + 1)) % 23) == (_SELIOIHOEDL((_arg_1 ^ 168), (_arg_2 + 1)) % 63))) break;
if (((_SHXHIMXIGO((_arg_1 + 41156), (_arg_2 + 1)) % 15) >= (_SELIOIHOEDL((_arg_1 ^ 3353), (_arg_2 + 1)) % 34))){
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG ^ -5565));
}
else {
while (_local_4 < -14800) {
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG - 46680));
if (((((((_SOIHEODHGI((_SMELMLEOMG + -25286), (_arg_2 + 1)) % 48) > (_SLGIEIEGEM((_local_4 - -42004), (_arg_2 + 1)) % 112))) && (((_SEGMHMIIMXX((_SMELMLEOMG ^ 21831), (_arg_2 + 1)) % -114) <= (_SOIHEODHGI((_local_3 + -2649), (_arg_2 + 1)) % 101))))) && (((_SELIOIHOEDL((_SMELMLEOMG - 5194), (_arg_2 + 1)) % -127) == (_SLGIEIEGEM((_local_4 + -3740), (_arg_2 + 1)) % 29))))) break;
_local_4++;
};
_SMELMLEOMG = (_SMELMLEOMG - (_arg_1 ^ -22157));
};
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SMWMMHIEOM(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -44702;
if (_arg_2 == 0){
_SMELMLEOMG = 21483;
};
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG - -32777));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -44700) {
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 ^ -15297));
if (((_SHXHIMXIGO((_local_3 ^ 38860), (_arg_2 + 1)) % 126) == (_SELWOWHMLML((_arg_1 ^ -20037), (_arg_2 + 1)) % -71))) break;
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG - -12599));
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SHMHXLMXGD(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -30763;
var _local_4 = -3594;
var _local_5 = 679;
var _local_6 = 20206;
if (_arg_2 == 0){
_SMELMLEOMG = -18767;
};
_SMELMLEOMG = (_SMELMLEOMG + (_arg_1 + -33224));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -30761) {
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG + 39468));
if (((_SHMHXLMXGD((_arg_1 + -23929), (_arg_2 + 1)) % 76) >= (_SOILEIMMEI((_local_3 + 1398), (_arg_2 + 1)) % -96))){
while (_local_4 < -3592) {
_SMELMLEOMG = (_SMELMLEOMG ^ (_local_4 - -9442));
if (((_SHXHIMXIGO((_local_3 ^ 40352), (_arg_2 + 1)) % -89) == (_SLGIEIEGEM((_SMELMLEOMG - 40539), (_arg_2 + 1)) % 54))) break;
while (_local_5 < 680) {
_SMELMLEOMG = (_SMELMLEOMG - (_local_5 ^ 23053));
if (((((((_SEMXXIXOHDI((_arg_1 - -37695), (_arg_2 + 1)) % -110) < (_SOILEIMMEI((_arg_1 + 39574), (_arg_2 + 1)) % -48))) && (((_SELIOIHOEDL((_local_3 - 45238), (_arg_2 + 1)) % -76) == (_SHXHIMXIGO((_arg_1 ^ -22673), (_arg_2 + 1)) % -111))))) && (((_SOIHEODHGI((_local_4 + -9005), (_arg_2 + 1)) % 107) > (_SEGMHMIIMXX((_SMELMLEOMG - 45077), (_arg_2 + 1)) % 39))))){
while (_local_6 < 20208) {
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG ^ -35187));
if (((_SMWMMHIEOM((_local_3 + -49327), (_arg_2 + 1)) % 49) < (_SEGMHMIIMXX((_local_4 ^ -41740), (_arg_2 + 1)) % -63))){
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG ^ 20969));
_SMELMLEOMG = (_SMELMLEOMG + (_local_4 + -29817));
};
_local_6++;
};
};
_local_5++;
};
_SMELMLEOMG = (_SMELMLEOMG ^ (_local_3 ^ -49270));
_local_4++;
};
};
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SOIHEODHGI(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -25016;
var _local_4 = -41146;
if (_arg_2 == 0){
_SMELMLEOMG = -29063;
};
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 + 21648));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
for (;_local_3 < -25015;_local_3++) {
_SMELMLEOMG = (_SMELMLEOMG - (_arg_1 ^ -37644));
if (((((_SELIOIHOEDL((_SMELMLEOMG ^ 8406), (_arg_2 + 1)) % 74) < (_SOILEIMMEI((_arg_1 - 25210), (_arg_2 + 1)) % 94))) || (((_SMWMMHIEOM((_local_3 ^ -43), (_arg_2 + 1)) % -102) >= (_SELWOWHMLML((_SMELMLEOMG - 3498), (_arg_2 + 1)) % -47))))){
if (((_SOILEIMMEI((_local_3 + -17179), (_arg_2 + 1)) % -8) >= (_SMWMMHIEOM((_local_3 - 3704), (_arg_2 + 1)) % -123))){
_SMELMLEOMG = (_SMELMLEOMG ^ (_local_3 - 39171));
if (((_SEGMHMIIMXX((_SMELMLEOMG + 43007), (_arg_2 + 1)) % 17) == (_SOIHEODHGI((_arg_1 + -23415), (_arg_2 + 1)) % 13))) continue;
_SMELMLEOMG = (_SMELMLEOMG + (_local_3 + -43565));
};
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 + -27727));
}
else {
if (((_SMWMMHIEOM((_local_3 + -40537), (_arg_2 + 1)) % -7) < (_SELWOWHMLML((_local_3 ^ 7343), (_arg_2 + 1)) % -6))){
if (((_SEMXXIXOHDI((_SMELMLEOMG + -45591), (_arg_2 + 1)) % -90) > (_SHXHIMXIGO((_local_3 + 42249), (_arg_2 + 1)) % 42))){
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 - 19575));
}
else {
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG + -4458));
};
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 ^ -2670));
}
else {
while (_local_4 < -41145) {
_SMELMLEOMG = (_SMELMLEOMG + (_local_3 - 20945));
if (!((((((_SELIOIHOEDL((_local_4 ^ -31743), (_arg_2 + 1)) % 20) > (_SHXHIMXIGO((_local_4 - -32909), (_arg_2 + 1)) % 124))) && (((_SHXHIMXIGO((_SMELMLEOMG ^ 48352), (_arg_2 + 1)) % 4) < (_SEMXXIXOHDI((_SMELMLEOMG - -23924), (_arg_2 + 1)) % 49))))) && (((_SOIHEODHGI((_local_3 + -35656), (_arg_2 + 1)) % 66) > (_SEGMHMIIMXX((_local_3 - -27914), (_arg_2 + 1)) % -23))))){
_SMELMLEOMG = (_SMELMLEOMG + (_local_4 - -37924));
_SMELMLEOMG = (_SMELMLEOMG - (_arg_1 ^ -46478));
};
_local_4++;
};
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG + 1438));
};
};
};
return (_SMELMLEOMG);
}
private static function _SHXHIMXIGO(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = 24908;
if (_arg_2 == 0){
_SMELMLEOMG = -7587;
};
_SMELMLEOMG = (_SMELMLEOMG + (_arg_1 ^ 7206));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < 24911) {
_SMELMLEOMG = (_SMELMLEOMG - (_arg_1 + -12444));
if (((((((_SEGMHMIIMXX((_SMELMLEOMG + -44646), (_arg_2 + 1)) % -66) == (_SEGMHMIIMXX((_SMELMLEOMG - -27428), (_arg_2 + 1)) % -53))) || (((((_SLGIEIEGEM((_local_3 + -4109), (_arg_2 + 1)) % 33) < (_SOIHEODHGI((_SMELMLEOMG ^ 4151), (_arg_2 + 1)) % -55))) && (((_SMWMMHIEOM((_SMELMLEOMG - 10413), (_arg_2 + 1)) % -113) == (_SMWMMHIEOM((_SMELMLEOMG + 29979), (_arg_2 + 1)) % -90))))))) || (((_SEMXXIXOHDI((_arg_1 - -1444), (_arg_2 + 1)) % -55) <= (_SELIOIHOEDL((_local_3 - -28073), (_arg_2 + 1)) % 24))))){
};
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SLGIEIEGEM(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -48663;
if (_arg_2 == 0){
_SMELMLEOMG = -25894;
};
_SMELMLEOMG = (_SMELMLEOMG + (_arg_1 - 3454));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -48660) {
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 - -47418));
if (((_SELIOIHOEDL((_SMELMLEOMG - 48259), (_arg_2 + 1)) % -59) <= (_SOILEIMMEI((_SMELMLEOMG ^ -18583), (_arg_2 + 1)) % 49))) break;
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SELWOWHMLML(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -36800;
if (_arg_2 == 0){
_SMELMLEOMG = -12369;
};
_SMELMLEOMG = (_SMELMLEOMG + (_arg_1 - -25201));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -36797) {
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 - 35921));
if (((((((_SHMHXLMXGD((_local_3 - -42660), (_arg_2 + 1)) % -77) > (_SELIOIHOEDL((_arg_1 + -662), (_arg_2 + 1)) % 33))) || (((_SHXHIMXIGO((_SMELMLEOMG - 25438), (_arg_2 + 1)) % -44) >= (_SHMHXLMXGD((_arg_1 + -11202), (_arg_2 + 1)) % 116))))) || (((((_SELIOIHOEDL((_SMELMLEOMG + 31696), (_arg_2 + 1)) % 46) == (_SOILEIMMEI((_local_3 + 11121), (_arg_2 + 1)) % 49))) && (((_SEGMHMIIMXX((_local_3 ^ 10385), (_arg_2 + 1)) % -126) >= (_SHXHIMXIGO((_local_3 + -7410), (_arg_2 + 1)) % -125))))))){
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 - 8942));
};
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SELIOIHOEDL(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -15399;
var _local_4 = 46650;
var _local_5 = -24452;
var _local_6 = -7131;
var _local_7 = 23246;
if (_arg_2 == 0){
_SMELMLEOMG = 48241;
};
_SMELMLEOMG = (_SMELMLEOMG - (_arg_1 ^ -34111));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -15397) {
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG + -4812));
if (((_SELIOIHOEDL((_SMELMLEOMG ^ 28657), (_arg_2 + 1)) % 106) <= (_SEMXXIXOHDI((_arg_1 - -8413), (_arg_2 + 1)) % -18))){
while (_local_4 < 46651) {
_SMELMLEOMG = (_SMELMLEOMG - (_local_4 + -49291));
if (((_SELWOWHMLML((_local_4 ^ -31344), (_arg_2 + 1)) % 12) == (_SELIOIHOEDL((_SMELMLEOMG + 46216), (_arg_2 + 1)) % 29))) break;
_local_4++;
};
for (;_local_5 < -24451;_local_5++) {
_SMELMLEOMG = (_SMELMLEOMG + (_local_3 + 29919));
if (((((_SEGMHMIIMXX((_local_3 ^ -35393), (_arg_2 + 1)) % 86) < (_SHMHXLMXGD((_SMELMLEOMG - -25167), (_arg_2 + 1)) % 127))) || (((_SEMXXIXOHDI((_SMELMLEOMG + -45506), (_arg_2 + 1)) % 36) > (_SHMHXLMXGD((_arg_1 + 32884), (_arg_2 + 1)) % 93))))){
if (((_SOIHEODHGI((_arg_1 ^ 30786), (_arg_2 + 1)) % -120) == (_SOIHEODHGI((_SMELMLEOMG ^ 35651), (_arg_2 + 1)) % 49))) continue;
while (_local_6 < -7129) {
_SMELMLEOMG = (_SMELMLEOMG + (_local_5 - -37400));
if (((_SELIOIHOEDL((_local_6 ^ 45375), (_arg_2 + 1)) % 22) <= (_SLGIEIEGEM((_local_6 - -23070), (_arg_2 + 1)) % -111))){
};
_local_6++;
};
_SMELMLEOMG = (_SMELMLEOMG + (_local_3 + 865));
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG ^ -3154));
}
else {
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG - -14909));
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG - 36201));
};
};
}
else {
if (((((_SOIHEODHGI((_SMELMLEOMG + -3610), (_arg_2 + 1)) % -59) >= (_SHXHIMXIGO((_SMELMLEOMG ^ -39577), (_arg_2 + 1)) % 66))) && (((_SOILEIMMEI((_SMELMLEOMG + 37405), (_arg_2 + 1)) % -63) >= (_SHXHIMXIGO((_local_3 - 29434), (_arg_2 + 1)) % 31))))){
if (((_SOIHEODHGI((_SMELMLEOMG + -11469), (_arg_2 + 1)) % 128) > (_SELIOIHOEDL((_arg_1 + 10706), (_arg_2 + 1)) % 114))){
while (_local_7 < 23248) {
_SMELMLEOMG = (_SMELMLEOMG ^ (_local_3 + -30069));
if (((_SHXHIMXIGO((_arg_1 + -22934), (_arg_2 + 1)) % 62) == (_SEGMHMIIMXX((_arg_1 + 37341), (_arg_2 + 1)) % 15))){
};
_local_7++;
};
};
if (((_SLGIEIEGEM((_SMELMLEOMG - 24916), (_arg_2 + 1)) % -124) < (_SHMHXLMXGD((_arg_1 ^ -33558), (_arg_2 + 1)) % -3))){
_SMELMLEOMG = (_SMELMLEOMG ^ (_SMELMLEOMG - -22077));
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 ^ -842));
};
};
};
_local_3++;
};
return (_SMELMLEOMG);
}
private static function _SOILEIMMEI(_arg_1:int, _arg_2:int=0):int
{
var _local_3 = -15706;
var _local_4 = -49400;
var _local_5 = -8298;
var _local_6 = 28660;
var _local_7 = -14754;
if (_arg_2 == 0){
_SMELMLEOMG = 24628;
};
_SMELMLEOMG = (_SMELMLEOMG - (_SMELMLEOMG ^ -25918));
if (_arg_2 == 3){
return (_SMELMLEOMG);
};
while (_local_3 < -15703) {
_SMELMLEOMG = (_SMELMLEOMG + (_local_3 - -34822));
if (((_SOIHEODHGI((_local_3 + -18929), (_arg_2 + 1)) % 81) == (_SOILEIMMEI((_local_3 - 12991), (_arg_2 + 1)) % 120))){
while (_local_4 < -49398) {
_SMELMLEOMG = (_SMELMLEOMG - (_local_3 ^ -2812));
if (((_SHXHIMXIGO((_arg_1 ^ -4129), (_arg_2 + 1)) % -39) >= (_SHXHIMXIGO((_local_4 - -16454), (_arg_2 + 1)) % -16))){
while (_local_5 < -8296) {
_SMELMLEOMG = (_SMELMLEOMG - (_local_4 - 26156));
if (((((_SHMHXLMXGD((_local_3 ^ -42384), (_arg_2 + 1)) % 76) >= (_SHXHIMXIGO((_local_4 ^ 36243), (_arg_2 + 1)) % -24))) || (((_SOILEIMMEI((_local_4 + -38767), (_arg_2 + 1)) % 123) == (_SEMXXIXOHDI((_local_4 - -47627), (_arg_2 + 1)) % -123))))){
while (_local_6 < 28661) {
_SMELMLEOMG = (_SMELMLEOMG + (_local_6 - 8628));
if (((_SHMHXLMXGD((_local_4 + 45982), (_arg_2 + 1)) % -33) < (_SOILEIMMEI((_local_5 - 38453), (_arg_2 + 1)) % 104))){
while (_local_7 < -14752) {
_SMELMLEOMG = (_SMELMLEOMG + (_SMELMLEOMG ^ -4490));
if (((_SELIOIHOEDL((_SMELMLEOMG - -21477), (_arg_2 + 1)) % -40) <= (_SELWOWHMLML((_local_3 - -27101), (_arg_2 + 1)) % -68))){
_SMELMLEOMG = (_SMELMLEOMG ^ (_local_6 ^ 1133));
}
else {
break;
};
_local_7++;
};
};
_local_6++;
};
}
else {
if (((((_SOIHEODHGI((_local_3 ^ -49895), (_arg_2 + 1)) % -35) == (_SHXHIMXIGO((_SMELMLEOMG + -28159), (_arg_2 + 1)) % 124))) || (((((((_SHXHIMXIGO((_local_4 - 45927), (_arg_2 + 1)) % 25) < (_SELIOIHOEDL((_local_3 + -21376), (_arg_2 + 1)) % 11))) && (((_SELIOIHOEDL((_local_3 ^ -10039), (_arg_2 + 1)) % -9) < (_SHXHIMXIGO((_arg_1 - 27783), (_arg_2 + 1)) % -39))))) && (((_SEMXXIXOHDI((_local_4 ^ -10982), (_arg_2 + 1)) % 16) > (_SELWOWHMLML((_local_4 ^ -28200), (_arg_2 + 1)) % 3))))))){
};
};
_local_5++;
};
break;
};
_SMELMLEOMG = (_SMELMLEOMG ^ (_arg_1 - -23793));
_local_4++;
};
}
else {
_SMELMLEOMG = (_SMELMLEOMG ^ (_SMELMLEOMG ^ 31967));
};
_local_3++;
};
return (_SMELMLEOMG);
}
public function addCryptedHash(_arg_1:ByteArray):void
{
var _local_5:Object;
var _local_6:ByteArray;
if (!this._hashKey){
_local_5 = getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302791));
_local_6 = new ByteArray();
var _local_7 = _local_6;
(_local_7["writeUTF"](((_local_5["getInstance"]()["gameServerTicket"]) ? _local_5["getInstance"]()["gameServerTicket"] : "")));
this._hashKey = _SOWDILIEOL["hash"](_local_6);
};
var _local_2:ByteArray = new ByteArray();
_local_7 = _local_2;
(_local_7["writeBytes"](_SOWDILIEOL["hash"](_arg_1)));
_local_2["position"] = 0;
var _local_3:_SEWEGXWIEEM = new _SEWEGXWIEEM();
var _local_4:_SDIDIWOHGD = new _SDIDIWOHGD(new _SDXGEILDEDH(new _SELMGXIGHEE(this._hashKey), _local_3));
_local_7 = _local_3;
(_local_7["setBlockSize"](_local_4["getBlockSize"]()));
_local_7 = _local_4;
(_local_7["encrypt"](_local_2));
_arg_1["position"] = _arg_1["length"];
_local_7 = _arg_1;
(_local_7["writeBytes"](_local_2));
}
public function sendTicket():void
{
var _local_18:int;
var _local_1:String = _SafeStr_2._SafeStr_7(-1820302791);
if (!ApplicationDomain["currentDomain"]["hasDefinition"](_local_1)){
return;
};
var _local_2:Object = getDefinitionByName(_local_1);
var _local_3:Class = (getDefinitionByName("com.ankamagames.dofus.network.messages.security::CheckIntegrityMessage") as Class);
var _local_4:Object = getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302785));
var _local_5:Object = getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302793));
var _local_6:Object = getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302809));
var _local_7:Object = getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302811));
var _local_8:* = new (_local_5)(_local_5["applicationDirectory"]["resolvePath"](_SafeStr_2._SafeStr_7(-1820302794)));
var _local_9:* = new (_local_7)();
var _local_10:ByteArray = new ByteArray();
var _local_19 = _local_9;
(_local_19["open"](_local_8, _local_6["READ"]));
_local_19 = _local_9;
(_local_19["readBytes"](_local_10));
_local_19 = _local_9;
(_local_19["close"]());
var _local_11:* = new (getDefinitionByName("flash.utils.ByteArray"))();
_local_19 = _local_11;
(_local_19["writeByte"](((_SOILEIMMEI(930) ^ 31980) ^ this._SEDILIXWLEM)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SHXHIMXIGO(143) + 32693) ^ this._SEGHOOIXMII)));
_local_19 = _local_11;
(_local_19["writeByte"](((-23964426 - _SEMXXIXOHDI(-984)) ^ this._SEGHOOIXMII)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SHXHIMXIGO(-641) + 32687) ^ this._SEDOWXHIOI)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SOILEIMMEI(759) ^ -31920) ^ this._SEHWXMOEMME)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SEMXXIXOHDI(248) + 23964180) ^ this._SEXIIXLELWH)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SMWMMHIEOM(-820) + -76504) ^ this._SHMLDDMIXO)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SOIHEODHGI(774) ^ 94102) ^ this._SEIIXGEHIHD)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SHXHIMXIGO(-746) ^ -32794) ^ this._SHMLDDMIXO)));
_local_19 = _local_11;
(_local_19["writeByte"](((-346033 - _SMWMMHIEOM(-766)) ^ this._SEHLOLGXIMH)));
_local_19 = _local_11;
(_local_19["writeByte"](((-32870 - _SHXHIMXIGO(659)) ^ this._SEGHOOIXMII)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SELWOWHMLML(-552) + -42244) ^ this._SDGHWHWGOG)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SHXHIMXIGO(-467) ^ 32786) ^ this._SLOXEIDMD)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SOILEIMMEI(855) + -32000) ^ this._SEXIIXLELWH)));
_local_19 = _local_11;
(_local_19["writeByte"](((_SOIHEODHGI(-495) + -94121) ^ this._SEXIIXLELWH)));
var _local_12:_SEWEGXWIEEM = new _SEWEGXWIEEM();
var _local_13:_SDIDIWOHGD = new _SDIDIWOHGD(new _SDXGEILDEDH(new _SELMGXIGHEE(_local_11), _local_12));
var _local_14:ByteArray = new (getDefinitionByName("flash.utils.ByteArray"))();
_local_19 = _local_14;
(_local_19["writeUTF"](((_local_2["getInstance"]()["gameServerTicket"]) ? _local_2["getInstance"]()["gameServerTicket"] : "")));
_local_19 = _local_14;
(_local_19["writeBytes"](getDefinitionByName((_SafeStr_2._SafeStr_7(-1820302815) + "D5"))["hash"](_local_10)));
_local_19 = _local_12;
(_local_19["setBlockSize"](_local_13["getBlockSize"]()));
_local_19 = _local_13;
(_local_19["decrypt"](_local_14));
var _local_15:Vector.<int> = new Vector.<int>();
_local_14["position"] = 0;
var _local_16:uint;
while (_local_14["bytesAvailable"] != 0) {
_local_18 = _local_14["readByte"]();
_local_15[_local_16] = _local_18;
_local_16++;
};
getDefinitionByName(_SafeStr_2._SafeStr_7(-1820302802))["HASH_FUNCTION"] = this.addCryptedHash;
var _local_17:* = new (_local_3)();
_local_19 = _local_17;
(_local_19["initCheckIntegrityMessage"](_local_15));
_local_19 = _local_4["getConnection"]();
(_local_19["send"](_local_17));
}
}
}//package
import flash.utils.ByteArray;
import flash.text.Font;
import flash.system.*;
import flash.net.*;
import flash.text.*;
import flash.utils.*;
namespace bi_internal = "http://crypto.hurlant.com/BigInteger";
class _SOWDILIEOL
{
public static function hash(_arg_1:ByteArray):ByteArray
{
var _local_2:uint = (_arg_1.length * 8);
var _local_3:String = _arg_1.endian;
while ((_arg_1.length % 4) != 0) {
_arg_1[_arg_1.length] = 0;
};
_arg_1.position = 0;
var _local_4:Array = [];
_arg_1.endian = Endian.LITTLE_ENDIAN;
var _local_5:uint;
while (_local_5 < _arg_1.length) {
_local_4.push(_arg_1.readUnsignedInt());
_local_5 = (_local_5 + 4);
};
var _local_6:Array = core_md5(_local_4, _local_2);
var _local_7:ByteArray = new ByteArray();
_local_7.endian = Endian.LITTLE_ENDIAN;
_local_5 = 0;
while (_local_5 < 4) {
_local_7.writeUnsignedInt(_local_6[_local_5]);
_local_5++;
};
_arg_1.length = (_local_2 / 8);
_arg_1.endian = _local_3;
return (_local_7);
}
/*private*/ static function core_md5(_arg_1:Array, _arg_2:uint):Array
{
var _local_8:uint;
var _local_9:uint;
var _local_10:uint;
var _local_11:uint;
_arg_1[(_arg_2 >> 5)] = (_arg_1[(_arg_2 >> 5)] | (128 << (_arg_2 % 32)));
_arg_1[((((_arg_2 + 64) >>> 9) << 4) + 14)] = _arg_2;
var _local_3:uint = 1732584193;
var _local_4:uint = 4023233417;
var _local_5:uint = 2562383102;
var _local_6:uint = 271733878;
var _local_7:uint;
while (_local_7 < _arg_1.length) {
_arg_1[_local_7] = ((_arg_1[_local_7]) || (0));
_arg_1[(_local_7 + 1)] = ((_arg_1[(_local_7 + 1)]) || (0));
_arg_1[(_local_7 + 2)] = ((_arg_1[(_local_7 + 2)]) || (0));
_arg_1[(_local_7 + 3)] = ((_arg_1[(_local_7 + 3)]) || (0));
_arg_1[(_local_7 + 4)] = ((_arg_1[(_local_7 + 4)]) || (0));
_arg_1[(_local_7 + 5)] = ((_arg_1[(_local_7 + 5)]) || (0));
_arg_1[(_local_7 + 6)] = ((_arg_1[(_local_7 + 6)]) || (0));
_arg_1[(_local_7 + 7)] = ((_arg_1[(_local_7 + 7)]) || (0));
_arg_1[(_local_7 + 8)] = ((_arg_1[(_local_7 + 8)]) || (0));
_arg_1[(_local_7 + 9)] = ((_arg_1[(_local_7 + 9)]) || (0));
_arg_1[(_local_7 + 10)] = ((_arg_1[(_local_7 + 10)]) || (0));
_arg_1[(_local_7 + 11)] = ((_arg_1[(_local_7 + 11)]) || (0));
_arg_1[(_local_7 + 12)] = ((_arg_1[(_local_7 + 12)]) || (0));
_arg_1[(_local_7 + 13)] = ((_arg_1[(_local_7 + 13)]) || (0));
_arg_1[(_local_7 + 14)] = ((_arg_1[(_local_7 + 14)]) || (0));
_arg_1[(_local_7 + 15)] = ((_arg_1[(_local_7 + 15)]) || (0));
_local_8 = _local_3;
_local_9 = _local_4;
_local_10 = _local_5;
_local_11 = _local_6;
_local_3 = ff(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 0)], 7, 3614090360);
_local_6 = ff(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 1)], 12, 3905402710);
_local_5 = ff(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 2)], 17, 606105819);
_local_4 = ff(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 3)], 22, 3250441966);
_local_3 = ff(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 4)], 7, 4118548399);
_local_6 = ff(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 5)], 12, 1200080426);
_local_5 = ff(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 6)], 17, 2821735955);
_local_4 = ff(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 7)], 22, 4249261313);
_local_3 = ff(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 8)], 7, 1770035416);
_local_6 = ff(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 9)], 12, 2336552879);
_local_5 = ff(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 10)], 17, 0xFFFF5BB1);
_local_4 = ff(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 11)], 22, 2304563134);
_local_3 = ff(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 12)], 7, 1804603682);
_local_6 = ff(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 13)], 12, 4254626195);
_local_5 = ff(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 14)], 17, 2792965006);
_local_4 = ff(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 15)], 22, 1236535329);
_local_3 = gg(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 1)], 5, 4129170786);
_local_6 = gg(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 6)], 9, 3225465664);
_local_5 = gg(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 11)], 14, 643717713);
_local_4 = gg(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 0)], 20, 3921069994);
_local_3 = gg(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 5)], 5, 3593408605);
_local_6 = gg(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 10)], 9, 38016083);
_local_5 = gg(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 15)], 14, 3634488961);
_local_4 = gg(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 4)], 20, 3889429448);
_local_3 = gg(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 9)], 5, 568446438);
_local_6 = gg(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 14)], 9, 3275163606);
_local_5 = gg(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 3)], 14, 4107603335);
_local_4 = gg(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 8)], 20, 1163531501);
_local_3 = gg(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 13)], 5, 2850285829);
_local_6 = gg(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 2)], 9, 4243563512);
_local_5 = gg(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 7)], 14, 1735328473);
_local_4 = gg(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 12)], 20, 2368359562);
_local_3 = hh(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 5)], 4, 4294588738);
_local_6 = hh(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 8)], 11, 2272392833);
_local_5 = hh(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 11)], 16, 1839030562);
_local_4 = hh(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 14)], 23, 4259657740);
_local_3 = hh(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 1)], 4, 2763975236);
_local_6 = hh(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 4)], 11, 1272893353);
_local_5 = hh(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 7)], 16, 4139469664);
_local_4 = hh(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 10)], 23, 3200236656);
_local_3 = hh(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 13)], 4, 681279174);
_local_6 = hh(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 0)], 11, 3936430074);
_local_5 = hh(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 3)], 16, 3572445317);
_local_4 = hh(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 6)], 23, 76029189);
_local_3 = hh(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 9)], 4, 3654602809);
_local_6 = hh(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 12)], 11, 3873151461);
_local_5 = hh(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 15)], 16, 530742520);
_local_4 = hh(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 2)], 23, 3299628645);
_local_3 = ii(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 0)], 6, 4096336452);
_local_6 = ii(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 7)], 10, 1126891415);
_local_5 = ii(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 14)], 15, 2878612391);
_local_4 = ii(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 5)], 21, 4237533241);
_local_3 = ii(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 12)], 6, 1700485571);
_local_6 = ii(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 3)], 10, 2399980690);
_local_5 = ii(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 10)], 15, 4293915773);
_local_4 = ii(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 1)], 21, 2240044497);
_local_3 = ii(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 8)], 6, 1873313359);
_local_6 = ii(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 15)], 10, 4264355552);
_local_5 = ii(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 6)], 15, 2734768916);
_local_4 = ii(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 13)], 21, 1309151649);
_local_3 = ii(_local_3, _local_4, _local_5, _local_6, _arg_1[(_local_7 + 4)], 6, 4149444226);
_local_6 = ii(_local_6, _local_3, _local_4, _local_5, _arg_1[(_local_7 + 11)], 10, 3174756917);
_local_5 = ii(_local_5, _local_6, _local_3, _local_4, _arg_1[(_local_7 + 2)], 15, 718787259);
_local_4 = ii(_local_4, _local_5, _local_6, _local_3, _arg_1[(_local_7 + 9)], 21, 3951481745);
_local_3 = (_local_3 + _local_8);
_local_4 = (_local_4 + _local_9);
_local_5 = (_local_5 + _local_10);
_local_6 = (_local_6 + _local_11);
_local_7 = (_local_7 + 16);
};
return ([_local_3, _local_4, _local_5, _local_6]);
}
/*private*/ static function rol(_arg_1:uint, _arg_2:uint):uint
{
return (((_arg_1 << _arg_2) | (_arg_1 >>> (32 - _arg_2))));
}
/*private*/ static function cmn(_arg_1:uint, _arg_2:uint, _arg_3:uint, _arg_4:uint, _arg_5:uint, _arg_6:uint):uint
{
return ((rol((((_arg_2 + _arg_1) + _arg_4) + _arg_6), _arg_5) + _arg_3));
}
/*private*/ static function ff(_arg_1:uint, _arg_2:uint, _arg_3:uint, _arg_4:uint, _arg_5:uint, _arg_6:uint, _arg_7:uint):uint
{
return (cmn(((_arg_2 & _arg_3) | (~(_arg_2) & _arg_4)), _arg_1, _arg_2, _arg_5, _arg_6, _arg_7));
}
/*private*/ static function gg(_arg_1:uint, _arg_2:uint, _arg_3:uint, _arg_4:uint, _arg_5:uint, _arg_6:uint, _arg_7:uint):uint
{
return (cmn(((_arg_2 & _arg_4) | (_arg_3 & ~(_arg_4))), _arg_1, _arg_2, _arg_5, _arg_6, _arg_7));
}
/*private*/ static function hh(_arg_1:uint, _arg_2:uint, _arg_3:uint, _arg_4:uint, _arg_5:uint, _arg_6:uint, _arg_7:uint):uint
{
return (cmn(((_arg_2 ^ _arg_3) ^ _arg_4), _arg_1, _arg_2, _arg_5, _arg_6, _arg_7));
}
/*private*/ static function ii(_arg_1:uint, _arg_2:uint, _arg_3:uint, _arg_4:uint, _arg_5:uint, _arg_6:uint, _arg_7:uint):uint
{
return (cmn((_arg_3 ^ (_arg_2 | ~(_arg_4))), _arg_1, _arg_2, _arg_5, _arg_6, _arg_7));
}
}
class _SLXOGXMDOX
{
public var e:int;
public var n:BigInteger;
public var d:BigInteger;
public var p:BigInteger;
public var q:BigInteger;
public var dmp1:BigInteger;
public var dmq1:BigInteger;
public var coeff:BigInteger;
protected var canDecrypt:Boolean;
protected var canEncrypt:Boolean;
public function _SLXOGXMDOX(_arg_1:BigInteger, _arg_2:int, _arg_3:BigInteger=null, _arg_4:BigInteger=null, _arg_5:BigInteger=null, _arg_6:BigInteger=null, _arg_7:BigInteger=null, _arg_8:BigInteger=null)
{
this.n = _arg_1;
this.e = _arg_2;
this.d = _arg_3;
this.p = _arg_4;
this.q = _arg_5;
this.dmp1 = _arg_6;
this.dmq1 = _arg_7;
this.coeff = _arg_8;
this.canEncrypt = ((!((this.n == null))) && (!((this.e == 0))));
this.canDecrypt = ((this.canEncrypt) && (!((this.d == null))));
}
public static function parsePublicKey(_arg_1:String, _arg_2:String):_SLXOGXMDOX
{
return (new (_SLXOGXMDOX)(new BigInteger(_arg_1, 16, true), parseInt(_arg_2, 16)));
}
public static function parsePrivateKey(_arg_1:String, _arg_2:String, _arg_3:String, _arg_4:String=null, _arg_5:String=null, _arg_6:String=null, _arg_7:String=null, _arg_8:String=null):_SLXOGXMDOX
{
if (_arg_4 == null){
return (new (_SLXOGXMDOX)(new BigInteger(_arg_1, 16, true), parseInt(_arg_2, 16), new BigInteger(_arg_3, 16, true)));
};
return (new (_SLXOGXMDOX)(new BigInteger(_arg_1, 16, true), parseInt(_arg_2, 16), new BigInteger(_arg_3, 16, true), new BigInteger(_arg_4, 16, true), new BigInteger(_arg_5, 16, true), new BigInteger(_arg_6, 16, true), new BigInteger(_arg_7, 16, true), new BigInteger(_arg_8, 16, true)));
}
protected static function bigRandom(_arg_1:int, _arg_2:Random):BigInteger
{
if (_arg_1 < 2){
return (BigInteger.nbv(1));
};
var _local_3:ByteArray = new ByteArray();
_arg_2.nextBytes(_local_3, (_arg_1 >> 3));
_local_3.position = 0;
var _local_4:BigInteger = new BigInteger(_local_3, 0, true);
_local_4.primify(_arg_1, 1);
return (_local_4);
}
public function getBlockSize():uint
{
return (((this.n.bitLength() + 7) / 8));
}
public function dispose():void
{
this.e = 0;
this.n.dispose();
this.n = null;
Memory.gc();
}
public function encrypt(_arg_1:ByteArray, _arg_2:ByteArray, _arg_3:uint, _arg_4:Function=null):void
{
this._encrypt(this.doPublic, _arg_1, _arg_2, _arg_3, _arg_4, 2);
}
public function decrypt(_arg_1:ByteArray, _arg_2:ByteArray, _arg_3:uint, _arg_4:Function=null):void
{
this._decrypt(this.doPrivate2, _arg_1, _arg_2, _arg_3, _arg_4, 2);
}
public function sign(_arg_1:ByteArray, _arg_2:ByteArray, _arg_3:uint, _arg_4:Function=null):void
{
this._encrypt(this.doPrivate2, _arg_1, _arg_2, _arg_3, _arg_4, 1);
}
public function verify(_arg_1:ByteArray, _arg_2:ByteArray, _arg_3:uint, _arg_4:Function=null):void
{
this._decrypt(this.doPublic, _arg_1, _arg_2, _arg_3, _arg_4, 1);
}
/*private*/ function _encrypt(_arg_1:Function, _arg_2:ByteArray, _arg_3:ByteArray, _arg_4:uint, _arg_5:Function, _arg_6:int):void
{
var _local_9:BigInteger;
var _local_10:BigInteger;
var _local_11:uint;
if (_arg_5 == null){
_arg_5 = this.pkcs1pad;
};
if (_arg_2.position >= _arg_2.length){
_arg_2.position = 0;
};
var _local_7:uint = this.getBlockSize();
var _local_8:int = (_arg_2.position + _arg_4);
while (_arg_2.position < _local_8) {
_local_9 = new BigInteger(_arg_5(_arg_2, _local_8, _local_7, _arg_6), _local_7, true);
_local_10 = _arg_1(_local_9);
_local_11 = (_local_7 - Math.ceil((_local_10.bitLength() / 8)));
while (_local_11 > 0) {
_arg_3.writeByte(0);
_local_11--;
};
_local_10.toArray(_arg_3);
};
}
/*private*/ function _decrypt(_arg_1:Function, _arg_2:ByteArray, _arg_3:ByteArray, _arg_4:uint, _arg_5:Function, _arg_6:int):void
{
var _local_9:BigInteger;
var _local_10:BigInteger;
var _local_11:ByteArray;
if (_arg_5 == null){
_arg_5 = this.pkcs1unpad;
};
if (_arg_2.position >= _arg_2.length){
_arg_2.position = 0;
};
var _local_7:uint = this.getBlockSize();
var _local_8:int = (_arg_2.position + _arg_4);
while (_arg_2.position < _local_8) {
_local_9 = new BigInteger(_arg_2, _local_7, true);
_local_10 = _arg_1(_local_9);
_local_11 = _arg_5(_local_10, _local_7, _arg_6);
if (_local_11 == null){
throw (new Error("Decrypt error - padding function returned null!"));
};
_arg_3.writeBytes(_local_11);
};
}
/*private*/ function pkcs1pad(_arg_1:ByteArray, _arg_2:int, _arg_3:uint, _arg_4:uint=2):ByteArray
{
var _local_8:Random;
var _local_9:int;
var _local_5:ByteArray = new ByteArray();
var _local_6:uint = _arg_1.position;
_arg_2 = Math.min(_arg_2, _arg_1.length, ((_local_6 + _arg_3) - 11));
_arg_1.position = _arg_2;
var _local_7:int = (_arg_2 - 1);
while ((((_local_7 >= _local_6)) && ((_arg_3 > 11)))) {
var _local_10 = --_arg_3;
_local_5[_local_10] = _arg_1[_local_7--];
};
_local_10 = --_arg_3;
_local_5[_local_10] = 0;
if (_arg_4 == 2){
_local_8 = new Random();
_local_9 = 0;
while (_arg_3 > 2) {
do {
_local_9 = _local_8.nextByte();
} while (_local_9 == 0);
var _local_11 = --_arg_3;
_local_5[_local_11] = _local_9;
};
}
else {
while (_arg_3 > 2) {
_local_11 = --_arg_3;
_local_5[_local_11] = 0xFF;
};
};
_local_11 = --_arg_3;
_local_5[_local_11] = _arg_4;
var _local_12 = --_arg_3;
_local_5[_local_12] = 0;
return (_local_5);
}
/*private*/ function pkcs1unpad(_arg_1:BigInteger, _arg_2:uint, _arg_3:uint=2):ByteArray
{
var _local_4:ByteArray = _arg_1.toByteArray();
var _local_5:ByteArray = new ByteArray();
_local_4.position = 0;
var _local_6:int;
while ((((_local_6 < _local_4.length)) && ((_local_4[_local_6] == 0)))) {
_local_6++;
};
if (((!(((_local_4.length - _local_6) == (_arg_2 - 1)))) || (!((_local_4[_local_6] == _arg_3))))){
return (null);
};
_local_6++;
while (_local_4[_local_6] != 0) {
if (++_local_6 >= _local_4.length){
return (null);
};
};
while (++_local_6 < _local_4.length) {
_local_5.writeByte(_local_4[_local_6]);
};
_local_5.position = 0;
return (_local_5);
}
public function rawpad(_arg_1:ByteArray, _arg_2:int, _arg_3:uint, _arg_4:uint=0):ByteArray
{
return (_arg_1);
}
public function rawunpad(_arg_1:BigInteger, _arg_2:uint, _arg_3:uint=0):ByteArray
{
return (_arg_1.toByteArray());
}
public function toString():String
{
return ("rsa");
}
public function dump():String
{
var _local_1 = ((((("N=" + this.n.toString(16)) + "\n") + "E=") + this.e.toString(16)) + "\n");
if (this.canDecrypt){
_local_1 = (_local_1 + (("D=" + this.d.toString(16)) + "\n"));
if (((!((this.p == null))) && (!((this.q == null))))){
_local_1 = (_local_1 + (("P=" + this.p.toString(16)) + "\n"));
_local_1 = (_local_1 + (("Q=" + this.q.toString(16)) + "\n"));
_local_1 = (_local_1 + (("DMP1=" + this.dmp1.toString(16)) + "\n"));
_local_1 = (_local_1 + (("DMQ1=" + this.dmq1.toString(16)) + "\n"));
_local_1 = (_local_1 + (("IQMP=" + this.coeff.toString(16)) + "\n"));
};
};
return (_local_1);
}
protected function doPublic(_arg_1:BigInteger):BigInteger
{
return (_arg_1.modPowInt(this.e, this.n));
}
protected function doPrivate2(_arg_1:BigInteger):BigInteger
{
if ((((this.p == null)) && ((this.q == null)))){
return (_arg_1.modPow(this.d, this.n));
};
var _local_2:BigInteger = _arg_1.mod(this.p).modPow(this.dmp1, this.p);
var _local_3:BigInteger = _arg_1.mod(this.q).modPow(this.dmq1, this.q);
while (_local_2.compareTo(_local_3) < 0) {
_local_2 = _local_2.add(this.p);
};
var _local_4:BigInteger = _local_2.subtract(_local_3).multiply(this.coeff).mod(this.p).multiply(this.q).add(_local_3);
return (_local_4);
}
protected function doPrivate(_arg_1:BigInteger):BigInteger
{
if ((((this.p == null)) || ((this.q == null)))){
return (_arg_1.modPow(this.d, this.n));
};
var _local_2:BigInteger = _arg_1.mod(this.p).modPow(this.dmp1, this.p);
var _local_3:BigInteger = _arg_1.mod(this.q).modPow(this.dmq1, this.q);
while (_local_2.compareTo(_local_3) < 0) {
_local_2 = _local_2.add(this.p);
};
return (_local_2.subtract(_local_3).multiply(this.coeff).mod(this.p).multiply(this.q).add(_local_3));
}
}
class BigInteger
{
public static const DB:int = 30;
public static const DV:int = (1 << DB);
public static const DM:int = (DV - 1);
public static const BI_FP:int = 52;
public static const FV:Number = Math.pow(2, BI_FP);
public static const F1:int = (BI_FP - DB);//22
public static const F2:int = ((2 * DB) - BI_FP);//8
public static const ZERO:BigInteger = nbv(0);
public static const ONE:BigInteger = nbv(1);
public static const lowprimes:Array = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 0x0101, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509];
public static const lplim:int = ((1 << 26) / lowprimes[(lowprimes.length - 1)]);
public var t:int;
bi_internal var s:int;
bi_internal var a:Array;
public function BigInteger(_arg_1:*=null, _arg_2:int=0, _arg_3:Boolean=false)
{
var _local_4:ByteArray;
var _local_5:int;
super();
this.a = new Array();
if ((_arg_1 is String)){
if (((_arg_2) && (!((_arg_2 == 16))))){
throw (new Error("BigInteger construction with radix!=16 is not supported."));
};
_arg_1 = Hex.toArray(_arg_1);
_arg_2 = 0;
};
if ((_arg_1 is ByteArray)){
_local_4 = (_arg_1 as ByteArray);
_local_5 = ((_arg_2) || ((_local_4.length - _local_4.position)));
this.fromArray(_local_4, _local_5, _arg_3);
};
}
public static function nbv(_arg_1:int):BigInteger
{
var _local_2:BigInteger = new (BigInteger)();
_local_2.fromInt(_arg_1);
return (_local_2);
}
public function dispose():void
{
var _local_1:Random = new Random();
var _local_2:uint;
while (_local_2 < this.a.length) {
this.a[_local_2] = _local_1.nextByte();
delete this.a[_local_2];
_local_2++;
};
this.a = null;
this.t = 0;
this.s = 0;
Memory.gc();
}
public function toString(_arg_1:Number=16):String
{
var _local_2:int;
if (this.s < 0){
return (("-" + this.negate().toString(_arg_1)));
};
switch (_arg_1){
case 2:
_local_2 = 1;
break;
case 4:
_local_2 = 2;
break;
case 8:
_local_2 = 3;
break;
case 16:
_local_2 = 4;
break;
case 32:
_local_2 = 5;
break;
};
var _local_3:int = ((1 << _local_2) - 1);
var _local_4:int;
var _local_5:Boolean;
var _local_6 = "";
var _local_7:int = this.t;
var _local_8:int = (DB - ((_local_7 * DB) % _local_2));
if (_local_7-- > 0){
if ((((_local_8 < DB)) && (((_local_4 = (this.a[_local_7] >> _local_8)) > 0)))){
_local_5 = true;
_local_6 = _local_4.toString(36);
};
while (_local_7 >= 0) {
if (_local_8 < _local_2){
_local_4 = ((this.a[_local_7] & ((1 << _local_8) - 1)) << (_local_2 - _local_8));
var _temp_1 = _local_4;
_local_8 = (_local_8 + (DB - _local_2));
_local_4 = (_temp_1 | (this.a[--_local_7] >> _local_8));
}
else {
_local_8 = (_local_8 - _local_2);
_local_4 = ((this.a[_local_7] >> _local_8) & _local_3);
if (_local_8 <= 0){
_local_8 = (_local_8 + DB);
_local_7--;
};
};
if (_local_4 > 0){
_local_5 = true;
};
if (_local_5){
_local_6 = (_local_6 + _local_4.toString(36));
};
};
};
return (((_local_5) ? _local_6 : "0"));
}
public function toArray(_arg_1:ByteArray):uint
{
var _local_2:int = 8;
var _local_3:int = ((1 << 8) - 1);
var _local_4:int;
var _local_5:int = this.t;
var _local_6:int = (DB - ((_local_5 * DB) % _local_2));
var _local_7:Boolean;
var _local_8:int;
if (_local_5-- > 0){
if ((((_local_6 < DB)) && (((_local_4 = (this.a[_local_5] >> _local_6)) > 0)))){
_local_7 = true;
_arg_1.writeByte(_local_4);
_local_8++;
};
while (_local_5 >= 0) {
if (_local_6 < _local_2){
_local_4 = ((this.a[_local_5] & ((1 << _local_6) - 1)) << (_local_2 - _local_6));
var _temp_1 = _local_4;
_local_6 = (_local_6 + (DB - _local_2));
_local_4 = (_temp_1 | (this.a[--_local_5] >> _local_6));
}
else {
_local_6 = (_local_6 - _local_2);
_local_4 = ((this.a[_local_5] >> _local_6) & _local_3);
if (_local_6 <= 0){
_local_6 = (_local_6 + DB);
_local_5--;
};
};
if (_local_4 > 0){
_local_7 = true;
};
if (_local_7){
_arg_1.writeByte(_local_4);
_local_8++;
};
};
};
return (_local_8);
}
public function valueOf():Number
{
if (this.s == -1){
return (-(this.negate().valueOf()));
};
var _local_1:Number = 1;
var _local_2:Number = 0;
var _local_3:uint;
while (_local_3 < this.t) {
_local_2 = (_local_2 + (this.a[_local_3] * _local_1));
_local_1 = (_local_1 * DV);
_local_3++;
};
return (_local_2);
}
public function negate():BigInteger
{
var _local_1:BigInteger = this.nbi();
ZERO.subTo(this, _local_1);
return (_local_1);
}
public function abs():BigInteger
{
return ((((this.s)<0) ? this.negate() : this));
}
public function compareTo(_arg_1:BigInteger):int
{
var _local_2:int = (this.s - _arg_1.s);
if (_local_2 != 0){
return (_local_2);
};
var _local_3:int = this.t;
_local_2 = (_local_3 - _arg_1.t);
if (_local_2 != 0){
return (_local_2);
};
while (--_local_3 >= 0) {
_local_2 = (this.a[_local_3] - _arg_1.a[_local_3]);
if (_local_2 != 0){
return (_local_2);
};
};
return (0);
}
bi_internal function nbits(_arg_1:int):int
{
var _local_3:int;
var _local_2:int = 1;
_local_3 = (_arg_1 >>> 16);
if (_local_3 != 0){
_arg_1 = _local_3;
_local_2 = (_local_2 + 16);
};
_local_3 = (_arg_1 >> 8);
if (_local_3 != 0){
_arg_1 = _local_3;
_local_2 = (_local_2 + 8);
};
_local_3 = (_arg_1 >> 4);
if (_local_3 != 0){
_arg_1 = _local_3;
_local_2 = (_local_2 + 4);
};
_local_3 = (_arg_1 >> 2);
if (_local_3 != 0){
_arg_1 = _local_3;
_local_2 = (_local_2 + 2);
};
_local_3 = (_arg_1 >> 1);
if (_local_3 != 0){
_arg_1 = _local_3;
_local_2 = (_local_2 + 1);
};
return (_local_2);
}
public function bitLength():int
{
if (this.t <= 0){
return (0);
};
return (((DB * (this.t - 1)) + this.nbits((this.a[(this.t - 1)] ^ (this.s & DM)))));
}
public function mod(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = this.nbi();
this.abs().divRemTo(_arg_1, null, _local_2);
if ((((this.s < 0)) && ((_local_2.compareTo(ZERO) > 0)))){
_arg_1.subTo(_local_2, _local_2);
};
return (_local_2);
}
public function modPowInt(_arg_1:int, _arg_2:BigInteger):BigInteger
{
var _local_3:IReduction;
if ((((_arg_1 < 0x0100)) || (_arg_2.isEven()))){
_local_3 = new ClassicReduction(_arg_2);
}
else {
_local_3 = new MontgomeryReduction(_arg_2);
};
return (this.exp(_arg_1, _local_3));
}
bi_internal function copyTo(_arg_1:BigInteger):void
{
var _local_2:int = (this.t - 1);
while (_local_2 >= 0) {
_arg_1.a[_local_2] = this.a[_local_2];
_local_2--;
};
_arg_1.t = this.t;
_arg_1.s = this.s;
}
bi_internal function fromInt(_arg_1:int):void
{
this.t = 1;
this.s = (((_arg_1)<0) ? -1 : 0);
if (_arg_1 > 0){
this.a[0] = _arg_1;
}
else {
if (_arg_1 < -1){
this.a[0] = (_arg_1 + DV);
}
else {
this.t = 0;
};
};
}
bi_internal function fromArray(_arg_1:ByteArray, _arg_2:int, _arg_3:Boolean=false):void
{
var _local_8:int;
var _local_4:int = _arg_1.position;
var _local_5:int = (_local_4 + _arg_2);
var _local_6:int;
var _local_7:int = 8;
this.t = 0;
this.s = 0;
while (--_local_5 >= _local_4) {
_local_8 = (((_local_5 < _arg_1.length)) ? _arg_1[_local_5] : 0);
if (_local_6 == 0){
var _local_9 = this.t++;
this.a[_local_9] = _local_8;
}
else {
if ((_local_6 + _local_7) > DB){
this.a[(this.t - 1)] = (this.a[(this.t - 1)] | ((_local_8 & ((1 << (DB - _local_6)) - 1)) << _local_6));
_local_9 = this.t++;
this.a[_local_9] = (_local_8 >> (DB - _local_6));
}
else {
this.a[(this.t - 1)] = (this.a[(this.t - 1)] | (_local_8 << _local_6));
};
};
_local_6 = (_local_6 + _local_7);
if (_local_6 >= DB){
_local_6 = (_local_6 - DB);
};
};
if (((!(_arg_3)) && (((_arg_1[0] & 128) == 128)))){
this.s = -1;
if (_local_6 > 0){
this.a[(this.t - 1)] = (this.a[(this.t - 1)] | (((1 << (DB - _local_6)) - 1) << _local_6));
};
};
this.clamp();
_arg_1.position = Math.min((_local_4 + _arg_2), _arg_1.length);
}
bi_internal function clamp():void
{
var _local_1 = (this.s & DM);
while ((((this.t > 0)) && ((this.a[(this.t - 1)] == _local_1)))) {
this.t--;
};
}
bi_internal function dlShiftTo(_arg_1:int, _arg_2:BigInteger):void
{
var _local_3:int;
_local_3 = (this.t - 1);
while (_local_3 >= 0) {
_arg_2.a[(_local_3 + _arg_1)] = this.a[_local_3];
_local_3--;
};
_local_3 = (_arg_1 - 1);
while (_local_3 >= 0) {
_arg_2.a[_local_3] = 0;
_local_3--;
};
_arg_2.t = (this.t + _arg_1);
_arg_2.s = this.s;
}
bi_internal function drShiftTo(_arg_1:int, _arg_2:BigInteger):void
{
var _local_3:int;
_local_3 = _arg_1;
while (_local_3 < this.t) {
_arg_2.a[(_local_3 - _arg_1)] = this.a[_local_3];
_local_3++;
};
_arg_2.t = Math.max((this.t - _arg_1), 0);
_arg_2.s = this.s;
}
bi_internal function lShiftTo(_arg_1:int, _arg_2:BigInteger):void
{
var _local_8:int;
var _local_3:int = (_arg_1 % DB);
var _local_4:int = (DB - _local_3);
var _local_5:int = ((1 << _local_4) - 1);
var _local_6:int = (_arg_1 / DB);
var _local_7 = ((this.s << _local_3) & DM);
_local_8 = (this.t - 1);
while (_local_8 >= 0) {
_arg_2.a[((_local_8 + _local_6) + 1)] = ((this.a[_local_8] >> _local_4) | _local_7);
_local_7 = ((this.a[_local_8] & _local_5) << _local_3);
_local_8--;
};
_local_8 = (_local_6 - 1);
while (_local_8 >= 0) {
_arg_2.a[_local_8] = 0;
_local_8--;
};
_arg_2.a[_local_6] = _local_7;
_arg_2.t = ((this.t + _local_6) + 1);
_arg_2.s = this.s;
_arg_2.clamp();
}
bi_internal function rShiftTo(_arg_1:int, _arg_2:BigInteger):void
{
var _local_7:int;
_arg_2.s = this.s;
var _local_3:int = (_arg_1 / DB);
if (_local_3 >= this.t){
_arg_2.t = 0;
return;
};
var _local_4:int = (_arg_1 % DB);
var _local_5:int = (DB - _local_4);
var _local_6:int = ((1 << _local_4) - 1);
_arg_2.a[0] = (this.a[_local_3] >> _local_4);
_local_7 = (_local_3 + 1);
while (_local_7 < this.t) {
_arg_2.a[((_local_7 - _local_3) - 1)] = (_arg_2.a[((_local_7 - _local_3) - 1)] | ((this.a[_local_7] & _local_6) << _local_5));
_arg_2.a[(_local_7 - _local_3)] = (this.a[_local_7] >> _local_4);
_local_7++;
};
if (_local_4 > 0){
_arg_2.a[((this.t - _local_3) - 1)] = (_arg_2.a[((this.t - _local_3) - 1)] | ((this.s & _local_6) << _local_5));
};
_arg_2.t = (this.t - _local_3);
_arg_2.clamp();
}
bi_internal function subTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
var _local_3:int;
var _local_4:int;
var _local_5:int = Math.min(_arg_1.t, this.t);
while (_local_3 < _local_5) {
_local_4 = (_local_4 + (this.a[_local_3] - _arg_1.a[_local_3]));
var _local_6 = _local_3++;
_arg_2.a[_local_6] = (_local_4 & DM);
_local_4 = (_local_4 >> DB);
};
if (_arg_1.t < this.t){
_local_4 = (_local_4 - _arg_1.s);
while (_local_3 < this.t) {
_local_4 = (_local_4 + this.a[_local_3]);
_local_6 = _local_3++;
_arg_2.a[_local_6] = (_local_4 & DM);
_local_4 = (_local_4 >> DB);
};
_local_4 = (_local_4 + this.s);
}
else {
_local_4 = (_local_4 + this.s);
while (_local_3 < _arg_1.t) {
_local_4 = (_local_4 - _arg_1.a[_local_3]);
_local_6 = _local_3++;
_arg_2.a[_local_6] = (_local_4 & DM);
_local_4 = (_local_4 >> DB);
};
_local_4 = (_local_4 - _arg_1.s);
};
_arg_2.s = (((_local_4)<0) ? -1 : 0);
if (_local_4 < -1){
_local_6 = _local_3++;
_arg_2.a[_local_6] = (DV + _local_4);
}
else {
if (_local_4 > 0){
_local_6 = _local_3++;
_arg_2.a[_local_6] = _local_4;
};
};
_arg_2.t = _local_3;
_arg_2.clamp();
}
bi_internal function am(_arg_1:int, _arg_2:int, _arg_3:BigInteger, _arg_4:int, _arg_5:int, _arg_6:int):int
{
var _local_9:int;
var _local_10:int;
var _local_11:int;
var _local_7 = (_arg_2 & 32767);
var _local_8 = (_arg_2 >> 15);
while (--_arg_6 >= 0) {
_local_9 = (this.a[_arg_1] & 32767);
_local_10 = (this.a[_arg_1++] >> 15);
_local_11 = ((_local_8 * _local_9) + (_local_10 * _local_7));
_local_9 = ((((_local_7 * _local_9) + ((_local_11 & 32767) << 15)) + _arg_3.a[_arg_4]) + (_arg_5 & 1073741823));
_arg_5 = ((((_local_9 >>> 30) + (_local_11 >>> 15)) + (_local_8 * _local_10)) + (_arg_5 >>> 30));
var _local_12 = _arg_4++;
_arg_3.a[_local_12] = (_local_9 & 1073741823);
};
return (_arg_5);
}
bi_internal function multiplyTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
var _local_3:BigInteger = this.abs();
var _local_4:BigInteger = _arg_1.abs();
var _local_5:int = _local_3.t;
_arg_2.t = (_local_5 + _local_4.t);
while (--_local_5 >= 0) {
_arg_2.a[_local_5] = 0;
};
_local_5 = 0;
while (_local_5 < _local_4.t) {
_arg_2.a[(_local_5 + _local_3.t)] = _local_3.am(0, _local_4.a[_local_5], _arg_2, _local_5, 0, _local_3.t);
_local_5++;
};
_arg_2.s = 0;
_arg_2.clamp();
if (this.s != _arg_1.s){
ZERO.subTo(_arg_2, _arg_2);
};
}
bi_internal function squareTo(_arg_1:BigInteger):void
{
var _local_4:int;
var _local_2:BigInteger = this.abs();
var _local_3:int = (_arg_1.t = (2 * _local_2.t));
while (--_local_3 >= 0) {
_arg_1.a[_local_3] = 0;
};
_local_3 = 0;
while (_local_3 < (_local_2.t - 1)) {
_local_4 = _local_2.am(_local_3, _local_2.a[_local_3], _arg_1, (2 * _local_3), 0, 1);
if ((_arg_1.a[(_local_3 + _local_2.t)] = (_arg_1.a[(_local_3 + _local_2.t)] + _local_2.am((_local_3 + 1), (2 * _local_2.a[_local_3]), _arg_1, ((2 * _local_3) + 1), _local_4, ((_local_2.t - _local_3) - 1)))) >= DV){
_arg_1.a[(_local_3 + _local_2.t)] = (_arg_1.a[(_local_3 + _local_2.t)] - DV);
_arg_1.a[((_local_3 + _local_2.t) + 1)] = 1;
};
_local_3++;
};
if (_arg_1.t > 0){
_arg_1.a[(_arg_1.t - 1)] = (_arg_1.a[(_arg_1.t - 1)] + _local_2.am(_local_3, _local_2.a[_local_3], _arg_1, (2 * _local_3), 0, 1));
};
_arg_1.s = 0;
_arg_1.clamp();
}
bi_internal function divRemTo(m:BigInteger, q:BigInteger=null, r:BigInteger=null):void
{
var qd:int;
var pm:BigInteger = m.abs();
if (pm.t <= 0){
return;
};
var pt:BigInteger = this.abs();
if (pt.t < pm.t){
if (q != null){
q.fromInt(0);
};
if (r != null){
this.copyTo(r);
};
return;
};
if (r == null){
r = this.nbi();
};
var y:BigInteger = this.nbi();
var ts:int = this.s;
var ms:int = m.s;
var nsh:int = (DB - this.nbits(pm.a[(pm.t - 1)]));
if (nsh > 0){
pm.lShiftTo(nsh, y);
pt.lShiftTo(nsh, r);
}
else {
pm.copyTo(y);
pt.copyTo(r);
};
var ys:int = y.t;
var y0:int = y.a[(ys - 1)];
if (y0 == 0){
return;
};
var yt:Number = ((y0 * (1 << F1)) + (((ys)>1) ? (y.a[(ys - 2)] >> F2) : 0));
var d1:Number = (FV / yt);
var d2:Number = ((1 << F1) / yt);
var e:Number = (1 << F2);
var i:int = r.t;
var j:int = (i - ys);
var t:BigInteger = (((q)==null) ? this.nbi() : q);
y.dlShiftTo(j, t);
if (r.compareTo(t) >= 0){
var _local_5 = r.t++;
r.a[_local_5] = 1;
r.subTo(t, r);
};
ONE.dlShiftTo(ys, t);
t.subTo(y, y);
while (y.t < ys) {
y.(y.t++, 0); //not popped
};
while (--j >= 0) {
qd = (((r.a[--i])==y0) ? DM : ((Number(r.a[i]) * d1) + ((Number(r.a[(i - 1)]) + e) * d2)));
if ((r.a[i] = (r.a[i] + y.am(0, qd, r, j, 0, ys))) < qd){
y.dlShiftTo(j, t);
r.subTo(t, r);
while ((qd = (qd - 1)), r.a[i] < qd) {
r.subTo(t, r);
};
};
};
if (q != null){
r.drShiftTo(ys, q);
if (ts != ms){
ZERO.subTo(q, q);
};
};
r.t = ys;
r.clamp();
if (nsh > 0){
r.rShiftTo(nsh, r);
};
if (ts < 0){
ZERO.subTo(r, r);
};
}
bi_internal function invDigit():int
{
if (this.t < 1){
return (0);
};
var _local_1:int = this.a[0];
if ((_local_1 & 1) == 0){
return (0);
};
var _local_2 = (_local_1 & 3);
_local_2 = ((_local_2 * (2 - ((_local_1 & 15) * _local_2))) & 15);
_local_2 = ((_local_2 * (2 - ((_local_1 & 0xFF) * _local_2))) & 0xFF);
_local_2 = ((_local_2 * (2 - (((_local_1 & 0xFFFF) * _local_2) & 0xFFFF))) & 0xFFFF);
_local_2 = ((_local_2 * (2 - ((_local_1 * _local_2) % DV))) % DV);
return ((((_local_2)>0) ? (DV - _local_2) : -(_local_2)));
}
bi_internal function isEven():Boolean
{
return (((((this.t)>0) ? (this.a[0] & 1) : this.s) == 0));
}
bi_internal function exp(_arg_1:int, _arg_2:IReduction):BigInteger
{
var _local_7:BigInteger;
if ((((_arg_1 > 0xFFFFFFFF)) || ((_arg_1 < 1)))){
return (ONE);
};
var _local_3:BigInteger = this.nbi();
var _local_4:BigInteger = this.nbi();
var _local_5:BigInteger = _arg_2.convert(this);
var _local_6:int = (this.nbits(_arg_1) - 1);
_local_5.copyTo(_local_3);
while (--_local_6 >= 0) {
_arg_2.sqrTo(_local_3, _local_4);
if ((_arg_1 & (1 << _local_6)) > 0){
_arg_2.mulTo(_local_4, _local_5, _local_3);
}
else {
_local_7 = _local_3;
_local_3 = _local_4;
_local_4 = _local_7;
};
};
return (_arg_2.revert(_local_3));
}
bi_internal function intAt(_arg_1:String, _arg_2:int):int
{
return (parseInt(_arg_1.charAt(_arg_2), 36));
}
protected function nbi()
{
return (new BigInteger());
}
public function clone():BigInteger
{
var _local_1:BigInteger = new BigInteger();
this.copyTo(_local_1);
return (_local_1);
}
public function intValue():int
{
if (this.s < 0){
if (this.t == 1){
return ((this.a[0] - DV));
};
if (this.t == 0){
return (-1);
};
}
else {
if (this.t == 1){
return (this.a[0]);
};
if (this.t == 0){
return (0);
};
};
return ((((this.a[1] & ((1 << (32 - DB)) - 1)) << DB) | this.a[0]));
}
public function byteValue():int
{
return ((((this.t)==0) ? this.s : ((this.a[0] << 24) >> 24)));
}
public function shortValue():int
{
return ((((this.t)==0) ? this.s : ((this.a[0] << 16) >> 16)));
}
protected function chunkSize(_arg_1:Number):int
{
return (Math.floor(((Math.LN2 * DB) / Math.log(_arg_1))));
}
public function sigNum():int
{
if (this.s < 0){
return (-1);
};
if ((((this.t <= 0)) || ((((this.t == 1)) && ((this.a[0] <= 0)))))){
return (0);
};
return (1);
}
protected function toRadix(_arg_1:uint=10):String
{
if ((((((this.sigNum() == 0)) || ((_arg_1 < 2)))) || ((_arg_1 > 32)))){
return ("0");
};
var _local_2:int = this.chunkSize(_arg_1);
var _local_3:Number = Math.pow(_arg_1, _local_2);
var _local_4:BigInteger = nbv(_local_3);
var _local_5:BigInteger = this.nbi();
var _local_6:BigInteger = this.nbi();
var _local_7 = "";
this.divRemTo(_local_4, _local_5, _local_6);
while (_local_5.sigNum() > 0) {
_local_7 = ((_local_3 + _local_6.intValue()).toString(_arg_1).substr(1) + _local_7);
_local_5.divRemTo(_local_4, _local_5, _local_6);
};
return ((_local_6.intValue().toString(_arg_1) + _local_7));
}
protected function fromRadix(_arg_1:String, _arg_2:int=10):void
{
var _local_9:int;
this.fromInt(0);
var _local_3:int = this.chunkSize(_arg_2);
var _local_4:Number = Math.pow(_arg_2, _local_3);
var _local_5:Boolean;
var _local_6:int;
var _local_7:int;
var _local_8:int;
while (_local_8 < _arg_1.length) {
_local_9 = this.intAt(_arg_1, _local_8);
if (_local_9 < 0){
if ((((_arg_1.charAt(_local_8) == "-")) && ((this.sigNum() == 0)))){
_local_5 = true;
};
}
else {
_local_7 = ((_arg_2 * _local_7) + _local_9);
if (++_local_6 >= _local_3){
this.dMultiply(_local_4);
this.dAddOffset(_local_7, 0);
_local_6 = 0;
_local_7 = 0;
};
};
_local_8++;
};
if (_local_6 > 0){
this.dMultiply(Math.pow(_arg_2, _local_6));
this.dAddOffset(_local_7, 0);
};
if (_local_5){
BigInteger.ZERO.subTo(this, this);
};
}
public function toByteArray():ByteArray
{
var _local_4:int;
var _local_1:int = this.t;
var _local_2:ByteArray = new ByteArray();
_local_2[0] = this.s;
var _local_3:int = (DB - ((_local_1 * DB) % 8));
var _local_5:int;
if (_local_1-- > 0){
if ((((_local_3 < DB)) && (!(((_local_4 = (this.a[_local_1] >> _local_3)) == ((this.s & DM) >> _local_3)))))){
var _local_6 = _local_5++;
_local_2[_local_6] = (_local_4 | (this.s << (DB - _local_3)));
};
while (_local_1 >= 0) {
if (_local_3 < 8){
_local_4 = ((this.a[_local_1] & ((1 << _local_3) - 1)) << (8 - _local_3));
var _temp_1 = _local_4;
_local_3 = (_local_3 + (DB - 8));
_local_4 = (_temp_1 | (this.a[--_local_1] >> _local_3));
}
else {
_local_3 = (_local_3 - 8);
_local_4 = ((this.a[_local_1] >> _local_3) & 0xFF);
if (_local_3 <= 0){
_local_3 = (_local_3 + DB);
_local_1--;
};
};
if ((_local_4 & 128) != 0){
_local_4 = (_local_4 | -256);
};
if ((((_local_5 == 0)) && (!(((this.s & 128) == (_local_4 & 128)))))){
_local_5++;
};
if ((((_local_5 > 0)) || (!((_local_4 == this.s))))){
_local_6 = _local_5++;
_local_2[_local_6] = _local_4;
};
};
};
return (_local_2);
}
public function equals(_arg_1:BigInteger):Boolean
{
return ((this.compareTo(_arg_1) == 0));
}
public function min(_arg_1:BigInteger):BigInteger
{
return ((((this.compareTo(_arg_1))<0) ? this : _arg_1));
}
public function max(_arg_1:BigInteger):BigInteger
{
return ((((this.compareTo(_arg_1))>0) ? this : _arg_1));
}
protected function bitwiseTo(_arg_1:BigInteger, _arg_2:Function, _arg_3:BigInteger):void
{
var _local_4:int;
var _local_5:int;
var _local_6:int = Math.min(_arg_1.t, this.t);
_local_4 = 0;
while (_local_4 < _local_6) {
_arg_3.a[_local_4] = _arg_2(this.a[_local_4], _arg_1.a[_local_4]);
_local_4++;
};
if (_arg_1.t < this.t){
_local_5 = (_arg_1.s & DM);
_local_4 = _local_6;
while (_local_4 < this.t) {
_arg_3.a[_local_4] = _arg_2(this.a[_local_4], _local_5);
_local_4++;
};
_arg_3.t = this.t;
}
else {
_local_5 = (this.s & DM);
_local_4 = _local_6;
while (_local_4 < _arg_1.t) {
_arg_3.a[_local_4] = _arg_2(_local_5, _arg_1.a[_local_4]);
_local_4++;
};
_arg_3.t = _arg_1.t;
};
_arg_3.s = _arg_2(this.s, _arg_1.s);
_arg_3.clamp();
}
/*private*/ function op_and(_arg_1:int, _arg_2:int):int
{
return ((_arg_1 & _arg_2));
}
public function and(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.bitwiseTo(_arg_1, this.op_and, _local_2);
return (_local_2);
}
/*private*/ function op_or(_arg_1:int, _arg_2:int):int
{
return ((_arg_1 | _arg_2));
}
public function or(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.bitwiseTo(_arg_1, this.op_or, _local_2);
return (_local_2);
}
/*private*/ function op_xor(_arg_1:int, _arg_2:int):int
{
return ((_arg_1 ^ _arg_2));
}
public function xor(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.bitwiseTo(_arg_1, this.op_xor, _local_2);
return (_local_2);
}
/*private*/ function op_andnot(_arg_1:int, _arg_2:int):int
{
return ((_arg_1 & ~(_arg_2)));
}
public function andNot(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.bitwiseTo(_arg_1, this.op_andnot, _local_2);
return (_local_2);
}
public function not():BigInteger
{
var _local_1:BigInteger = new BigInteger();
var _local_2:int;
while (_local_2 < this.t) {
_local_1[_local_2] = (DM & ~(this.a[_local_2]));
_local_2++;
};
_local_1.t = this.t;
_local_1.s = ~(this.s);
return (_local_1);
}
public function shiftLeft(_arg_1:int):BigInteger
{
var _local_2:BigInteger = new BigInteger();
if (_arg_1 < 0){
this.rShiftTo(-(_arg_1), _local_2);
}
else {
this.lShiftTo(_arg_1, _local_2);
};
return (_local_2);
}
public function shiftRight(_arg_1:int):BigInteger
{
var _local_2:BigInteger = new BigInteger();
if (_arg_1 < 0){
this.lShiftTo(-(_arg_1), _local_2);
}
else {
this.rShiftTo(_arg_1, _local_2);
};
return (_local_2);
}
/*private*/ function lbit(_arg_1:int):int
{
if (_arg_1 == 0){
return (-1);
};
var _local_2:int;
if ((_arg_1 & 0xFFFF) == 0){
_arg_1 = (_arg_1 >> 16);
_local_2 = (_local_2 + 16);
};
if ((_arg_1 & 0xFF) == 0){
_arg_1 = (_arg_1 >> 8);
_local_2 = (_local_2 + 8);
};
if ((_arg_1 & 15) == 0){
_arg_1 = (_arg_1 >> 4);
_local_2 = (_local_2 + 4);
};
if ((_arg_1 & 3) == 0){
_arg_1 = (_arg_1 >> 2);
_local_2 = (_local_2 + 2);
};
if ((_arg_1 & 1) == 0){
_local_2++;
};
return (_local_2);
}
public function getLowestSetBit():int
{
var _local_1:int;
while (_local_1 < this.t) {
if (this.a[_local_1] != 0){
return (((_local_1 * DB) + this.lbit(this.a[_local_1])));
};
_local_1++;
};
if (this.s < 0){
return ((this.t * DB));
};
return (-1);
}
/*private*/ function cbit(_arg_1:int):int
{
var _local_2:uint;
while (_arg_1 != 0) {
_arg_1 = (_arg_1 & (_arg_1 - 1));
_local_2++;
};
return (_local_2);
}
public function bitCount():int
{
var _local_1:int;
var _local_2 = (this.s & DM);
var _local_3:int;
while (_local_3 < this.t) {
_local_1 = (_local_1 + this.cbit((this.a[_local_3] ^ _local_2)));
_local_3++;
};
return (_local_1);
}
public function testBit(_arg_1:int):Boolean
{
var _local_2:int = Math.floor((_arg_1 / DB));
if (_local_2 >= this.t){
return (!((this.s == 0)));
};
return (!(((this.a[_local_2] & (1 << (_arg_1 % DB))) == 0)));
}
protected function changeBit(_arg_1:int, _arg_2:Function):BigInteger
{
var _local_3:BigInteger = BigInteger.ONE.shiftLeft(_arg_1);
this.bitwiseTo(_local_3, _arg_2, _local_3);
return (_local_3);
}
public function setBit(_arg_1:int):BigInteger
{
return (this.changeBit(_arg_1, this.op_or));
}
public function clearBit(_arg_1:int):BigInteger
{
return (this.changeBit(_arg_1, this.op_andnot));
}
public function flipBit(_arg_1:int):BigInteger
{
return (this.changeBit(_arg_1, this.op_xor));
}
protected function addTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
var _local_3:int;
var _local_4:int;
var _local_5:int = Math.min(_arg_1.t, this.t);
while (_local_3 < _local_5) {
_local_4 = (_local_4 + (this.a[_local_3] + _arg_1.a[_local_3]));
var _local_6 = _local_3++;
_arg_2.a[_local_6] = (_local_4 & DM);
_local_4 = (_local_4 >> DB);
};
if (_arg_1.t < this.t){
_local_4 = (_local_4 + _arg_1.s);
while (_local_3 < this.t) {
_local_4 = (_local_4 + this.a[_local_3]);
_local_6 = _local_3++;
_arg_2.a[_local_6] = (_local_4 & DM);
_local_4 = (_local_4 >> DB);
};
_local_4 = (_local_4 + this.s);
}
else {
_local_4 = (_local_4 + this.s);
while (_local_3 < _arg_1.t) {
_local_4 = (_local_4 + _arg_1.a[_local_3]);
_local_6 = _local_3++;
_arg_2.a[_local_6] = (_local_4 & DM);
_local_4 = (_local_4 >> DB);
};
_local_4 = (_local_4 + _arg_1.s);
};
_arg_2.s = (((_local_4)<0) ? -1 : 0);
if (_local_4 > 0){
_local_6 = _local_3++;
_arg_2.a[_local_6] = _local_4;
}
else {
if (_local_4 < -1){
_local_6 = _local_3++;
_arg_2.a[_local_6] = (DV + _local_4);
};
};
_arg_2.t = _local_3;
_arg_2.clamp();
}
public function add(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.addTo(_arg_1, _local_2);
return (_local_2);
}
public function subtract(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.subTo(_arg_1, _local_2);
return (_local_2);
}
public function multiply(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.multiplyTo(_arg_1, _local_2);
return (_local_2);
}
public function divide(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.divRemTo(_arg_1, _local_2, null);
return (_local_2);
}
public function remainder(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger = new BigInteger();
this.divRemTo(_arg_1, null, _local_2);
return (_local_2);
}
public function divideAndRemainder(_arg_1:BigInteger):Array
{
var _local_2:BigInteger = new BigInteger();
var _local_3:BigInteger = new BigInteger();
this.divRemTo(_arg_1, _local_2, _local_3);
return ([_local_2, _local_3]);
}
bi_internal function dMultiply(_arg_1:int):void
{
this.a[this.t] = this.am(0, (_arg_1 - 1), this, 0, 0, this.t);
this.t++;
this.clamp();
}
bi_internal function dAddOffset(_arg_1:int, _arg_2:int):void
{
while (this.t <= _arg_2) {
var _local_3 = this.t++;
this.a[_local_3] = 0;
};
this.a[_arg_2] = (this.a[_arg_2] + _arg_1);
while (this.a[_arg_2] >= DV) {
this.a[_arg_2] = (this.a[_arg_2] - DV);
if (++_arg_2 >= this.t){
_local_3 = this.t++;
this.a[_local_3] = 0;
};
_local_3 = this.a;
var _local_4 = _arg_2;
var _local_5 = (_local_3[_local_4] + 1);
_local_3[_local_4] = _local_5;
};
}
public function pow(_arg_1:int):BigInteger
{
return (this.exp(_arg_1, new NullReduction()));
}
bi_internal function multiplyLowerTo(_arg_1:BigInteger, _arg_2:int, _arg_3:BigInteger):void
{
var _local_5:int;
var _local_4:int = Math.min((this.t + _arg_1.t), _arg_2);
_arg_3.s = 0;
_arg_3.t = _local_4;
while (_local_4 > 0) {
var _local_6 = --_local_4;
_arg_3.a[_local_6] = 0;
};
_local_5 = (_arg_3.t - this.t);
while (_local_4 < _local_5) {
_arg_3.a[(_local_4 + this.t)] = this.am(0, _arg_1.a[_local_4], _arg_3, _local_4, 0, this.t);
_local_4++;
};
_local_5 = Math.min(_arg_1.t, _arg_2);
while (_local_4 < _local_5) {
this.am(0, _arg_1.a[_local_4], _arg_3, _local_4, 0, (_arg_2 - _local_4));
_local_4++;
};
_arg_3.clamp();
}
bi_internal function multiplyUpperTo(_arg_1:BigInteger, _arg_2:int, _arg_3:BigInteger):void
{
_arg_2--;
var _local_4:int = (_arg_3.t = ((this.t + _arg_1.t) - _arg_2));
_arg_3.s = 0;
while (--_local_4 >= 0) {
_arg_3.a[_local_4] = 0;
};
_local_4 = Math.max((_arg_2 - this.t), 0);
while (_local_4 < _arg_1.t) {
_arg_3.a[((this.t + _local_4) - _arg_2)] = this.am((_arg_2 - _local_4), _arg_1.a[_local_4], _arg_3, 0, 0, ((this.t + _local_4) - _arg_2));
_local_4++;
};
_arg_3.clamp();
_arg_3.drShiftTo(1, _arg_3);
}
public function modPow(_arg_1:BigInteger, _arg_2:BigInteger):BigInteger
{
var _local_4:int;
var _local_6:IReduction;
var _local_12:int;
var _local_15:BigInteger;
var _local_16:BigInteger;
var _local_3:int = _arg_1.bitLength();
var _local_5:BigInteger = nbv(1);
if (_local_3 <= 0){
return (_local_5);
};
if (_local_3 < 18){
_local_4 = 1;
}
else {
if (_local_3 < 48){
_local_4 = 3;
}
else {
if (_local_3 < 144){
_local_4 = 4;
}
else {
if (_local_3 < 0x0300){
_local_4 = 5;
}
else {
_local_4 = 6;
};
};
};
};
if (_local_3 < 8){
_local_6 = new ClassicReduction(_arg_2);
}
else {
if (_arg_2.isEven()){
_local_6 = new BarrettReduction(_arg_2);
}
else {
_local_6 = new MontgomeryReduction(_arg_2);
};
};
var _local_7:Array = [];
var _local_8:int = 3;
var _local_9:int = (_local_4 - 1);
var _local_10:int = ((1 << _local_4) - 1);
_local_7[1] = _local_6.convert(this);
if (_local_4 > 1){
_local_16 = new BigInteger();
_local_6.sqrTo(_local_7[1], _local_16);
while (_local_8 <= _local_10) {
_local_7[_local_8] = new BigInteger();
_local_6.mulTo(_local_16, _local_7[(_local_8 - 2)], _local_7[_local_8]);
_local_8 = (_local_8 + 2);
};
};
var _local_11:int = (_arg_1.t - 1);
var _local_13:Boolean = true;
var _local_14:BigInteger = new BigInteger();
_local_3 = (this.nbits(_arg_1.a[_local_11]) - 1);
while (_local_11 >= 0) {
if (_local_3 >= _local_9){
_local_12 = ((_arg_1.a[_local_11] >> (_local_3 - _local_9)) & _local_10);
}
else {
_local_12 = ((_arg_1.a[_local_11] & ((1 << (_local_3 + 1)) - 1)) << (_local_9 - _local_3));
if (_local_11 > 0){
_local_12 = (_local_12 | (_arg_1.a[(_local_11 - 1)] >> ((DB + _local_3) - _local_9)));
};
};
_local_8 = _local_4;
while ((_local_12 & 1) == 0) {
_local_12 = (_local_12 >> 1);
_local_8--;
};
_local_3 = (_local_3 - _local_8);
if (_local_3 < 0){
_local_3 = (_local_3 + DB);
_local_11--;
};
if (_local_13){
_local_7[_local_12].copyTo(_local_5);
_local_13 = false;
}
else {
while (_local_8 > 1) {
_local_6.sqrTo(_local_5, _local_14);
_local_6.sqrTo(_local_14, _local_5);
_local_8 = (_local_8 - 2);
};
if (_local_8 > 0){
_local_6.sqrTo(_local_5, _local_14);
}
else {
_local_15 = _local_5;
_local_5 = _local_14;
_local_14 = _local_15;
};
_local_6.mulTo(_local_14, _local_7[_local_12], _local_5);
};
while ((((_local_11 >= 0)) && (((_arg_1.a[_local_11] & (1 << _local_3)) == 0)))) {
_local_6.sqrTo(_local_5, _local_14);
_local_15 = _local_5;
_local_5 = _local_14;
_local_14 = _local_15;
if (--_local_3 < 0){
_local_3 = (DB - 1);
_local_11--;
};
};
};
return (_local_6.revert(_local_5));
}
public function gcd(_arg_1:BigInteger):BigInteger
{
var _local_6:BigInteger;
var _local_2:BigInteger = (((this.s)<0) ? this.negate() : this.clone());
var _local_3:BigInteger = (((_arg_1.s)<0) ? _arg_1.negate() : _arg_1.clone());
if (_local_2.compareTo(_local_3) < 0){
_local_6 = _local_2;
_local_2 = _local_3;
_local_3 = _local_6;
};
var _local_4:int = _local_2.getLowestSetBit();
var _local_5:int = _local_3.getLowestSetBit();
if (_local_5 < 0){
return (_local_2);
};
if (_local_4 < _local_5){
_local_5 = _local_4;
};
if (_local_5 > 0){
_local_2.rShiftTo(_local_5, _local_2);
_local_3.rShiftTo(_local_5, _local_3);
};
while (_local_2.sigNum() > 0) {
_local_4 = _local_2.getLowestSetBit();
if (_local_4 > 0){
_local_2.rShiftTo(_local_4, _local_2);
};
_local_4 = _local_3.getLowestSetBit();
if (_local_4 > 0){
_local_3.rShiftTo(_local_4, _local_3);
};
if (_local_2.compareTo(_local_3) >= 0){
_local_2.subTo(_local_3, _local_2);
_local_2.rShiftTo(1, _local_2);
}
else {
_local_3.subTo(_local_2, _local_3);
_local_3.rShiftTo(1, _local_3);
};
};
if (_local_5 > 0){
_local_3.lShiftTo(_local_5, _local_3);
};
return (_local_3);
}
protected function modInt(_arg_1:int):int
{
var _local_4:int;
if (_arg_1 <= 0){
return (0);
};
var _local_2:int = (DV % _arg_1);
var _local_3:int = (((this.s)<0) ? (_arg_1 - 1) : 0);
if (this.t > 0){
if (_local_2 == 0){
_local_3 = (this.a[0] % _arg_1);
}
else {
_local_4 = (this.t - 1);
while (_local_4 >= 0) {
_local_3 = (((_local_2 * _local_3) + this.a[_local_4]) % _arg_1);
_local_4--;
};
};
};
return (_local_3);
}
public function modInverse(_arg_1:BigInteger):BigInteger
{
var _local_2:Boolean = _arg_1.isEven();
if (((((this.isEven()) && (_local_2))) || ((_arg_1.sigNum() == 0)))){
return (BigInteger.ZERO);
};
var _local_3:BigInteger = _arg_1.clone();
var _local_4:BigInteger = this.clone();
var _local_5:BigInteger = nbv(1);
var _local_6:BigInteger = nbv(0);
var _local_7:BigInteger = nbv(0);
var _local_8:BigInteger = nbv(1);
while (_local_3.sigNum() != 0) {
while (_local_3.isEven()) {
_local_3.rShiftTo(1, _local_3);
if (_local_2){
if (((!(_local_5.isEven())) || (!(_local_6.isEven())))){
_local_5.addTo(this, _local_5);
_local_6.subTo(_arg_1, _local_6);
};
_local_5.rShiftTo(1, _local_5);
}
else {
if (!_local_6.isEven()){
_local_6.subTo(_arg_1, _local_6);
};
};
_local_6.rShiftTo(1, _local_6);
};
while (_local_4.isEven()) {
_local_4.rShiftTo(1, _local_4);
if (_local_2){
if (((!(_local_7.isEven())) || (!(_local_8.isEven())))){
_local_7.addTo(this, _local_7);
_local_8.subTo(_arg_1, _local_8);
};
_local_7.rShiftTo(1, _local_7);
}
else {
if (!_local_8.isEven()){
_local_8.subTo(_arg_1, _local_8);
};
};
_local_8.rShiftTo(1, _local_8);
};
if (_local_3.compareTo(_local_4) >= 0){
_local_3.subTo(_local_4, _local_3);
if (_local_2){
_local_5.subTo(_local_7, _local_5);
};
_local_6.subTo(_local_8, _local_6);
}
else {
_local_4.subTo(_local_3, _local_4);
if (_local_2){
_local_7.subTo(_local_5, _local_7);
};
_local_8.subTo(_local_6, _local_8);
};
};
if (_local_4.compareTo(BigInteger.ONE) != 0){
return (BigInteger.ZERO);
};
if (_local_8.compareTo(_arg_1) >= 0){
return (_local_8.subtract(_arg_1));
};
if (_local_8.sigNum() < 0){
_local_8.addTo(_arg_1, _local_8);
}
else {
return (_local_8);
};
if (_local_8.sigNum() < 0){
return (_local_8.add(_arg_1));
};
return (_local_8);
}
public function isProbablePrime(_arg_1:int):Boolean
{
var _local_2:int;
var _local_4:int;
var _local_5:int;
var _local_3:BigInteger = this.abs();
if ((((_local_3.t == 1)) && ((_local_3.a[0] <= lowprimes[(lowprimes.length - 1)])))){
_local_2 = 0;
while (_local_2 < lowprimes.length) {
if (_local_3[0] == lowprimes[_local_2]){
return (true);
};
_local_2++;
};
return (false);
};
if (_local_3.isEven()){
return (false);
};
_local_2 = 1;
while (_local_2 < lowprimes.length) {
_local_4 = lowprimes[_local_2];
_local_5 = (_local_2 + 1);
while ((((_local_5 < lowprimes.length)) && ((_local_4 < lplim)))) {
_local_4 = (_local_4 * lowprimes[_local_5++]);
};
_local_4 = _local_3.modInt(_local_4);
while (_local_2 < _local_5) {
if ((_local_4 % lowprimes[_local_2++]) == 0){
return (false);
};
};
};
return (_local_3.millerRabin(_arg_1));
}
protected function millerRabin(_arg_1:int):Boolean
{
var _local_7:BigInteger;
var _local_8:int;
var _local_2:BigInteger = this.subtract(BigInteger.ONE);
var _local_3:int = _local_2.getLowestSetBit();
if (_local_3 <= 0){
return (false);
};
var _local_4:BigInteger = _local_2.shiftRight(_local_3);
_arg_1 = ((_arg_1 + 1) >> 1);
if (_arg_1 > lowprimes.length){
_arg_1 = lowprimes.length;
};
var _local_5:BigInteger = new BigInteger();
var _local_6:int;
while (_local_6 < _arg_1) {
_local_5.fromInt(lowprimes[_local_6]);
_local_7 = _local_5.modPow(_local_4, this);
if (((!((_local_7.compareTo(BigInteger.ONE) == 0))) && (!((_local_7.compareTo(_local_2) == 0))))){
_local_8 = 1;
while ((((_local_8++ < _local_3)) && (!((_local_7.compareTo(_local_2) == 0))))) {
_local_7 = _local_7.modPowInt(2, this);
if (_local_7.compareTo(BigInteger.ONE) == 0){
return (false);
};
};
if (_local_7.compareTo(_local_2) != 0){
return (false);
};
};
_local_6++;
};
return (true);
}
public function primify(_arg_1:int, _arg_2:int):void
{
if (!this.testBit((_arg_1 - 1))){
this.bitwiseTo(BigInteger.ONE.shiftLeft((_arg_1 - 1)), this.op_or, this);
};
if (this.isEven()){
this.dAddOffset(1, 0);
};
while (!(this.isProbablePrime(_arg_2))) {
this.dAddOffset(2, 0);
while (this.bitLength() > _arg_1) {
this.subTo(BigInteger.ONE.shiftLeft((_arg_1 - 1)), this);
};
};
}
}
class _SELMGXIGHEE implements ISymmetricKey
{
/*private*/ static const Nb:uint = 4;
/*private*/ static const _Sbox:Array = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 0xFF, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22];
/*private*/ static const _InvSbox:Array = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 0xFF, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125];
/*private*/ static const _Xtime2Sbox:Array = [198, 248, 238, 246, 0xFF, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44];
/*private*/ static const _Xtime3Sbox:Array = [165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 0xFF, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58];
/*private*/ static const _Xtime2:Array = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 27, 25, 31, 29, 19, 17, 23, 21, 11, 9, 15, 13, 3, 1, 7, 5, 59, 57, 63, 61, 51, 49, 55, 53, 43, 41, 47, 45, 35, 33, 39, 37, 91, 89, 95, 93, 83, 81, 87, 85, 75, 73, 79, 77, 67, 65, 71, 69, 123, 121, 127, 125, 115, 113, 119, 117, 107, 105, 111, 109, 99, 97, 103, 101, 155, 153, 159, 157, 147, 145, 151, 149, 139, 137, 143, 141, 131, 129, 135, 133, 187, 185, 191, 189, 179, 177, 183, 181, 171, 169, 175, 173, 163, 161, 167, 165, 219, 217, 223, 221, 211, 209, 215, 213, 203, 201, 207, 205, 195, 193, 199, 197, 251, 249, 0xFF, 253, 243, 241, 247, 245, 235, 233, 239, 237, 227, 225, 231, 229];
/*private*/ static const _Xtime9:Array = [0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 0xFF, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70];
/*private*/ static const _XtimeB:Array = [0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 0xFF, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163];
/*private*/ static const _XtimeD:Array = [0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 0xFF, 180, 185, 174, 163, 128, 141, 154, 151];
/*private*/ static const _XtimeE:Array = [0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 0xFF, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141];
/*private*/ static var _Rcon:Array = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
/*private*/ static var Sbox:ByteArray;
/*private*/ static var InvSbox:ByteArray;
/*private*/ static var Xtime2Sbox:ByteArray;
/*private*/ static var Xtime3Sbox:ByteArray;
/*private*/ static var Xtime2:ByteArray;
/*private*/ static var Xtime9:ByteArray;
/*private*/ static var XtimeB:ByteArray;
/*private*/ static var XtimeD:ByteArray;
/*private*/ static var XtimeE:ByteArray;
/*private*/ static var Rcon:ByteArray;
/*private*/ static var i:uint;
/*private*/ var key:ByteArray;
/*private*/ var keyLength:uint;
/*private*/ var Nr:uint;
/*private*/ var state:ByteArray;
/*private*/ var tmp:ByteArray;
{
Sbox = new ByteArray();
InvSbox = new ByteArray();
Xtime2Sbox = new ByteArray();
Xtime3Sbox = new ByteArray();
Xtime2 = new ByteArray();
Xtime9 = new ByteArray();
XtimeB = new ByteArray();
XtimeD = new ByteArray();
XtimeE = new ByteArray();
i = 0;
while (i < 0x0100) {
Sbox[i] = _Sbox[i];
InvSbox[i] = _InvSbox[i];
Xtime2Sbox[i] = _Xtime2Sbox[i];
Xtime3Sbox[i] = _Xtime3Sbox[i];
Xtime2[i] = _Xtime2[i];
Xtime9[i] = _Xtime9[i];
XtimeB[i] = _XtimeB[i];
XtimeD[i] = _XtimeD[i];
XtimeE[i] = _XtimeE[i];
i++;
};
Rcon = new ByteArray();
i = 0;
while (i < _Rcon.length) {
Rcon[i] = _Rcon[i];
i++;
};
}
public function _SELMGXIGHEE(_arg_1:ByteArray)
{
this.tmp = new ByteArray();
this.state = new ByteArray();
this.keyLength = _arg_1.length;
this.key = new ByteArray();
this.key.writeBytes(_arg_1);
this.expandKey();
}
/*private*/ function expandKey():void
{
var _local_1:uint;
var _local_2:uint;
var _local_3:uint;
var _local_4:uint;
var _local_5:uint;
var _local_6:uint;
var _local_7:uint;
_local_7 = (this.key.length / 4);
this.Nr = (_local_7 + 6);
_local_6 = _local_7;
while (_local_6 < (Nb * (this.Nr + 1))) {
_local_1 = this.key[((4 * _local_6) - 4)];
_local_2 = this.key[((4 * _local_6) - 3)];
_local_3 = this.key[((4 * _local_6) - 2)];
_local_4 = this.key[((4 * _local_6) - 1)];
if (!(_local_6 % _local_7)){
_local_5 = _local_4;
_local_4 = Sbox[_local_1];
_local_1 = (Sbox[_local_2] ^ Rcon[(_local_6 / _local_7)]);
_local_2 = Sbox[_local_3];
_local_3 = Sbox[_local_5];
}
else {
if ((((_local_7 > 6)) && (((_local_6 % _local_7) == 4)))){
_local_1 = Sbox[_local_1];
_local_2 = Sbox[_local_2];
_local_3 = Sbox[_local_3];
_local_4 = Sbox[_local_4];
};
};
this.key[((4 * _local_6) + 0)] = (this.key[(((4 * _local_6) - (4 * _local_7)) + 0)] ^ _local_1);
this.key[((4 * _local_6) + 1)] = (this.key[(((4 * _local_6) - (4 * _local_7)) + 1)] ^ _local_2);
this.key[((4 * _local_6) + 2)] = (this.key[(((4 * _local_6) - (4 * _local_7)) + 2)] ^ _local_3);
this.key[((4 * _local_6) + 3)] = (this.key[(((4 * _local_6) - (4 * _local_7)) + 3)] ^ _local_4);
_local_6++;
};
}
public function getBlockSize():uint
{
return (16);
}
public function encrypt(_arg_1:ByteArray, _arg_2:uint=0):void
{
var _local_3:uint;
this.state.position = 0;
this.state.writeBytes(_arg_1, _arg_2, (Nb * 4));
this.addRoundKey(this.key, 0);
_local_3 = 1;
while (_local_3 < (this.Nr + 1)) {
if (_local_3 < this.Nr){
this.mixSubColumns();
}
else {
this.shiftRows();
};
this.addRoundKey(this.key, ((_local_3 * Nb) * 4));
_local_3++;
};
_arg_1.position = _arg_2;
_arg_1.writeBytes(this.state);
}
public function decrypt(_arg_1:ByteArray, _arg_2:uint=0):void
{
var _local_3:uint;
this.state.position = 0;
this.state.writeBytes(_arg_1, _arg_2, (Nb * 4));
this.addRoundKey(this.key, ((this.Nr * Nb) * 4));
this.invShiftRows();
_local_3 = this.Nr;
while (_local_3--) {
this.addRoundKey(this.key, ((_local_3 * Nb) * 4));
if (_local_3){
this.invMixSubColumns();
};
};
_arg_1.position = _arg_2;
_arg_1.writeBytes(this.state);
}
public function dispose():void
{
var _local_1:uint;
var _local_2:Random;
_local_2 = new Random();
_local_1 = 0;
while (_local_1 < this.key.length) {
this.key[_local_1] = _local_2.nextByte();
_local_1++;
};
this.Nr = _local_2.nextByte();
_local_1 = 0;
while (_local_1 < this.state.length) {
this.state[_local_1] = _local_2.nextByte();
_local_1++;
};
_local_1 = 0;
while (_local_1 < this.tmp.length) {
this.tmp[_local_1] = _local_2.nextByte();
_local_1++;
};
this.key.length = 0;
this.keyLength = 0;
this.state.length = 0;
this.tmp.length = 0;
this.key = null;
this.state = null;
this.tmp = null;
this.Nr = 0;
Memory.gc();
}
protected function shiftRows():void
{
var _local_1:uint;
this.state[0] = Sbox[this.state[0]];
this.state[4] = Sbox[this.state[4]];
this.state[8] = Sbox[this.state[8]];
this.state[12] = Sbox[this.state[12]];
_local_1 = Sbox[this.state[1]];
this.state[1] = Sbox[this.state[5]];
this.state[5] = Sbox[this.state[9]];
this.state[9] = Sbox[this.state[13]];
this.state[13] = _local_1;
_local_1 = Sbox[this.state[2]];
this.state[2] = Sbox[this.state[10]];
this.state[10] = _local_1;
_local_1 = Sbox[this.state[6]];
this.state[6] = Sbox[this.state[14]];
this.state[14] = _local_1;
_local_1 = Sbox[this.state[15]];
this.state[15] = Sbox[this.state[11]];
this.state[11] = Sbox[this.state[7]];
this.state[7] = Sbox[this.state[3]];
this.state[3] = _local_1;
}
protected function invShiftRows():void
{
var _local_1:uint;
this.state[0] = InvSbox[this.state[0]];
this.state[4] = InvSbox[this.state[4]];
this.state[8] = InvSbox[this.state[8]];
this.state[12] = InvSbox[this.state[12]];
_local_1 = InvSbox[this.state[13]];
this.state[13] = InvSbox[this.state[9]];
this.state[9] = InvSbox[this.state[5]];
this.state[5] = InvSbox[this.state[1]];
this.state[1] = _local_1;
_local_1 = InvSbox[this.state[2]];
this.state[2] = InvSbox[this.state[10]];
this.state[10] = _local_1;
_local_1 = InvSbox[this.state[6]];
this.state[6] = InvSbox[this.state[14]];
this.state[14] = _local_1;
_local_1 = InvSbox[this.state[3]];
this.state[3] = InvSbox[this.state[7]];
this.state[7] = InvSbox[this.state[11]];
this.state[11] = InvSbox[this.state[15]];
this.state[15] = _local_1;
}
protected function mixSubColumns():void
{
this.tmp.length = 0;
this.tmp[0] = (((Xtime2Sbox[this.state[0]] ^ Xtime3Sbox[this.state[5]]) ^ Sbox[this.state[10]]) ^ Sbox[this.state[15]]);
this.tmp[1] = (((Sbox[this.state[0]] ^ Xtime2Sbox[this.state[5]]) ^ Xtime3Sbox[this.state[10]]) ^ Sbox[this.state[15]]);
this.tmp[2] = (((Sbox[this.state[0]] ^ Sbox[this.state[5]]) ^ Xtime2Sbox[this.state[10]]) ^ Xtime3Sbox[this.state[15]]);
this.tmp[3] = (((Xtime3Sbox[this.state[0]] ^ Sbox[this.state[5]]) ^ Sbox[this.state[10]]) ^ Xtime2Sbox[this.state[15]]);
this.tmp[4] = (((Xtime2Sbox[this.state[4]] ^ Xtime3Sbox[this.state[9]]) ^ Sbox[this.state[14]]) ^ Sbox[this.state[3]]);
this.tmp[5] = (((Sbox[this.state[4]] ^ Xtime2Sbox[this.state[9]]) ^ Xtime3Sbox[this.state[14]]) ^ Sbox[this.state[3]]);
this.tmp[6] = (((Sbox[this.state[4]] ^ Sbox[this.state[9]]) ^ Xtime2Sbox[this.state[14]]) ^ Xtime3Sbox[this.state[3]]);
this.tmp[7] = (((Xtime3Sbox[this.state[4]] ^ Sbox[this.state[9]]) ^ Sbox[this.state[14]]) ^ Xtime2Sbox[this.state[3]]);
this.tmp[8] = (((Xtime2Sbox[this.state[8]] ^ Xtime3Sbox[this.state[13]]) ^ Sbox[this.state[2]]) ^ Sbox[this.state[7]]);
this.tmp[9] = (((Sbox[this.state[8]] ^ Xtime2Sbox[this.state[13]]) ^ Xtime3Sbox[this.state[2]]) ^ Sbox[this.state[7]]);
this.tmp[10] = (((Sbox[this.state[8]] ^ Sbox[this.state[13]]) ^ Xtime2Sbox[this.state[2]]) ^ Xtime3Sbox[this.state[7]]);
this.tmp[11] = (((Xtime3Sbox[this.state[8]] ^ Sbox[this.state[13]]) ^ Sbox[this.state[2]]) ^ Xtime2Sbox[this.state[7]]);
this.tmp[12] = (((Xtime2Sbox[this.state[12]] ^ Xtime3Sbox[this.state[1]]) ^ Sbox[this.state[6]]) ^ Sbox[this.state[11]]);
this.tmp[13] = (((Sbox[this.state[12]] ^ Xtime2Sbox[this.state[1]]) ^ Xtime3Sbox[this.state[6]]) ^ Sbox[this.state[11]]);
this.tmp[14] = (((Sbox[this.state[12]] ^ Sbox[this.state[1]]) ^ Xtime2Sbox[this.state[6]]) ^ Xtime3Sbox[this.state[11]]);
this.tmp[15] = (((Xtime3Sbox[this.state[12]] ^ Sbox[this.state[1]]) ^ Sbox[this.state[6]]) ^ Xtime2Sbox[this.state[11]]);
this.state.position = 0;
this.state.writeBytes(this.tmp, 0, (Nb * 4));
}
protected function invMixSubColumns():void
{
var _local_1:uint;
this.tmp.length = 0;
this.tmp[0] = (((XtimeE[this.state[0]] ^ XtimeB[this.state[1]]) ^ XtimeD[this.state[2]]) ^ Xtime9[this.state[3]]);
this.tmp[5] = (((Xtime9[this.state[0]] ^ XtimeE[this.state[1]]) ^ XtimeB[this.state[2]]) ^ XtimeD[this.state[3]]);
this.tmp[10] = (((XtimeD[this.state[0]] ^ Xtime9[this.state[1]]) ^ XtimeE[this.state[2]]) ^ XtimeB[this.state[3]]);
this.tmp[15] = (((XtimeB[this.state[0]] ^ XtimeD[this.state[1]]) ^ Xtime9[this.state[2]]) ^ XtimeE[this.state[3]]);
this.tmp[4] = (((XtimeE[this.state[4]] ^ XtimeB[this.state[5]]) ^ XtimeD[this.state[6]]) ^ Xtime9[this.state[7]]);
this.tmp[9] = (((Xtime9[this.state[4]] ^ XtimeE[this.state[5]]) ^ XtimeB[this.state[6]]) ^ XtimeD[this.state[7]]);
this.tmp[14] = (((XtimeD[this.state[4]] ^ Xtime9[this.state[5]]) ^ XtimeE[this.state[6]]) ^ XtimeB[this.state[7]]);
this.tmp[3] = (((XtimeB[this.state[4]] ^ XtimeD[this.state[5]]) ^ Xtime9[this.state[6]]) ^ XtimeE[this.state[7]]);
this.tmp[8] = (((XtimeE[this.state[8]] ^ XtimeB[this.state[9]]) ^ XtimeD[this.state[10]]) ^ Xtime9[this.state[11]]);
this.tmp[13] = (((Xtime9[this.state[8]] ^ XtimeE[this.state[9]]) ^ XtimeB[this.state[10]]) ^ XtimeD[this.state[11]]);
this.tmp[2] = (((XtimeD[this.state[8]] ^ Xtime9[this.state[9]]) ^ XtimeE[this.state[10]]) ^ XtimeB[this.state[11]]);
this.tmp[7] = (((XtimeB[this.state[8]] ^ XtimeD[this.state[9]]) ^ Xtime9[this.state[10]]) ^ XtimeE[this.state[11]]);
this.tmp[12] = (((XtimeE[this.state[12]] ^ XtimeB[this.state[13]]) ^ XtimeD[this.state[14]]) ^ Xtime9[this.state[15]]);
this.tmp[1] = (((Xtime9[this.state[12]] ^ XtimeE[this.state[13]]) ^ XtimeB[this.state[14]]) ^ XtimeD[this.state[15]]);
this.tmp[6] = (((XtimeD[this.state[12]] ^ Xtime9[this.state[13]]) ^ XtimeE[this.state[14]]) ^ XtimeB[this.state[15]]);
this.tmp[11] = (((XtimeB[this.state[12]] ^ XtimeD[this.state[13]]) ^ Xtime9[this.state[14]]) ^ XtimeE[this.state[15]]);
_local_1 = 0;
while (_local_1 < (4 * Nb)) {
this.state[_local_1] = InvSbox[this.tmp[_local_1]];
_local_1++;
};
}
protected function addRoundKey(_arg_1:ByteArray, _arg_2:uint):void
{
var _local_3:uint;
_local_3 = 0;
while (_local_3 < 16) {
this.state[_local_3] = (this.state[_local_3] ^ _arg_1[(_local_3 + _arg_2)]);
_local_3++;
};
}
public function toString():String
{
return (("aes" + (8 * this.keyLength)));
}
}
class Random
{
/*private*/ var state:IPRNG;
/*private*/ var ready:Boolean = false;
/*private*/ var pool:ByteArray;
/*private*/ var psize:int;
/*private*/ var pptr:int;
/*private*/ var seeded:Boolean = false;
public function Random(_arg_1:Class=null)
{
var _local_2:uint;
super();
if (_arg_1 == null){
_arg_1 = ARC4;
};
this.state = (new (_arg_1)() as IPRNG);
this.psize = this.state.getPoolSize();
this.pool = new ByteArray();
this.pptr = 0;
while (this.pptr < this.psize) {
_local_2 = (65536 * Math.random());
var _local_3 = this.pptr++;
this.pool[_local_3] = (_local_2 >>> 8);
var _local_4 = this.pptr++;
this.pool[_local_4] = (_local_2 & 0xFF);
};
this.pptr = 0;
this.seed();
}
public function seed(_arg_1:int=0):void
{
if (_arg_1 == 0){
_arg_1 = new Date().getTime();
};
var _local_2 = this.pptr++;
this.pool[_local_2] = (this.pool[_local_2] ^ (_arg_1 & 0xFF));
var _local_3 = this.pptr++;
this.pool[_local_3] = (this.pool[_local_3] ^ ((_arg_1 >> 8) & 0xFF));
var _local_4 = this.pptr++;
this.pool[_local_4] = (this.pool[_local_4] ^ ((_arg_1 >> 16) & 0xFF));
var _local_5 = this.pptr++;
this.pool[_local_5] = (this.pool[_local_5] ^ ((_arg_1 >> 24) & 0xFF));
this.pptr = (this.pptr % this.psize);
this.seeded = true;
}
public function autoSeed():void
{
var _local_3:Font;
var _local_1:ByteArray = new ByteArray();
_local_1.writeUnsignedInt(System.totalMemory);
_local_1.writeUTF(Capabilities.serverString);
_local_1.writeUnsignedInt(getTimer());
_local_1.writeUnsignedInt(new Date().getTime());
var _local_2:Array = Font.enumerateFonts(true);
for each (_local_3 in _local_2) {
_local_1.writeUTF(_local_3.fontName);
_local_1.writeUTF(_local_3.fontStyle);
_local_1.writeUTF(_local_3.fontType);
};
_local_1.position = 0;
while (_local_1.bytesAvailable >= 4) {
this.seed(_local_1.readUnsignedInt());
};
}
public function nextBytes(_arg_1:ByteArray, _arg_2:int):void
{
while (_arg_2--) {
_arg_1.writeByte(this.nextByte());
};
}
public function nextByte():int
{
if (!this.ready){
if (!this.seeded){
this.autoSeed();
};
this.state.init(this.pool);
this.pool.length = 0;
this.pptr = 0;
this.ready = true;
};
return (this.state.next());
}
public function dispose():void
{
var _local_1:uint;
while (_local_1 < this.pool.length) {
this.pool[_local_1] = (Math.random() * 0x0100);
_local_1++;
};
this.pool.length = 0;
this.pool = null;
this.state.dispose();
this.state = null;
this.psize = 0;
this.pptr = 0;
Memory.gc();
}
public function toString():String
{
return (("random-" + this.state.toString()));
}
}
class ARC4 implements IPRNG, IStreamCipher
{
/*private*/ const psize:uint = 0x0100;
/*private*/ var i:int = 0;
/*private*/ var j:int = 0;
/*private*/ var S:ByteArray;
public function ARC4(_arg_1:ByteArray=null)
{
this.S = new ByteArray();
if (_arg_1){
this.init(_arg_1);
};
}
public function getPoolSize():uint
{
return (this.psize);
}
public function init(_arg_1:ByteArray):void
{
var _local_2:int;
var _local_3:int;
var _local_4:int;
_local_2 = 0;
while (_local_2 < 0x0100) {
this.S[_local_2] = _local_2;
_local_2++;
};
_local_3 = 0;
_local_2 = 0;
while (_local_2 < 0x0100) {
_local_3 = (((_local_3 + this.S[_local_2]) + _arg_1[(_local_2 % _arg_1.length)]) & 0xFF);
_local_4 = this.S[_local_2];
this.S[_local_2] = this.S[_local_3];
this.S[_local_3] = _local_4;
_local_2++;
};
this.i = 0;
this.j = 0;
}
public function next():uint
{
var _local_1:int;
this.i = ((this.i + 1) & 0xFF);
this.j = ((this.j + this.S[this.i]) & 0xFF);
_local_1 = this.S[this.i];
this.S[this.i] = this.S[this.j];
this.S[this.j] = _local_1;
return (this.S[((_local_1 + this.S[this.i]) & 0xFF)]);
}
public function getBlockSize():uint
{
return (1);
}
public function encrypt(_arg_1:ByteArray):void
{
var _local_2:uint;
_local_2 = 0;
while (_local_2 < _arg_1.length) {
var _local_3 = _local_2++;
_arg_1[_local_3] = (_arg_1[_local_3] ^ this.next());
};
}
public function decrypt(_arg_1:ByteArray):void
{
this.encrypt(_arg_1);
}
public function dispose():void
{
var _local_1:uint;
_local_1 = 0;
if (this.S != null){
_local_1 = 0;
while (_local_1 < this.S.length) {
this.S[_local_1] = (Math.random() * 0x0100);
_local_1++;
};
this.S.length = 0;
this.S = null;
};
this.i = 0;
this.j = 0;
Memory.gc();
}
public function toString():String
{
return ("rc4");
}
}
class IVMode
{
protected var key;
protected var padding:IPad;
protected var prng:Random;
protected var iv:ByteArray;
protected var lastIV:ByteArray;
protected var blockSize:uint;
public function IVMode(_arg_1:*, _arg_2:IPad=null)
{
this.key = _arg_1;
this.blockSize = _arg_1.getBlockSize();
if (_arg_2 == null){
_arg_2 = new _SEWEGXWIEEM(this.blockSize);
}
else {
_arg_2.setBlockSize(this.blockSize);
};
this.padding = _arg_2;
this.prng = new Random();
this.iv = null;
this.lastIV = new ByteArray();
}
public function getBlockSize():uint
{
return (this.key.getBlockSize());
}
public function dispose():void
{
var _local_1:uint;
if (this.iv != null){
_local_1 = 0;
while (_local_1 < this.iv.length) {
this.iv[_local_1] = this.prng.nextByte();
_local_1++;
};
this.iv.length = 0;
this.iv = null;
};
if (this.lastIV != null){
_local_1 = 0;
while (_local_1 < this.iv.length) {
this.lastIV[_local_1] = this.prng.nextByte();
_local_1++;
};
this.lastIV.length = 0;
this.lastIV = null;
};
this.key.dispose();
this.key = null;
this.padding = null;
this.prng.dispose();
this.prng = null;
Memory.gc();
}
public function set IV(_arg_1:ByteArray):void
{
this.iv = _arg_1;
this.lastIV.length = 0;
this.lastIV.writeBytes(this.iv);
}
public function get IV():ByteArray
{
return (this.lastIV);
}
protected function getIV4e():ByteArray
{
var _local_1:ByteArray = new ByteArray();
if (this.iv){
_local_1.writeBytes(this.iv);
}
else {
this.prng.nextBytes(_local_1, this.blockSize);
};
this.lastIV.length = 0;
this.lastIV.writeBytes(_local_1);
return (_local_1);
}
protected function getIV4d():ByteArray
{
var _local_1:ByteArray = new ByteArray();
if (this.iv){
_local_1.writeBytes(this.iv);
}
else {
throw (new Error("an IV must be set before calling decrypt()"));
};
return (_local_1);
}
}
class _SEWEGXWIEEM implements IPad
{
public var blockSize:uint;
public function _SEWEGXWIEEM(_arg_1:uint=0)
{
this.blockSize = _arg_1;
}
public function pad(_arg_1:ByteArray):void
{
var _local_2:uint;
var _local_3:uint;
_local_2 = (this.blockSize - (_arg_1.length % this.blockSize));
_local_3 = 0;
while (_local_3 < _local_2) {
_arg_1[_arg_1.length] = _local_2;
_local_3++;
};
}
public function unpad(_arg_1:ByteArray):void
{
var _local_2:uint;
var _local_3:uint;
var _local_4:uint;
_local_2 = (_arg_1.length % this.blockSize);
if (_local_2 != 0){
throw (new Error("PKCS#5::unpad: ByteArray.length isn't a multiple of the blockSize"));
};
_local_2 = _arg_1[(_arg_1.length - 1)];
_local_3 = _local_2;
while (_local_3 > 0) {
_local_4 = _arg_1[(_arg_1.length - 1)];
_arg_1.length--;
if (_local_2 != _local_4){
throw (new Error((((("PKCS#5:unpad: Invalid padding value. expected [" + _local_2) + "], found [") + _local_4) + "]")));
};
_local_3--;
};
}
public function setBlockSize(_arg_1:uint):void
{
this.blockSize = _arg_1;
}
}
class _SDIDIWOHGD implements IMode, ICipher
{
protected var mode:IVMode;
protected var cipher:ICipher;
public function _SDIDIWOHGD(_arg_1:IVMode)
{
this.mode = _arg_1;
this.cipher = (_arg_1 as ICipher);
}
public function getBlockSize():uint
{
return (this.mode.getBlockSize());
}
public function dispose():void
{
this.mode.dispose();
this.mode = null;
this.cipher = null;
Memory.gc();
}
public function encrypt(_arg_1:ByteArray):void
{
var _local_2:ByteArray;
this.cipher.encrypt(_arg_1);
_local_2 = new ByteArray();
_local_2.writeBytes(this.mode.IV);
_local_2.writeBytes(_arg_1);
_arg_1.position = 0;
_arg_1.writeBytes(_local_2);
}
public function decrypt(_arg_1:ByteArray):void
{
var _local_2:ByteArray;
_local_2 = new ByteArray();
_local_2.writeBytes(_arg_1, 0, this.getBlockSize());
this.mode.IV = _local_2;
_local_2 = new ByteArray();
_local_2.writeBytes(_arg_1, this.getBlockSize());
this.cipher.decrypt(_local_2);
_arg_1.length = 0;
_arg_1.writeBytes(_local_2);
}
public function toString():String
{
return (("simple-" + this.cipher.toString()));
}
}
class _SDXGEILDEDH extends IVMode implements IMode
{
public function _SDXGEILDEDH(_arg_1:*, _arg_2:IPad=null)
{
super(_arg_1, _arg_2);
}
public function encrypt(_arg_1:ByteArray):void
{
var _local_2:ByteArray;
var _local_3:uint;
var _local_4:uint;
padding.pad(_arg_1);
_local_2 = getIV4e();
_local_3 = 0;
while (_local_3 < _arg_1.length) {
_local_4 = 0;
while (_local_4 < blockSize) {
_arg_1[(_local_3 + _local_4)] = (_arg_1[(_local_3 + _local_4)] ^ _local_2[_local_4]);
_local_4++;
};
key.encrypt(_arg_1, _local_3);
_local_2.position = 0;
_local_2.writeBytes(_arg_1, _local_3, blockSize);
_local_3 = (_local_3 + blockSize);
};
}
public function decrypt(_arg_1:ByteArray):void
{
var _local_2:ByteArray;
var _local_3:ByteArray;
var _local_4:uint;
var _local_5:uint;
_local_2 = getIV4d();
_local_3 = new ByteArray();
_local_4 = 0;
while (_local_4 < _arg_1.length) {
_local_3.position = 0;
_local_3.writeBytes(_arg_1, _local_4, blockSize);
key.decrypt(_arg_1, _local_4);
_local_5 = 0;
while (_local_5 < blockSize) {
_arg_1[(_local_4 + _local_5)] = (_arg_1[(_local_4 + _local_5)] ^ _local_2[_local_5]);
_local_5++;
};
_local_2.position = 0;
_local_2.writeBytes(_local_3, 0, blockSize);
_local_4 = (_local_4 + blockSize);
};
padding.unpad(_arg_1);
}
public function toString():String
{
return ((key.toString() + "-cbc"));
}
}
class NullReduction implements IReduction
{
public function revert(_arg_1:BigInteger):BigInteger
{
return (_arg_1);
}
public function mulTo(_arg_1:BigInteger, _arg_2:BigInteger, _arg_3:BigInteger):void
{
_arg_1.multiplyTo(_arg_2, _arg_3);
}
public function sqrTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
_arg_1.squareTo(_arg_2);
}
public function convert(_arg_1:BigInteger):BigInteger
{
return (_arg_1);
}
public function reduce(_arg_1:BigInteger):void
{
}
}
class ClassicReduction implements IReduction
{
/*private*/ var m:BigInteger;
public function ClassicReduction(_arg_1:BigInteger)
{
this.m = _arg_1;
}
public function convert(_arg_1:BigInteger):BigInteger
{
if ((((_arg_1.s < 0)) || ((_arg_1.compareTo(this.m) >= 0)))){
return (_arg_1.mod(this.m));
};
return (_arg_1);
}
public function revert(_arg_1:BigInteger):BigInteger
{
return (_arg_1);
}
public function reduce(_arg_1:BigInteger):void
{
_arg_1.divRemTo(this.m, null, _arg_1);
}
public function mulTo(_arg_1:BigInteger, _arg_2:BigInteger, _arg_3:BigInteger):void
{
_arg_1.multiplyTo(_arg_2, _arg_3);
this.reduce(_arg_3);
}
public function sqrTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
_arg_1.squareTo(_arg_2);
this.reduce(_arg_2);
}
}
class MontgomeryReduction implements IReduction
{
/*private*/ var m:BigInteger;
/*private*/ var mp:int;
/*private*/ var mpl:int;
/*private*/ var mph:int;
/*private*/ var um:int;
/*private*/ var mt2:int;
public function MontgomeryReduction(_arg_1:BigInteger)
{
this.m = _arg_1;
this.mp = _arg_1.invDigit();
this.mpl = (this.mp & 32767);
this.mph = (this.mp >> 15);
this.um = ((1 << (BigInteger.DB - 15)) - 1);
this.mt2 = (2 * _arg_1.t);
}
public function convert(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger;
_local_2 = new BigInteger();
_arg_1.abs().dlShiftTo(this.m.t, _local_2);
_local_2.divRemTo(this.m, null, _local_2);
if ((((_arg_1.s < 0)) && ((_local_2.compareTo(BigInteger.ZERO) > 0)))){
this.m.subTo(_local_2, _local_2);
};
return (_local_2);
}
public function revert(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger;
_local_2 = new BigInteger();
_arg_1.copyTo(_local_2);
this.reduce(_local_2);
return (_local_2);
}
public function reduce(_arg_1:BigInteger):void
{
var _local_2:int;
var _local_3:int;
var _local_4:int;
while (_arg_1.t <= this.mt2) {
var _local_5 = _arg_1.t++;
_arg_1.a[_local_5] = 0;
};
_local_2 = 0;
while (_local_2 < this.m.t) {
_local_3 = (_arg_1.a[_local_2] & 32767);
_local_4 = (((_local_3 * this.mpl) + ((((_local_3 * this.mph) + ((_arg_1.a[_local_2] >> 15) * this.mpl)) & this.um) << 15)) & BigInteger.DM);
_local_3 = (_local_2 + this.m.t);
_arg_1.a[_local_3] = (_arg_1.a[_local_3] + this.m.am(0, _local_4, _arg_1, _local_2, 0, this.m.t));
while (_arg_1.a[_local_3] >= BigInteger.DV) {
_arg_1.a[_local_3] = (_arg_1.a[_local_3] - BigInteger.DV);
_local_5 = _arg_1.a;
var _local_6 = ++_local_3;
var _local_7 = (_local_5[_local_6] + 1);
_local_5[_local_6] = _local_7;
};
_local_2++;
};
_arg_1.clamp();
_arg_1.drShiftTo(this.m.t, _arg_1);
if (_arg_1.compareTo(this.m) >= 0){
_arg_1.subTo(this.m, _arg_1);
};
}
public function sqrTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
_arg_1.squareTo(_arg_2);
this.reduce(_arg_2);
}
public function mulTo(_arg_1:BigInteger, _arg_2:BigInteger, _arg_3:BigInteger):void
{
_arg_1.multiplyTo(_arg_2, _arg_3);
this.reduce(_arg_3);
}
}
class BarrettReduction implements IReduction
{
/*private*/ var m:BigInteger;
/*private*/ var r2:BigInteger;
/*private*/ var q3:BigInteger;
/*private*/ var mu:BigInteger;
public function BarrettReduction(_arg_1:BigInteger)
{
this.r2 = new BigInteger();
this.q3 = new BigInteger();
BigInteger.ONE.dlShiftTo((2 * _arg_1.t), this.r2);
this.mu = this.r2.divide(_arg_1);
this.m = _arg_1;
}
public function revert(_arg_1:BigInteger):BigInteger
{
return (_arg_1);
}
public function mulTo(_arg_1:BigInteger, _arg_2:BigInteger, _arg_3:BigInteger):void
{
_arg_1.multiplyTo(_arg_2, _arg_3);
this.reduce(_arg_3);
}
public function sqrTo(_arg_1:BigInteger, _arg_2:BigInteger):void
{
_arg_1.squareTo(_arg_2);
this.reduce(_arg_2);
}
public function convert(_arg_1:BigInteger):BigInteger
{
var _local_2:BigInteger;
if ((((_arg_1.s < 0)) || ((_arg_1.t > (2 * this.m.t))))){
return (_arg_1.mod(this.m));
};
if (_arg_1.compareTo(this.m) < 0){
return (_arg_1);
};
_local_2 = new BigInteger();
_arg_1.copyTo(_local_2);
this.reduce(_local_2);
return (_local_2);
}
public function reduce(_arg_1:BigInteger):void
{
var _local_2:BigInteger;
_local_2 = (_arg_1 as BigInteger);
_local_2.drShiftTo((this.m.t - 1), this.r2);
if (_local_2.t > (this.m.t + 1)){
_local_2.t = (this.m.t + 1);
_local_2.clamp();
};
this.mu.multiplyUpperTo(this.r2, (this.m.t + 1), this.q3);
this.m.multiplyLowerTo(this.q3, (this.m.t + 1), this.r2);
while (_local_2.compareTo(this.r2) < 0) {
_local_2.dAddOffset(1, (this.m.t + 1));
};
_local_2.subTo(this.r2, _local_2);
while (_local_2.compareTo(this.m) >= 0) {
_local_2.subTo(this.m, _local_2);
};
}
}
class Memory
{
public static function gc():void
{
try {
new LocalConnection().connect("foo");
new LocalConnection().connect("foo");
}
catch(e) {
};
}
public static function get used():uint
{
return (System.totalMemory);
}
}
class Hex
{
public static function toArray(_arg_1:String):ByteArray
{
_arg_1 = _arg_1.replace(/\s|:/gm, "");
var _local_2:ByteArray = new ByteArray();
if ((_arg_1.length & (1 == 1))){
_arg_1 = ("0" + _arg_1);
};
var _local_3:uint;
while (_local_3 < _arg_1.length) {
_local_2[(_local_3 / 2)] = parseInt(_arg_1.substr(_local_3, 2), 16);
_local_3 = (_local_3 + 2);
};
return (_local_2);
}
public static function fromArray(_arg_1:ByteArray, _arg_2:Boolean=false):String
{
var _local_3 = "";
var _local_4:uint;
while (_local_4 < _arg_1.length) {
_local_3 = (_local_3 + ("0" + _arg_1[_local_4].toString(16)).substr(-2, 2));
if (_arg_2){
if (_local_4 < (_arg_1.length - 1)){
_local_3 = (_local_3 + ":");
};
};
_local_4++;
};
return (_local_3);
}
public static function toString(_arg_1:String):String
{
var _local_2:ByteArray = toArray(_arg_1);
return (_local_2.readUTFBytes(_local_2.length));
}
public static function fromString(_arg_1:String, _arg_2:Boolean=false):String
{
var _local_3:ByteArray = new ByteArray();
_local_3.writeUTFBytes(_arg_1);
return (fromArray(_local_3, _arg_2));
}
}
class _SEGXOIIMDXX
{
public static function readRSAPublicKey(_arg_1:String):_SLXOGXMDOX
{
var _local_4:Array;
var _local_2:ByteArray = extractBinary("-----BEGIN PUBLIC KEY-----", "-----END PUBLIC KEY-----", _arg_1);
if (_local_2 == null){
return (null);
};
var _local_3:* = DER.parse(_local_2);
if ((_local_3 is Array)){
_local_4 = (_local_3 as Array);
if (_local_4[0][0].toString() != "1.2.840.113549.1.1.1"){
return (null);
};
_local_4[1].position = 0;
_local_3 = DER.parse(_local_4[1]);
if ((_local_3 is Array)){
_local_4 = (_local_3 as Array);
return (new _SLXOGXMDOX(_local_4[0], _local_4[1]));
};
return (null);
};
return (null);
}
/*private*/ static function extractBinary(_arg_1:String, _arg_2:String, _arg_3:String):ByteArray
{
var _local_4:int = _arg_3.indexOf(_arg_1);
if (_local_4 == -1){
return (null);
};
_local_4 = (_local_4 + _arg_1.length);
var _local_5:int = _arg_3.indexOf(_arg_2);
if (_local_5 == -1){
return (null);
};
var _local_6:String = _arg_3.substring(_local_4, _local_5);
_local_6 = _local_6.replace(/\s/mg, "");
return (_SEMOMHOGHLL.decodeToByteArray(_local_6));
}
}
class _SEMOMHOGHLL
{
/*private*/ static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
public static const version:String = "1.0.0";
public function _SEMOMHOGHLL()
{
throw (new Error("Base64 internal class is static container only"));
}
public static function encode(_arg_1:String):String
{
var _local_2:ByteArray = new ByteArray();
_local_2.writeUTFBytes(_arg_1);
return (encodeByteArray(_local_2));
}
public static function encodeByteArray(_arg_1:ByteArray):String
{
var _local_3:Array;
var _local_5:uint;
var _local_6:uint;
var _local_7:uint;
var _local_2 = "";
var _local_4:Array = new Array(4);
_arg_1.position = 0;
while (_arg_1.bytesAvailable > 0) {
_local_3 = new Array();
_local_5 = 0;
while ((((_local_5 < 3)) && ((_arg_1.bytesAvailable > 0)))) {
_local_3[_local_5] = _arg_1.readUnsignedByte();
_local_5++;
};
_local_4[0] = ((_local_3[0] & 252) >> 2);
_local_4[1] = (((_local_3[0] & 3) << 4) | (_local_3[1] >> 4));
_local_4[2] = (((_local_3[1] & 15) << 2) | (_local_3[2] >> 6));
_local_4[3] = (_local_3[2] & 63);
_local_6 = _local_3.length;
while (_local_6 < 3) {
_local_4[(_local_6 + 1)] = 64;
_local_6++;
};
_local_7 = 0;
while (_local_7 < _local_4.length) {
_local_2 = (_local_2 + BASE64_CHARS.charAt(_local_4[_local_7]));
_local_7++;
};
};
return (_local_2);
}
public static function decode(_arg_1:String):String
{
var _local_2:ByteArray = decodeToByteArrayB(_arg_1);
return (_local_2.readUTFBytes(_local_2.length));
}
public static function decodeToByteArray(_arg_1:String):ByteArray
{
var _local_6:uint;
var _local_7:uint;
var _local_2:ByteArray = new ByteArray();
var _local_3:Array = new Array(4);
var _local_4:Array = new Array(3);
var _local_5:uint;
while (_local_5 < _arg_1.length) {
_local_6 = 0;
while ((((_local_6 < 4)) && (((_local_5 + _local_6) < _arg_1.length)))) {
_local_3[_local_6] = BASE64_CHARS.indexOf(_arg_1.charAt((_local_5 + _local_6)));
_local_6++;
};
_local_4[0] = ((_local_3[0] << 2) + ((_local_3[1] & 48) >> 4));
_local_4[1] = (((_local_3[1] & 15) << 4) + ((_local_3[2] & 60) >> 2));
_local_4[2] = (((_local_3[2] & 3) << 6) + _local_3[3]);
_local_7 = 0;
while (_local_7 < _local_4.length) {
if (_local_3[(_local_7 + 1)] == 64) break;
_local_2.writeByte(_local_4[_local_7]);
_local_7++;
};
_local_5 = (_local_5 + 4);
};
_local_2.position = 0;
return (_local_2);
}
public static function decodeToByteArrayB(_arg_1:String):ByteArray
{
var _local_6:uint;
var _local_7:uint;
var _local_2:ByteArray = new ByteArray();
var _local_3:Array = new Array(4);
var _local_4:Array = new Array(3);
var _local_5:uint;
while (_local_5 < _arg_1.length) {
_local_6 = 0;
while ((((_local_6 < 4)) && (((_local_5 + _local_6) < _arg_1.length)))) {
_local_3[_local_6] = BASE64_CHARS.indexOf(_arg_1.charAt((_local_5 + _local_6)));
while ((((_local_3[_local_6] < 0)) && ((_local_5 < _arg_1.length)))) {
_local_5++;
_local_3[_local_6] = BASE64_CHARS.indexOf(_arg_1.charAt((_local_5 + _local_6)));
};
_local_6++;
};
_local_4[0] = ((_local_3[0] << 2) + ((_local_3[1] & 48) >> 4));
_local_4[1] = (((_local_3[1] & 15) << 4) + ((_local_3[2] & 60) >> 2));
_local_4[2] = (((_local_3[2] & 3) << 6) + _local_3[3]);
_local_7 = 0;
while (_local_7 < _local_4.length) {
if (_local_3[(_local_7 + 1)] == 64) break;
_local_2.writeByte(_local_4[_local_7]);
_local_7++;
};
_local_5 = (_local_5 + 4);
};
_local_2.position = 0;
return (_local_2);
}
}
class DER
{
public static var indent:String = "";
public static function parse(_arg_1:ByteArray, _arg_2:*=null):IAsn1Type
{
var _local_3:int;
var _local_5:int;
var _local_6:ByteArray;
var _local_7:int;
var _local_8:int;
var _local_9:Sequence;
var _local_10:Array;
var _local_11:Set;
var _local_12:ByteString;
var _local_13:PrintableString;
var _local_14:UTCTime;
var _local_15:Object;
var _local_16:Boolean;
var _local_17:Boolean;
var _local_18:String;
var _local_19:*;
var _local_20:IAsn1Type;
var _local_21:int;
var _local_22:ByteArray;
_local_3 = _arg_1.readUnsignedByte();
var _local_4 = !(((_local_3 & 32) == 0));
_local_3 = (_local_3 & 31);
_local_5 = _arg_1.readUnsignedByte();
if (_local_5 >= 128){
_local_7 = (_local_5 & 127);
_local_5 = 0;
while (_local_7 > 0) {
_local_5 = ((_local_5 << 8) | _arg_1.readUnsignedByte());
_local_7--;
};
};
switch (_local_3){
case 0:
case 16:
_local_8 = _arg_1.position;
_local_9 = new Sequence(_local_3, _local_5);
_local_10 = (_arg_2 as Array);
if (_local_10 != null){
_local_10 = _local_10.concat();
};
while (_arg_1.position < (_local_8 + _local_5)) {
_local_15 = null;
if (_local_10 != null){
_local_15 = _local_10.shift();
};
if (_local_15 != null){
while (((_local_15) && (_local_15.optional))) {
_local_16 = (_local_15.value is Array);
_local_17 = isConstructedType(_arg_1);
if (_local_16 != _local_17){
_local_9.push(_local_15.defaultValue);
_local_9[_local_15.name] = _local_15.defaultValue;
_local_15 = _local_10.shift();
}
else {
break;
};
};
};
if (_local_15 != null){
_local_18 = _local_15.name;
_local_19 = _local_15.value;
if (_local_15.extract){
_local_21 = getLengthOfNextElement(_arg_1);
_local_22 = new ByteArray();
_local_22.writeBytes(_arg_1, _arg_1.position, _local_21);
_local_9[(_local_18 + "_bin")] = _local_22;
};
_local_20 = DER.parse(_arg_1, _local_19);
_local_9.push(_local_20);
_local_9[_local_18] = _local_20;
}
else {
_local_9.push(DER.parse(_arg_1));
};
};
return (_local_9);
case 17:
_local_8 = _arg_1.position;
_local_11 = new Set(_local_3, _local_5);
while (_arg_1.position < (_local_8 + _local_5)) {
_local_11.push(DER.parse(_arg_1));
};
return (_local_11);
case 2:
_local_6 = new ByteArray();
_arg_1.readBytes(_local_6, 0, _local_5);
_local_6.position = 0;
return (new Integer(_local_3, _local_5, _local_6));
case 6:
_local_6 = new ByteArray();
_arg_1.readBytes(_local_6, 0, _local_5);
_local_6.position = 0;
return (new ObjectIdentifier(_local_3, _local_5, _local_6));
case 3:
default:
if (_arg_1[_arg_1.position] == 0){
_arg_1.position++;
_local_5--;
};
case 4:
_local_12 = new ByteString(_local_3, _local_5);
_arg_1.readBytes(_local_12, 0, _local_5);
return (_local_12);
case 5:
return (null);
case 19:
_local_13 = new PrintableString(_local_3, _local_5);
_local_13.setString(_arg_1.readMultiByte(_local_5, "US-ASCII"));
return (_local_13);
case 34:
case 20:
_local_13 = new PrintableString(_local_3, _local_5);
_local_13.setString(_arg_1.readMultiByte(_local_5, "latin1"));
return (_local_13);
case 23:
_local_14 = new UTCTime(_local_3, _local_5);
_local_14.setUTCTime(_arg_1.readMultiByte(_local_5, "US-ASCII"));
return (_local_14);
};
}
/*private*/ static function getLengthOfNextElement(_arg_1:ByteArray):int
{
var _local_4:int;
var _local_2:uint = _arg_1.position;
_arg_1.position++;
var _local_3:int = _arg_1.readUnsignedByte();
if (_local_3 >= 128){
_local_4 = (_local_3 & 127);
_local_3 = 0;
while (_local_4 > 0) {
_local_3 = ((_local_3 << 8) | _arg_1.readUnsignedByte());
_local_4--;
};
};
_local_3 = (_local_3 + (_arg_1.position - _local_2));
_arg_1.position = _local_2;
return (_local_3);
}
/*private*/ static function isConstructedType(_arg_1:ByteArray):Boolean
{
var _local_2:int = _arg_1[_arg_1.position];
return (!(((_local_2 & 32) == 0)));
}
public static function wrapDER(_arg_1:int, _arg_2:ByteArray):ByteArray
{
var _local_3:ByteArray = new ByteArray();
_local_3.writeByte(_arg_1);
var _local_4:int = _arg_2.length;
if (_local_4 < 128){
_local_3.writeByte(_local_4);
}
else {
if (_local_4 < 0x0100){
_local_3.writeByte((1 | 128));
_local_3.writeByte(_local_4);
}
else {
if (_local_4 < 65536){
_local_3.writeByte((2 | 128));
_local_3.writeByte((_local_4 >> 8));
_local_3.writeByte(_local_4);
}
else {
if (_local_4 < (65536 * 0x0100)){
_local_3.writeByte((3 | 128));
_local_3.writeByte((_local_4 >> 16));
_local_3.writeByte((_local_4 >> 8));
_local_3.writeByte(_local_4);
}
else {
_local_3.writeByte((4 | 128));
_local_3.writeByte((_local_4 >> 24));
_local_3.writeByte((_local_4 >> 16));
_local_3.writeByte((_local_4 >> 8));
_local_3.writeByte(_local_4);
};
};
};
};
_local_3.writeBytes(_arg_2);
_local_3.position = 0;
return (_local_3);
}
}
class UTCTime implements IAsn1Type
{
protected var type:uint;
protected var len:uint;
public var date:Date;
public function UTCTime(_arg_1:uint, _arg_2:uint)
{
this.type = _arg_1;
this.len = _arg_2;
}
public function getLength():uint
{
return (this.len);
}
public function getType():uint
{
return (this.type);
}
public function setUTCTime(_arg_1:String):void
{
var _local_2:uint;
var _local_3:uint;
var _local_4:uint;
var _local_5:uint;
var _local_6:uint;
_local_2 = parseInt(_arg_1.substr(0, 2));
if (_local_2 < 50){
_local_2 = (_local_2 + 2000);
}
else {
_local_2 = (_local_2 + 1900);
};
_local_3 = parseInt(_arg_1.substr(2, 2));
_local_4 = parseInt(_arg_1.substr(4, 2));
_local_5 = parseInt(_arg_1.substr(6, 2));
_local_6 = parseInt(_arg_1.substr(8, 2));
this.date = new Date(_local_2, (_local_3 - 1), _local_4, _local_5, _local_6);
}
public function toString():String
{
return ((((((((DER.indent + "UTCTime[") + this.type) + "][") + this.len) + "][") + this.date) + "]"));
}
public function toDER():ByteArray
{
return (null);
}
}
class PrintableString implements IAsn1Type
{
protected var type:uint;
protected var len:uint;
protected var str:String;
public function PrintableString(_arg_1:uint, _arg_2:uint)
{
this.type = _arg_1;
this.len = _arg_2;
}
public function getLength():uint
{
return (this.len);
}
public function getType():uint
{
return (this.type);
}
public function setString(_arg_1:String):void
{
this.str = _arg_1;
}
public function getString():String
{
return (this.str);
}
public function toString():String
{
return ((DER.indent + this.str));
}
public function toDER():ByteArray
{
return (null);
}
}
dynamic class Sequence extends Array implements IAsn1Type
{
protected var type:uint;
protected var len:uint;
public function Sequence(_arg_1:uint=48, _arg_2:uint=0)
{
this.type = _arg_1;
this.len = _arg_2;
}
public function getLength():uint
{
return (this.len);
}
public function getType():uint
{
return (this.type);
}
public function toDER():ByteArray
{
var _local_1:ByteArray;
var _local_2:int;
var _local_3:IAsn1Type;
_local_1 = new ByteArray();
_local_2 = 0;
while (_local_2 < length) {
_local_3 = this[_local_2];
if (_local_3 == null){
_local_1.writeByte(5);
_local_1.writeByte(0);
}
else {
_local_1.writeBytes(_local_3.toDER());
};
_local_2++;
};
return (DER.wrapDER(this.type, _local_1));
}
public function toString():String
{
var _local_1:String;
var _local_2:String;
var _local_3:int;
var _local_4:Boolean;
var _local_5:String;
_local_1 = DER.indent;
DER.indent = (DER.indent + " ");
_local_2 = "";
_local_3 = 0;
while (_local_3 < length) {
if (this[_local_3] != null){
_local_4 = false;
for (_local_5 in this) {
if (((!((_local_3.toString() == _local_5))) && ((this[_local_3] == this[_local_5])))){
_local_2 = (_local_2 + (((_local_5 + ": ") + this[_local_3]) + "\n"));
_local_4 = true;
break;
};
};
if (!_local_4){
_local_2 = (_local_2 + (this[_local_3] + "\n"));
};
};
_local_3++;
};
DER.indent = _local_1;
return ((((((((((DER.indent + "Sequence[") + this.type) + "][") + this.len) + "][\n") + _local_2) + "\n") + _local_1) + "]"));
}
public function findAttributeValue(_arg_1:String):IAsn1Type
{
var _local_2:*;
var _local_3:*;
var _local_4:*;
var _local_5:ObjectIdentifier;
for each (_local_2 in this) {
if ((_local_2 is Set)){
_local_3 = _local_2[0];
if ((_local_3 is Sequence)){
_local_4 = _local_3[0];
if ((_local_4 is ObjectIdentifier)){
_local_5 = (_local_4 as ObjectIdentifier);
if (_local_5.toString() == _arg_1){
return ((_local_3[1] as IAsn1Type));
};
};
};
};
};
return (null);
}
}
dynamic class Set extends Sequence implements IAsn1Type
{
public function Set(_arg_1:uint=49, _arg_2:uint=0)
{
super(_arg_1, _arg_2);
}
override public function toString():String
{
var _local_1:String;
var _local_2:String;
_local_1 = DER.indent;
DER.indent = (DER.indent + " ");
_local_2 = join("\n");
DER.indent = _local_1;
return ((((((((((DER.indent + "Set[") + type) + "][") + len) + "][\n") + _local_2) + "\n") + _local_1) + "]"));
}
}
class ObjectIdentifier implements IAsn1Type
{
/*private*/ var type:uint;
/*private*/ var len:uint;
/*private*/ var oid:Array;
{
registerClassAlias("com.hurlant.util.der.ObjectIdentifier", ObjectIdentifier);
}
public function ObjectIdentifier(_arg_1:uint=0, _arg_2:uint=0, _arg_3:*=null)
{
this.type = _arg_1;
this.len = _arg_2;
if ((_arg_3 is ByteArray)){
this.parse((_arg_3 as ByteArray));
}
else {
if ((_arg_3 is String)){
this.generate((_arg_3 as String));
}
else {
throw (new Error("Invalid call to new ObjectIdentifier"));
};
};
}
/*private*/ function generate(_arg_1:String):void
{
this.oid = _arg_1.split(".");
}
/*private*/ function parse(_arg_1:ByteArray):void
{
var _local_2:uint;
var _local_3:Array;
var _local_4:uint;
var _local_5:Boolean;
_local_2 = _arg_1.readUnsignedByte();
_local_3 = [];
_local_3.push(uint((_local_2 / 40)));
_local_3.push(uint((_local_2 % 40)));
_local_4 = 0;
while (_arg_1.bytesAvailable > 0) {
_local_2 = _arg_1.readUnsignedByte();
_local_5 = ((_local_2 & 128) == 0);
_local_2 = (_local_2 & 127);
_local_4 = ((_local_4 * 128) + _local_2);
if (_local_5){
_local_3.push(_local_4);
_local_4 = 0;
};
};
this.oid = _local_3;
}
public function getLength():uint
{
return (this.len);
}
public function getType():uint
{
return (this.type);
}
public function toDER():ByteArray
{
var _local_1:Array;
var _local_2:int;
var _local_3:ByteArray;
var _local_4:int;
_local_1 = [];
_local_1[0] = ((this.oid[0] * 40) + this.oid[1]);
_local_2 = 2;
while (_local_2 < this.oid.length) {
_local_4 = parseInt(this.oid[_local_2]);
if (_local_4 < 128){
_local_1.push(_local_4);
}
else {
if (_local_4 < (128 * 128)){
_local_1.push(((_local_4 >> 7) | 128));
_local_1.push((_local_4 & 127));
}
else {
if (_local_4 < ((128 * 128) * 128)){
_local_1.push(((_local_4 >> 14) | 128));
_local_1.push((((_local_4 >> 7) & 127) | 128));
_local_1.push((_local_4 & 127));
}
else {
if (_local_4 < (((128 * 128) * 128) * 128)){
_local_1.push(((_local_4 >> 21) | 128));
_local_1.push((((_local_4 >> 14) & 127) | 128));
_local_1.push((((_local_4 >> 7) & 127) | 128));
_local_1.push((_local_4 & 127));
}
else {
throw (new Error("OID element bigger than we thought. :("));
};
};
};
};
_local_2++;
};
this.len = _local_1.length;
if (this.type == 0){
this.type = 6;
};
_local_1.unshift(this.len);
_local_1.unshift(this.type);
_local_3 = new ByteArray();
_local_2 = 0;
while (_local_2 < _local_1.length) {
_local_3[_local_2] = _local_1[_local_2];
_local_2++;
};
return (_local_3);
}
public function toString():String
{
return ((DER.indent + this.oid.join(".")));
}
public function dump():String
{
return ((((((("OID[" + this.type) + "][") + this.len) + "][") + this.toString()) + "]"));
}
}
class Integer extends BigInteger implements IAsn1Type
{
/*private*/ var type:uint;
/*private*/ var len:uint;
public function Integer(_arg_1:uint, _arg_2:uint, _arg_3:ByteArray)
{
this.type = _arg_1;
this.len = _arg_2;
super(_arg_3);
}
public function getLength():uint
{
return (this.len);
}
public function getType():uint
{
return (this.type);
}
override public function toString(_arg_1:Number=0):String
{
return ((((((((DER.indent + "Integer[") + this.type) + "][") + this.len) + "][") + super.toString(16)) + "]"));
}
public function toDER():ByteArray
{
return (null);
}
}
class ByteString extends ByteArray implements IAsn1Type
{
/*private*/ var type:uint;
/*private*/ var len:uint;
public function ByteString(_arg_1:uint=4, _arg_2:uint=0)
{
this.type = _arg_1;
this.len = _arg_2;
}
public function getLength():uint
{
return (this.len);
}
public function getType():uint
{
return (this.type);
}
public function toDER():ByteArray
{
return (DER.wrapDER(this.type, this));
}
override public function toString():String
{
return ((((((((DER.indent + "ByteString[") + this.type) + "][") + this.len) + "][") + Hex.fromArray(this)) + "]"));
}
}
interface IPRNG
{
function getPoolSize():uint;
function init(_arg_1:ByteArray):void;
function next():uint;
function dispose():void;
function toString():String;
}
interface IPad
{
function pad(_arg_1:ByteArray):void;
function unpad(_arg_1:ByteArray):void;
function setBlockSize(_arg_1:uint):void;
}
interface ISymmetricKey
{
function getBlockSize():uint;
function encrypt(_arg_1:ByteArray, _arg_2:uint=0):void;
function decrypt(_arg_1:ByteArray, _arg_2:uint=0):void;
function dispose():void;
function toString():String;
}
interface IAsn1Type
{
function getType():uint;
function getLength():uint;
function toDER():ByteArray;
}
interface IStreamCipher extends ICipher
{
}
interface IMode extends ICipher
{
}
interface ICipher
{
function getBlockSize():uint;
function encrypt(_arg_1:ByteArray):void;
function decrypt(_arg_1:ByteArray):void;
function dispose():void;
function toString():String;
}
interface IReduction
{
function convert(_arg_1:BigInteger):BigInteger;
function revert(_arg_1:BigInteger):BigInteger;
function reduce(_arg_1:BigInteger):void;
function mulTo(_arg_1:BigInteger, _arg_2:BigInteger, _arg_3:BigInteger):void;
function sqrTo(_arg_1:BigInteger, _arg_2:BigInteger):void;
}
// _SafeStr_2 = "_a_-_---" (String#68, DoABC#2)
// _SafeStr_7 = "_a_--_--" (String#469, DoABC#2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment