Section 1
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.2.0.3958";
public function ByteArrayAsset(){
super();
}
}
}//package mx.core
Section 2
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.2.0.3958";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(left:Number=0, top:Number=0, right:Number=0, bottom:Number=0){
super();
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 3
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.2.0.3958";
public function FlexMovieClip(){
super();
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 4
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 5
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 6
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
import flash.events.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(void:Point):Point;
function get name():String;
function set width(flash.display:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(flash.display:String):void;
function set scaleX(flash.display:Number):void;
function set scaleY(flash.display:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(flash.display:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(void:Point):Point;
function get height():Number;
function set blendMode(flash.display:String):void;
function get parent():DisplayObjectContainer;
function getBounds(String:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(flash.display:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(flash.display:Number):void;
function set accessibilityProperties(flash.display:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(flash.display:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(flash.display:Number):void;
function set mask(flash.display:DisplayObject):void;
function getRect(String:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(flash.display:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(mx.core:IFlexDisplayObject/mx.core:IFlexDisplayObject:stage/get:DisplayObject):Boolean;
function set opaqueBackground(flash.display:Object):void;
function set visible(flash.display:Boolean):void;
function get mask():DisplayObject;
function set x(flash.display:Number):void;
function set y(flash.display:Number):void;
function get transform():Transform;
function set filters(flash.display:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(flash.display:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 7
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get isDocument():Boolean;
function set repeaters(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function initializeRepeaterArrays(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 8
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.2.0.3958";
public function MovieClipAsset(){
super();
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(newWidth:Number, newHeight:Number):void{
width = newWidth;
height = newHeight;
}
public function move(x:Number, y:Number):void{
this.x = x;
this.y = y;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 9
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
import flash.display.*;
import flash.utils.*;
import flash.events.*;
import flash.system.*;
public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {
protected var initialHeight:Number;// = 0
private var loader:Loader;// = null
private var initialized:Boolean;// = false
protected var initialWidth:Number;// = 0
private var requestedHeight:Number;
private var requestedWidth:Number;
mx_internal static const VERSION:String = "3.2.0.3958";
public function MovieClipLoaderAsset(){
super();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
if (("allowLoadBytesCodeExecution" in loaderContext)){
loaderContext["allowLoadBytesCodeExecution"] = true;
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.loadBytes(movieClipData, loaderContext);
addChild(loader);
}
override public function get width():Number{
if (!initialized){
return (initialWidth);
};
return (super.width);
}
override public function set width(value:Number):void{
if (!initialized){
requestedWidth = value;
} else {
loader.width = value;
};
}
override public function get measuredHeight():Number{
return (initialHeight);
}
private function completeHandler(event:Event):void{
initialized = true;
initialWidth = loader.width;
initialHeight = loader.height;
if (!isNaN(requestedWidth)){
loader.width = requestedWidth;
};
if (!isNaN(requestedHeight)){
loader.height = requestedHeight;
};
dispatchEvent(event);
}
override public function set height(value:Number):void{
if (!initialized){
requestedHeight = value;
} else {
loader.height = value;
};
}
override public function get measuredWidth():Number{
return (initialWidth);
}
override public function get height():Number{
if (!initialized){
return (initialHeight);
};
return (super.height);
}
public function get movieClipData():ByteArray{
return (null);
}
}
}//package mx.core
Section 10
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 11
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.2.0.3958";
private static var counter:int = 0;
public function NameUtil(){
super();
}
public static function displayObjectToString(displayObject:DisplayObject):String{
var result:String;
var o:DisplayObject;
var s:String;
var indices:Array;
var displayObject = displayObject;
o = displayObject;
while (o != null) {
if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){
break;
};
s = o.name;
if ((o is IRepeaterClient)){
indices = IRepeaterClient(o).instanceIndices;
if (indices){
s = (s + (("[" + indices.join("][")) + "]"));
};
};
result = ((result == null)) ? s : ((s + ".") + result);
o = o.parent;
};
//unresolved jump
var _slot1 = e;
return (result);
}
public static function createUniqueName(object:Object):String{
if (!object){
return (null);
};
var name:String = getQualifiedClassName(object);
var index:int = name.indexOf("::");
if (index != -1){
name = name.substr((index + 2));
};
var charCode:int = name.charCodeAt((name.length - 1));
if ((((charCode >= 48)) && ((charCode <= 57)))){
name = (name + "_");
};
return ((name + counter++));
}
}
}//package mx.utils
Section 12
//Fwad (Fwad)
package {
import flash.display.*;
public class Fwad extends Sprite {
private var swf;
private var _height:Number;// = 400
private var _width:Number;// = 550
private var Swf:Class;
public function Fwad(){
Swf = Fwad_Swf;
swf = new Swf();
super();
FWAd_AS3.showAd({container:this, x:0, y:0, wid:_width, hei:_height, starPoolID:"13381", starSubPoolID:"34", adType:"loading", onClickStartBtn:fwAd_onClickStartBtn});
}
private function fwAd_onClickStartBtn():void{
addChild(swf);
}
}
}//package
Section 13
//FWAd_AS3 (FWAd_AS3)
package {
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
public class FWAd_AS3 extends Sprite {
public var loadingBar_bar:Sprite;
public var _FWAd:Object;
public var loadingBar:Sprite;
private var timeoutId:int;// = -1
public static const loadFrameworkTimeoutTime:int = 8;
public static const swfFolder:String = (("http://" + swfDomain) + "/fgAds/");
public static const loadFrameworkTimes:int = 2;
public static const ifLoadFrameworkErrorCanPlayGame:Boolean = true;
public static const frameworkSWFPath:String = (swfFolder + "Framework.swf");
public static const swfDomain:String = "www.freegameswow.com";
public static const newsSWFPath:String = (swfFolder + "News.swf");
public static const ifAdFailCanPlayGame:Boolean = true;
public static const ifAddCallBackErrorCanPlayGame:Boolean = false;
public static var xx:int;
public static var hei:int;
public static var loadFrameworkFailed:Boolean;
public static var _stage;
public static var id:String;
public static var xml:XML;
public static var lc_connName:String;
public static var onClickStartBtn:Function;
public static var yy:int;
public static var noShowLogo:Boolean;
public static var loadFrameworkSuccess:Boolean;
public static var frameworkLoader:Loader;
public static var loadGameCompleted:Boolean;
public static var AD_TYPE_CONTAINER:String = "container";
public static var AD_TYPE_LOADING:String = "loading";
public static var noShowForbidden:Boolean;
public static var hasLoadOnce:Boolean = false;
public static var canNotShowAd:Boolean;
public static var checkNewsFirstInitIntervalId:int = -1;
public static var newsLoader:Loader;
public static var frameworkInitFinished:Boolean;
public static var _root;
public static var newsValues:Object = {x:0, y:0};
public static var wid:int;
public static var news_lc:LocalConnection;
public static var ifIsLoadingAdShowStartBtn:Boolean;
public static var restLoadFrameworkTimes:int;
public static var onLoadXML:Function;
public static var lc:LocalConnection;
public static var lc_sendName:String;
public static var adType:String = AD_TYPE_LOADING;
public function FWAd_AS3(adValues:Object){
super();
xx = adValues.x;
yy = adValues.y;
wid = adValues.wid;
hei = adValues.hei;
id = adValues.id;
adType = adValues.adType;
ifIsLoadingAdShowStartBtn = adValues.ifIsLoadingAdShowStartBtn;
noShowLogo = adValues.noShowLogo;
noShowForbidden = adValues.noShowForbidden;
if (adValues.onClickCloseBtn){
onClickStartBtn = adValues.onClickCloseBtn;
} else {
onClickStartBtn = adValues.onClickStartBtn;
};
_FWAd = FWAd_AS3;
this.addEventListener(Event.ADDED_TO_STAGE, added);
}
private function added(event:Event):void{
var event = event;
this.removeEventListener(Event.ADDED_TO_STAGE, added);
this.addEventListener(Event.REMOVED_FROM_STAGE, removed);
Security.allowDomain(swfDomain);
Security.allowInsecureDomain(swfDomain);
fscommand("showMenu", "false");
//unresolved jump
var _slot1 = e;
_root = stage.getChildAt(0);
_stage = stage;
_root.contextMenu = new ContextMenu();
_root.contextMenu.hideBuiltInItems();
fscommand("trapallkeys", "true");
//unresolved jump
var _slot1 = e;
loadGameCompleted = (_root.loaderInfo.bytesLoaded == _root.loaderInfo.bytesTotal);
if (frameworkLoader){
frameworkInitFinished = true;
checkLoadGameCompleteAndTryStart();
if (frameworkInitFinished){
if (lc){
lc.client = this;
lc.send(lc_sendName, "that2this", "reset");
};
};
} else {
frameworkLoader = new Loader();
frameworkLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadFrameworkComplete);
frameworkLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadFrameworkError);
restLoadFrameworkTimes = loadFrameworkTimes;
loadFramework();
};
this.addChild(frameworkLoader);
var loadingBar_hei:Number = 8;
var loadingBar_x:Number = 10;
var loadingBar_wid:Number = (wid - (2 * loadingBar_x));
loadingBar = new Sprite();
loadingBar.x = loadingBar_x;
loadingBar.y = ((hei - loadingBar_hei) - 6);
this.addChild(loadingBar);
var loadingBar_bottom:Sprite = new Sprite();
loadingBar.addChild(loadingBar_bottom);
loadingBar_bar = new Sprite();
loadingBar.addChild(loadingBar_bar);
var loadingBar_line:Sprite = new Sprite();
loadingBar.addChild(loadingBar_line);
var g:Graphics = loadingBar_bottom.graphics;
g.clear();
g.beginFill(0x333333);
g.drawRect(0, 0, loadingBar_wid, loadingBar_hei);
g.endFill();
g = loadingBar_bar.graphics;
g.clear();
g.beginGradientFill("linear", [0xFFFFFF, 16750950], [1, 1], [63, 0xFF], new Matrix(0.006, 0, 0, 1, 0, 0));
loadingBar_bar.rotation = 90;
g.drawRect(0, -(loadingBar_wid), loadingBar_hei, loadingBar_wid);
g.endFill();
g = loadingBar_line.graphics;
g.clear();
g.lineStyle(1, 0x666666);
g.drawRect(0, 0, loadingBar_wid, loadingBar_hei);
g.endFill();
loadingBar_bar.width = 1;
loadingBar_bar.scaleX = 1;
switch (adType){
case AD_TYPE_LOADING:
break;
default:
loadingBar.visible = false;
break;
};
if (loadGameCompleted){
loadingBar.visible = false;
} else {
_root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadGameProgress);
_root.loaderInfo.addEventListener(Event.COMPLETE, loadGameComplete);
};
}
public function that2this(... _args):void{
var result:*;
var args = _args;
switch (args[0]){
case "initFinished":
frameworkInitFinished = true;
lc.send(lc_sendName, "that2this", "confirmInitFinished", getFWAdValuesByNameArr(args.slice(1)));
break;
case "AsmMachine.run()":
result = Runner.runStr16(this, args[2]);
lc.send(lc_sendName, "that2this", "AsmMachine.run()", args[1], "success", result);
//unresolved jump
var _slot1 = e;
lc.send(lc_sendName, "that2this", "AsmMachine.run()", args[1], "error", _slot1.toString());
break;
case "clickStartBtn":
clickStartBtn();
break;
case "canNotShowAd":
case "noId":
canNotShowAd = true;
checkLoadGameCompleteAndTryStart();
break;
case "xml":
xml = new XML(args[1]);
//unresolved jump
var _slot1 = e;
trace(("e=" + _slot1));
if (onLoadXML != null){
onLoadXML();
};
break;
};
}
private function getFWAdValuesByNameArr(nameArr:Array):Object{
var name:String;
var obj:Object = new Object();
for each (name in nameArr) {
obj[name] = FWAd_AS3[name];
};
return (obj);
}
private function clickStartBtn():void{
if (onClickStartBtn != null){
onClickStartBtn();
onClickStartBtn = null;
};
if (this.parent){
this.parent.removeChild(this);
};
this.visible = false;
this.x = -10000;
}
private function loadGameProgress(event:ProgressEvent):void{
var _local2:Number;
switch (adType){
case AD_TYPE_LOADING:
_local2 = (event.bytesLoaded / event.bytesTotal);
loadingBar_bar.scaleX = 1;
loadingBar_bar.scaleY = _local2;
break;
default:
_root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadGameProgress);
break;
};
}
private function removed(event:Event):void{
this.removeEventListener(Event.REMOVED_FROM_STAGE, removed);
_root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadGameProgress);
_root.loaderInfo.removeEventListener(Event.COMPLETE, loadGameComplete);
onClickStartBtn = null;
if (frameworkInitFinished){
if (lc){
lc.send(lc_sendName, "that2this", "removed");
lc.client = new Object();
};
};
}
private function loadFrameworkError(event:IOErrorEvent):void{
var event = event;
trace(("剩余尝试加载次数:" + restLoadFrameworkTimes));
clearTimeout(timeoutId);
if (--restLoadFrameworkTimes < 0){
loadFrameworkFailed = true;
checkLoadGameCompleteAndTryStart();
} else {
frameworkLoader.close();
//unresolved jump
var _slot1 = e;
loadFramework();
};
}
private function loadFrameworkComplete(event:Event):void{
this.addEventListener(Event.ENTER_FRAME, checkFrameworkFirstInit);
}
private function checkFrameworkFirstInit(event:Event){
var movie:AVM1Movie;
var event = event;
movie = (frameworkLoader.content as AVM1Movie);
//unresolved jump
var _slot1 = e;
return;
var ran:int = Math.round((movie.getBounds(movie).x / 10));
if (ran < -1000){
this.removeEventListener(Event.ENTER_FRAME, checkFrameworkFirstInit);
lc_connName = ("_FWAd" + ran);
lc_sendName = ("_Framework" + ran);
lc = new LocalConnection();
lc.allowDomain("*");
lc.addEventListener(StatusEvent.STATUS, lc_onStatus);
lc.connect(lc_connName);
lc.client = this;
loadFrameworkSuccess = true;
clearTimeout(timeoutId);
checkLoadGameCompleteAndTryStart();
};
}
private function checkLoadGameCompleteAndTryStart():void{
if (loadGameCompleted){
if (loadFrameworkFailed){
trace("加载 framework 失败");
if (((ifLoadFrameworkErrorCanPlayGame) || (checkIsOurDomain()))){
trace("自动跳到游戏");
clickStartBtn();
} else {
trace("不自动跳到游戏");
};
} else {
if (canNotShowAd){
if (checkIsOurDomain()){
clickStartBtn();
};
};
};
};
}
private function loadFrameworkTimeout():void{
trace("loadFrameworkTimeout");
loadFrameworkError(null);
}
private function loadGameComplete(event:Event):void{
hasLoadOnce = false;
loadGameCompleted = true;
loadingBar.visible = false;
checkLoadGameCompleteAndTryStart();
if (frameworkInitFinished){
lc.send(lc_sendName, "that2this", "loadGameCompleted");
};
}
private function loadFramework():void{
frameworkLoader.load(new URLRequest(frameworkSWFPath));
clearTimeout(timeoutId);
timeoutId = setTimeout(loadFrameworkTimeout, (loadFrameworkTimeoutTime * 1000));
}
private function lc_onStatus(event:StatusEvent):void{
switch (event.level){
case "error":
trace(("lc onStatus 出错 event=" + event));
break;
};
}
public function closeAd():void{
clickStartBtn();
}
private function checkIsOurDomain():Boolean{
var url:String;
if (_root.loaderInfo){
url = _root.loaderInfo.url.toLowerCase();
return ((((((((url.indexOf(".youyouwin.com/") > 0)) || ((url.indexOf(".7k7k.com/") > 0)))) || ((url.indexOf(".flash8.net/") > 0)))) || ((url.indexOf("file:///") == 0))));
};
return (true);
}
public static function showNews(_newsValues:Object=null):void{
var valueName:String;
clearInterval(checkNewsFirstInitIntervalId);
newsValues.wid = wid;
for (valueName in _newsValues) {
newsValues[valueName] = _newsValues[valueName];
};
if (newsValues.id){
} else {
newsValues.id = (id + "_news");
};
var container:Sprite = ((newsValues.container) || (_root));
if (container){
newsLoader = new Loader();
container.addChild(newsLoader);
newsLoader.x = newsValues.x;
newsLoader.y = newsValues.y;
newsLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadNewsComplete);
newsLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadNewsError);
newsLoader.load(new URLRequest(newsSWFPath));
} else {
trace("未指定容器,请改成例如: FWAd_AS3.showNews({container:root}");
};
news_lc = new LocalConnection();
news_lc.addEventListener(StatusEvent.STATUS, news_lc_status);
}
public static function checkNewsFirstInit():void{
var movie:AVM1Movie;
movie = (newsLoader.content as AVM1Movie);
//unresolved jump
var _slot1 = e;
return;
var ran:int = Math.round((movie.getBounds(movie).x / 10));
if (ran < -1000){
clearInterval(checkNewsFirstInitIntervalId);
news_lc.send(("_News" + ran), "that2this", "newsValues", newsValues);
};
}
public static function showAd(_adValues:Object=null):void{
var valueName:String;
var adValues:Object = {x:xx, y:yy, wid:wid, hei:hei, id:id, adType:AD_TYPE_CONTAINER};
for (valueName in _adValues) {
adValues[valueName] = _adValues[valueName];
};
if (_adValues){
if (((_adValues.starPoolID) && (_adValues.starSubPoolID))){
adValues.id = ((_adValues.starPoolID + "\n") + _adValues.starSubPoolID);
};
};
var container:Sprite = ((adValues.container) || (_root));
if (container){
if (adValues.adType == AD_TYPE_LOADING){
if (hasLoadOnce){
trace("缓冲广告不允许短时间内重复初始化");
return;
};
hasLoadOnce = true;
};
} else {
trace("未指定容器,请改成例如: FWAd_AS3.showAd({container:root}");
return;
};
container.addChild(new FWAd_AS3(adValues));
}
public static function loadNewsError(event:IOErrorEvent):void{
}
public static function loadNewsComplete(event:Event):void{
clearInterval(checkNewsFirstInitIntervalId);
checkNewsFirstInitIntervalId = setInterval(checkNewsFirstInit, 100);
}
public static function news_lc_status(... _args):void{
}
public static function getParam(paramName:String):String{
if (xml){
return (String(xml.attribute(paramName)));
};
trace("xml未加载完毕, 或xml加载失败");
return (null);
}
}
}//package
import flash.display.*;
import flash.utils.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
class Runner {
private static var numData:ByteArray = new ByteArray();
private static var offset:int;
private static var codeData:ByteArray;
private function Runner(){
super();
}
private static function readDoubleRev():Number{
numData[3] = codeData[offset++];
numData[2] = codeData[offset++];
numData[1] = codeData[offset++];
numData[0] = codeData[offset++];
numData[7] = codeData[offset++];
numData[6] = codeData[offset++];
numData[5] = codeData[offset++];
numData[4] = codeData[offset++];
numData.position = 0;
return (numData.readDouble());
}
public static function run(thisObj, _codeData:ByteArray){
var prevRegId:int;
var regStr:String;
var i:int;
var L:int;
var varName:String;
var obj:*;
var value:*;
var value1:*;
var value2:*;
var register:int;
var registerStr:String;
var fName:String;
var count:int;
var classObj:Class;
var fObj:*;
var BranchOffset:int;
var Length:int;
var op:int;
var _local27:int;
codeData = _codeData;
if (codeData.length > 0){
} else {
return;
};
codeData.uncompress();
var stack:Array = new Array();
var version:int = codeData.readShort();
var registerArr:Array = codeData.readObject();
var constStrArr:Array = codeData.readObject();
if (registerArr){
prevRegId = registerArr.length;
while (--prevRegId >= 0) {
regStr = registerArr[prevRegId];
if (regStr === null){
} else {
switch (regStr){
case "this":
case "'this'":
registerArr[prevRegId] = thisObj;
break;
case "arguments":
case "'arguments'":
throw (new Error("暂不支持 arguments"));
case "super":
case "'super'":
throw (new Error("暂不支持 super"));
case "_root":
registerArr[prevRegId] = thisObj.root;
break;
case "_parent":
registerArr[prevRegId] = thisObj.parent;
break;
case "_global":
throw (new Error("暂不支持 _global"));
};
};
};
} else {
registerArr = new Array();
};
var argsArr:Array = new Array();
offset = codeData.position;
var endOffset:int = codeData.length;
while (offset < endOffset) {
op = codeData[offset++];
if (op >= 128){
var _temp1 = codeData[offset++];
Length = (_temp1 | (codeData[offset++] << 8));
} else {
Length = 0;
};
switch (op){
case 0:
break;
case 4:
if ((thisObj is MovieClip)){
thisObj.nextFrame();
};
break;
case 5:
if ((thisObj is MovieClip)){
thisObj.prevFrame();
};
break;
case 6:
if ((thisObj is MovieClip)){
thisObj.play();
};
break;
case 7:
if ((thisObj is MovieClip)){
thisObj.stop();
};
break;
case 11:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 - value2);
stack.push(value);
break;
case 12:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 * value2);
stack.push(value);
break;
case 13:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 / value2);
stack.push(value);
break;
case 16:
value2 = stack.pop();
value1 = stack.pop();
value = ((value1) && (value2));
stack.push(value);
break;
case 17:
value2 = stack.pop();
value1 = stack.pop();
value = ((value1) || (value2));
stack.push(value);
break;
case 18:
value = stack.pop();
value = !(value);
stack.push(value);
break;
case 19:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 == value2);
stack.push(value);
break;
case 23:
stack.pop();
break;
case 24:
value = stack.pop();
value = int(value);
stack.push(value);
break;
case 28:
cacheVariable(stack);
break;
case 29:
throw (new Error("不支持 setVariable"));
case 38:
value = stack.pop();
trace(value);
break;
case 48:
value = stack.pop();
value = int(value);
if (value <= 0){
value = 0;
} else {
value = int((Math.random() * value));
};
stack.push(value);
break;
case 50:
value = stack.pop();
value = value.charCodeAt(0);
stack.push(value);
break;
case 51:
value = stack.pop();
value = String.fromCharCode(value);
stack.push(value);
break;
case 52:
value = getTimer();
stack.push(value);
break;
case 61:
fName = getFNameAndArgs(stack, argsArr);
value = thisObj[fName].apply(thisObj, argsArr);
stack.push(value);
break;
case 62:
value = stack.pop();
return (value);
case 63:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 % value2);
stack.push(value);
break;
case 64:
fName = getFNameAndArgs(stack, argsArr);
value = newClass(fName, argsArr);
stack.push(value);
break;
case 66:
count = stack.pop();
value = new Array();
while (--count >= 0) {
value.push(stack.pop());
};
stack.push(value);
break;
case 67:
count = stack.pop();
value = new Object();
while (--count >= 0) {
value2 = stack.pop();
value1 = stack.pop();
value[value1] = value2;
};
stack.push(value);
break;
case 68:
value = stack.pop();
value = typeof(value);
stack.push(value);
break;
case 71:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 + value2);
stack.push(value);
break;
case 72:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 < value2);
stack.push(value);
break;
case 73:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 == value2);
stack.push(value);
break;
case 74:
value = stack.pop();
value = Number(value);
stack.push(value);
break;
case 75:
value = stack.pop();
value = String(value);
stack.push(value);
break;
case 76:
value = stack.pop();
stack.push(value);
stack.push(value);
break;
case 77:
value2 = stack.pop();
value1 = stack.pop();
stack.push(value2);
stack.push(value1);
break;
case 78:
cacheMember(stack);
break;
case 79:
value2 = stack.pop();
value1 = stack.pop();
value = stack.pop();
value[value1] = value2;
break;
case 80:
value = stack.pop();
value++;
stack.push(value);
break;
case 81:
value = stack.pop();
value--;
stack.push(value);
break;
case 82:
fName = stack.pop();
fObj = stack.pop();
count = stack.pop();
value = new Array();
while (--count >= 0) {
value.push(stack.pop());
};
value = fObj[fName].apply(fObj, value);
stack.push(value);
break;
case 83:
varName = cacheMember(stack);
stack.pop();
stack.push(varName);
fName = getFNameAndArgs(stack, argsArr);
value = newClass(fName, argsArr);
stack.push(value);
break;
case 84:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 is value2);
stack.push(value);
break;
case 85:
obj = stack.pop();
stack.push(null);
for (varName in obj) {
stack.push(varName);
};
break;
case 96:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 & value2);
stack.push(value);
break;
case 97:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 | value2);
stack.push(value);
break;
case 98:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 ^ value2);
stack.push(value);
break;
case 99:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 << value2);
stack.push(value);
break;
case 100:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 >> value2);
stack.push(value);
break;
case 101:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 >>> value2);
stack.push(value);
break;
case 102:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 === value2);
stack.push(value);
break;
case 103:
value2 = stack.pop();
value1 = stack.pop();
value = (value1 > value2);
stack.push(value);
break;
case 129:
if ((thisObj is MovieClip)){
var _temp2 = codeData[offset++];
thisObj.gotoAndStop(((_temp2 | (codeData[offset++] << 8)) + 1));
} else {
offset = (offset + 2);
};
break;
case 131:
value1 = getStr();
value2 = getStr();
if (value1.indexOf("FSCommand:") == 0){
value1 = value1.substr(10);
fscommand(value1, value2);
} else {
if (value2.indexOf("_level") == 0){
} else {
navigateToURL(new URLRequest(value1), value2);
};
};
break;
case 135:
register = codeData[offset++];
value = stack[(stack.length - 1)];
registerArr[register] = value;
break;
case 150:
_local27 = (offset + Length);
while (offset < _local27) {
switch (codeData[offset++]){
case 0:
stack.push(getStr());
break;
case 1:
stack.push(readFloatRev());
break;
case 2:
stack.push(null);
break;
case 3:
stack.push(undefined);
break;
case 4:
stack.push(registerArr[codeData[offset++]]);
break;
case 5:
stack.push((codeData[offset++]) ? true : false);
break;
case 6:
stack.push(readDoubleRev());
break;
case 7:
var _temp3 = codeData[offset++];
var _temp4 = (_temp3 | (codeData[offset++] << 8));
var _temp5 = (_temp4 | (codeData[offset++] << 16));
stack.push((_temp5 | (codeData[offset++] << 24)));
break;
case 8:
stack.push(constStrArr[codeData[offset++]]);
break;
case 9:
var _temp6 = codeData[offset++];
stack.push(constStrArr[(_temp6 | (codeData[offset++] << 8))]);
break;
default:
throw (new Error("未处理的 push type"));
};
};
break;
case 153:
var _temp7 = codeData[offset++];
BranchOffset = (_temp7 | (codeData[offset++] << 8));
if ((BranchOffset >>> 15)){
BranchOffset = (BranchOffset | 4294901760);
};
offset = (offset + BranchOffset);
break;
case 157:
value = stack.pop();
if (value){
var _temp8 = codeData[offset++];
BranchOffset = (_temp8 | (codeData[offset++] << 8));
if ((BranchOffset >>> 15)){
BranchOffset = (BranchOffset | 4294901760);
};
offset = (offset + BranchOffset);
} else {
offset = (offset + 2);
};
break;
default:
throw (new Error(("暂不支持的 op: " + op)));
};
};
return (null);
}
private static function varName2Obj(varName:String){
var varName = varName;
return (getDefinitionByName(varName));
//unresolved jump
var _slot1 = e;
return (getDefinitionByName(("flash.display." + varName)));
//unresolved jump
var _slot1 = e;
return (getDefinitionByName(("flash.text." + varName)));
//unresolved jump
var _slot1 = e;
return (new GetVariableCache(varName));
}
public static function runStr16(thisObj, str16:String){
var arr:Array = str16.split(" ");
var codeData:ByteArray = new ByteArray();
var offset:int;
for each (str16 in arr) {
var _temp1 = offset;
offset = (offset + 1);
var _local8 = _temp1;
codeData[_local8] = int(("0x" + str16));
};
return (run(thisObj, codeData));
}
private static function newClass(fName:String, argsArr:Array){
var classObj:Class = (varName2Obj(fName) as Class);
switch (argsArr.length){
case 0:
return (new (classObj));
case 1:
return (new classObj(argsArr[0]));
case 2:
return (new classObj(argsArr[0], argsArr[1]));
case 3:
return (new classObj(argsArr[0], argsArr[1], argsArr[2]));
case 4:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3]));
case 5:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3], argsArr[4]));
case 6:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3], argsArr[4], argsArr[5]));
case 7:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3], argsArr[4], argsArr[5], argsArr[6]));
case 8:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3], argsArr[4], argsArr[5], argsArr[6], argsArr[7]));
case 9:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3], argsArr[4], argsArr[5], argsArr[6], argsArr[7], argsArr[8]));
case 10:
return (new classObj(argsArr[0], argsArr[1], argsArr[2], argsArr[3], argsArr[4], argsArr[5], argsArr[6], argsArr[7], argsArr[8], argsArr[9]));
default:
throw (new Error(("暂不支持的参数个数: " + argsArr.length)));
};
}
private static function getFNameAndArgs(stack:Array, argsArr:Array, hasFName:Boolean=true):String{
var fName:String;
argsArr.splice(0, argsArr.length);
if (hasFName){
fName = stack.pop();
};
var count:int = stack.pop();
while (--count >= 0) {
argsArr.push(stack.pop());
};
return (fName);
}
private static function getStr():String{
var len:int;
if (codeData[offset]){
len = 1;
do {
var _temp1 = len;
len = (len + 1);
} while (codeData[(offset + _temp1)]);
codeData.position = offset;
offset = (offset + len);
return (codeData.readUTFBytes(len));
};
offset++;
return ("");
}
private static function cacheMember(stack:Array):String{
var varName:String;
var value:*;
var stack = stack;
varName = stack.pop();
var obj:Object = stack.pop();
if ((obj is GetVariableCache)){
varName = (((obj as GetVariableCache).varName + ".") + varName);
value = getDefinitionByName(varName);
//unresolved jump
var _slot1 = e;
value = new GetVariableCache(varName);
} else {
value = obj[varName];
};
stack.push(value);
return (varName);
}
private static function readFloatRev():Number{
numData[3] = codeData[offset++];
numData[2] = codeData[offset++];
numData[1] = codeData[offset++];
numData[0] = codeData[offset++];
numData.position = 0;
return (numData.readFloat());
}
private static function cacheVariable(stack:Array):String{
var varName:String = stack.pop();
var value:* = varName2Obj(varName);
stack.push(value);
return (varName);
}
}
class GetVariableCache {
public var varName:String;
private function GetVariableCache(_varName:String){
super();
varName = _varName;
}
}
Section 14
//Fwad_Swf (Fwad_Swf)
package {
import mx.core.*;
import flash.utils.*;
public class Fwad_Swf extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Fwad_Swf(){
dataClass = Fwad_Swf_dataClass;
super();
initialWidth = (11000 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 15
//Fwad_Swf_dataClass (Fwad_Swf_dataClass)
package {
import mx.core.*;
public class Fwad_Swf_dataClass extends ByteArrayAsset {
}
}//package