Guest User

Untitled

a guest
Nov 12th, 2012
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package {
  2.     import flash.external.*;
  3.  
  4.     public class ExternalCall {
  5.  
  6.         public static function Simple(_arg1:string):void{
  7.             call(_arg1);
  8.         }
  9.         public static function UploadStart(_arg1:string, _arg2:object):void{
  10.             call(_arg1, EscapeMessage(_arg2));
  11.         }
  12.         public static function UploadProgress(_arg1:string, _arg2:uint, _arg3:uint):void{
  13.             call(_arg1, EscapeMessage(_arg2), EscapeMessage(_arg3));
  14.         }
  15.         public static function UploadSuccess(_arg1:string, _arg2:string="", _arg3:object=""):void{
  16.             call(_arg1, EscapeMessage(_arg2), _arg3);
  17.         }
  18.         public static function UploadError(_arg1:string, _arg2:number, _arg3:string=""):void{
  19.             call(_arg1, EscapeMessage(_arg2), EscapeMessage(_arg3));
  20.         }
  21.         public static function UploadComplete(_arg1:string, _arg2:object):void{
  22.             call(_arg1, _arg2);
  23.         }
  24.         public static function Debug(_arg1:string, _arg2:string):void{
  25.             call(_arg1, EscapeMessage(_arg2));
  26.         }
  27.         public static function Bool(_arg1:string):boolean{
  28.             return (call(_arg1));
  29.         }
  30.         private static function call(... _args):boolean{
  31.             var _local2:array;
  32.             var _local3:RegExp;
  33.             if (ExternalInterface.available){
  34.                 _local2 = (_args as array);
  35.                 _local3 = /[^().a-z0-9_]/gi;
  36.                 _local2[0] = _local2[0].replace(_local3, "");
  37.                 return (ExternalInterface.call.apply(null, _local2));
  38.             };
  39.             return (false);
  40.         }
  41.         private static function EscapeMessage(_arg1){
  42.             if ((_arg1 is string)){
  43.                 _arg1 = EscapeString(_arg1);
  44.             } else {
  45.                 if ((_arg1 is array)){
  46.                     _arg1 = EscapeArray(_arg1);
  47.                 } else {
  48.                     if ((_arg1 is object)){
  49.                         _arg1 = EscapeObject(_arg1);
  50.                     };
  51.                 };
  52.             };
  53.             return (_arg1);
  54.         }
  55.         private static function EscapeString(_arg1:string):string{
  56.             var _local2:RegExp = /\\/g;
  57.             return (_arg1.replace(_local2, "\\\\"));
  58.         }
  59.         private static function EscapeArray(_arg1:array):array{
  60.             var _local2:uint = _arg1.length;
  61.             var _local3:uint;
  62.             while (_local3 < _local2) {
  63.                 _arg1[_local3] = EscapeMessage(_arg1[_local3]);
  64.                 _local3++;
  65.             };
  66.             return (_arg1);
  67.         }
  68.         private static function EscapeObject(_arg1:object):object{
  69.             var _local2:string;
  70.             for (_local2 in _arg1) {
  71.                 _arg1[_local2] = EscapeMessage(_arg1[_local2]);
  72.             };
  73.             return (_arg1);
  74.         }
  75.  
  76.     }
  77. }//package
  78. ?package {
  79.     import flash.events.*;
  80.     import flash.utils.*;
  81.     import flash.net.*;
  82.     import flash.display.*;
  83.     import by.blooddy.crypto.image.*;
  84.     import flash.external.*;
  85.     import flash.system.*;
  86.     import flash.ui.*;
  87.  
  88.     public class Main extends Sprite {
  89.  
  90.         public const version:string = " 1.1";
  91.         private const EXIF_MARKER:array;
  92.  
  93.         private var insideFrame:boolean = false;
  94.         private var area:Sprite;
  95.         private var _file_ref:FileReferenceList;
  96.         private var files:array;
  97.         private var file:FileReference;
  98.         private var totalSize:number = 0;
  99.         private var loadedSize:number = 0;
  100.         private var totalCount:number = 0;
  101.         private var loadedCount:number = 0;
  102.         private var _valid_file_extensions:array;
  103.         private var postData:UploadPostData;
  104.         private var filesList:array;
  105.         private var uploadStarted:boolean = false;
  106.         public var config:object;
  107.         private var ERROR_CODE_SIZE_TOO_BIG:number = 100;
  108.         private var ERROR_CODE_SIZE_ZERO_BYTE:number = 110;
  109.         private var ERROR_CODE_INVALID_FILETYPE:number = 120;
  110.         private var ERROR_CODE_HTTP_ERROR:number = 200;
  111.         private var ERROR_CODE_MISSING_UPLOAD_URL:number = 210;
  112.         private var ERROR_CODE_IO_ERROR:number = 220;
  113.         private var ERROR_CODE_SECURITY_ERROR:number = 230;
  114.         private var ERROR_CODE_UPLOAD_STOPPED:number = 240;
  115.         private var ERROR_CODE_UPLOAD_FAILED:number = 250;
  116.  
  117.         public function Main():void{
  118.             this.area = new Sprite();
  119.             this._valid_file_extensions = new array();
  120.             this.filesList = new array();
  121.             this.EXIF_MARKER = [0xFF, 225];
  122.             super();
  123.             if (stage){
  124.                 this.init();
  125.             } else {
  126.                 addEventListener(Event.ADDED_TO_STAGE, this.init);
  127.             };
  128.         }
  129.         private function init(_arg1:Event=null):void{
  130.             var mouseMove:* = null;
  131.             var mouseOut:* = null;
  132.             var e = _arg1;
  133.             mouseMove = function (_arg1:MouseEvent):void{
  134.                 var _local2:number = _arg1.target.mouseX;
  135.                 var _local3:number = _arg1.target.mouseY;
  136.                 var _local4:number = ((stage.stageWidth) ? stage.stageWidth : 103);
  137.                 var _local5:number = ((stage.stageHeight) ? stage.stageHeight : 23);
  138.                 var _local6:boolean = (((((((_local2 <= 0)) || ((_local2 >= _local4)))) || ((_local3 <= 0)))) || ((_local3 >= _local5)));
  139.                 if (((insideFrame) && (_local6))){
  140.                     mouseOut();
  141.                 } else {
  142.                     if (((!(insideFrame)) && (!(_local6)))){
  143.                         mouseOver();
  144.                     };
  145.                 };
  146.             };
  147.             var mouseOver:* = function ():void{
  148.                 if (ExternalInterface.available){
  149.                     ExternalInterface.call(config.onMouseOver);
  150.                 };
  151.                 stage.addEventListener(Event.MOUSE_LEAVE, mouseOut);
  152.                 insideFrame = true;
  153.             };
  154.             mouseOut = function ():void{
  155.                 if (ExternalInterface.available){
  156.                     ExternalInterface.call(config.onMouseOut);
  157.                 };
  158.                 stage.removeEventListener(Event.MOUSE_LEAVE, mouseOut);
  159.                 insideFrame = false;
  160.             };
  161.             Security.allowdomain("*");
  162.             var counter:* = 0;
  163.             root.addEventListener(Event.ENTER_FRAME, function ():void{
  164.                 if (++counter > 100){
  165.                     counter = 0;
  166.                 };
  167.             });
  168.             stage.align = StageAlign.TOP_LEFT;
  169.             stage.scalemode = StageScaleMode.NO_SCALE;
  170.             removeEventListener(Event.ADDED_TO_STAGE, this.init);
  171.             if (ExternalInterface.available){
  172.                 ExternalInterface.addCallback("configureServer", this.configureServer);
  173.             };
  174.             this.config = Config.loadConfig(this.root.loaderInfo);
  175.             this.loadFileExtensions(this.config.file_types);
  176.             this._file_ref = new FileReferenceList();
  177.             this._file_ref.addEventListener(Event.SELECT, this.onFilesSelected);
  178.             contextmenu = new contextmenu();
  179.             contextmenu.hidebuiltinitems();
  180.             var ciVkontakteRu:* = new contextmenuitem(("VK Photo Uploader Lite" + this.version));
  181.             ciVkontakteRu.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function (_arg1):void{
  182.                 navigateToURL(new URLRequest("http://vkontakte.ru"), "_blank");
  183.             });
  184.             contextmenu.customitems.push(ciVkontakteRu);
  185.             stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
  186.             stage.addEventListener(MouseEvent.MOUSE_DOWN, function ():void{
  187.                 if (ExternalInterface.available){
  188.                     ExternalInterface.call(config.onmousedown);
  189.                 };
  190.             });
  191.             stage.addEventListener(MouseEvent.MOUSE_UP, function ():void{
  192.                 if (((insideFrame) && (ExternalInterface.available))){
  193.                     ExternalInterface.call(config.onmouseup);
  194.                 };
  195.             });
  196.             stage.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{
  197.                 try {
  198.                     if (config.onSelectClick){
  199.                         ExternalCall.Simple(config.onSelectClick);
  200.                     };
  201.                     _file_ref.browse([new FileFilter(config.file_types_description, config.file_types)]);
  202.                 } catch(e) {
  203.                 };
  204.             });
  205.             this.area.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{
  206.                 try {
  207.                     _file_ref.browse([new FileFilter(config.file_types_description, config.file_types)]);
  208.                 } catch(e) {
  209.                 };
  210.             });
  211.             this.area.graphics.beginfill(0, 0);
  212.             this.area.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
  213.             this.area.graphics.endfill();
  214.             this.area.x = (this.area.y = 0);
  215.             this.area.buttonMode = true;
  216.             this.area.usehandcursor = true;
  217.             stage.addChild(this.area);
  218.         }
  219.         private function configureServer(_arg1:string, _arg2:string):void{
  220.             if (!this.uploadStarted){
  221.                 Config.setConfig({
  222.                     upload_url:_arg1,
  223.                     post_data:_arg2
  224.                 });
  225.             };
  226.         }
  227.         private function onFilesSelected(_arg1:Event):void{
  228.             var _local2:*;
  229.             this.files = _arg1.target.fileList.slice(0, this.config.max_files);
  230.             for (_local2 in this.files) {
  231.                 this.totalSize = (this.totalSize + this.files[_local2].size);
  232.             };
  233.             this.totalCount = this.files.length;
  234.             this.filesList = this.files;
  235.             this.loadFiles(this.filesList);
  236.         }
  237.         private function loadFiles(_arg1:array):void{
  238.             var files:* = _arg1;
  239.             if (((!(files)) || ((files.length == 0)))){
  240.                 ExternalCall.UploadComplete(this.config.onUploadComplete, {totalCount:this.totalCount});
  241.                 return;
  242.             };
  243.             this.file = files.shift();
  244.             if (this.file.size == 0){
  245.                 this.debug("File size is zero bytes");
  246.                 ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_SIZE_ZERO_BYTE);
  247.                 this.loadFiles(files);
  248.                 return;
  249.             };
  250.             if (((!((this.config.file_size_limit == 0))) && ((this.config.file_size_limit < this.file.size)))){
  251.                 this.debug(("File size exceeded " + this.file.size.tostring()));
  252.                 ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_SIZE_TOO_BIG, this.file.size.tostring());
  253.                 this.loadFiles(files);
  254.                 return;
  255.             };
  256.             if (!this.validFileType(this.file.name)){
  257.                 this.debug(("Invalid file type " + this.file.name));
  258.                 ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_INVALID_FILETYPE, this.file.name);
  259.                 this.loadFiles(files);
  260.                 return;
  261.             };
  262.             if (this.config.upload_url == ""){
  263.                 this.debug("Upload URL is empty");
  264.                 ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_MISSING_UPLOAD_URL);
  265.                 this.loadFiles(files);
  266.                 return;
  267.             };
  268.             this.file.addEventListener(Event.COMPLETE, this.onFileLoaded);
  269.             try {
  270.                 this.file.load();
  271.             } catch(error:error) {
  272.                 debug("Upload error");
  273.                 ExternalCall.UploadError(config.onUploadError, ERROR_CODE_UPLOAD_FAILED, error.message);
  274.                 loadFiles(files);
  275.                 return;
  276.             };
  277.         }
  278.         private function onFileLoaded(_arg1:Event):void{
  279.             var file:* = undefined;
  280.             var e:* = _arg1;
  281.             file = e.target;
  282.             ExternalCall.UploadStart(this.config.onUploadStart, {
  283.                 filename:file.name,
  284.                 type:file.type,
  285.                 size:file.size,
  286.                 num:this.loadedCount,
  287.                 totalCount:this.totalCount,
  288.                 loadedSize:this.loadedSize,
  289.                 totalSize:this.totalSize
  290.             });
  291.             e.currentTarget.removeEventListener(e.type, this.onFileLoaded);
  292.             var data:* = file.data;
  293.             var imgLoader:* = new Loader();
  294.             imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (_arg1:Event):void{
  295.                 onImageLoaded(_arg1, file);
  296.                 e.target.data.clear();
  297.             });
  298.             try {
  299.                 imgLoader.loadBytes(data);
  300.             } catch(e) {
  301.                 debug("Upload error");
  302.                 ExternalCall.UploadError(config.onUploadError, ERROR_CODE_UPLOAD_FAILED, e.message);
  303.                 loadFiles(filesList);
  304.                 return;
  305.             };
  306.         }
  307.         private function getExifPosition(_arg1:ByteArray):number{
  308.             var _local2:number = 0;
  309.             var _local3:number = _arg1.length;
  310.             while ((((_local2 < 65536)) && ((_local2 < (_local3 - 2))))) {
  311.                 if ((((_arg1[_local2] == this.EXIF_MARKER[0])) && ((_arg1[(_local2 + 1)] == this.EXIF_MARKER[1])))){
  312.                     return (_local2);
  313.                 };
  314.                 _local2++;
  315.             };
  316.             return (-1);
  317.         }
  318.         private function getExifSize(_arg1:number, _arg2:number):number{
  319.             var _local3 = "";
  320.             var _local4:string = _arg1.tostring(16);
  321.             _local3 = (_local3 + ((_local4.length)<2) ? ("0" + _local4) : _local4);
  322.             _local4 = _arg2.tostring(16);
  323.             _local3 = (_local3 + ((_local4.length)<2) ? ("0" + _local4) : _local4);
  324.             return ((parseint(("0x" + _local3)) + 2));
  325.         }
  326.         private function onImageLoaded(_arg1:Event, _arg2):void{
  327.             var j:* = undefined;
  328.             var srcBytes:* = null;
  329.             var exifStartPos:* = nan;
  330.             var exifSize:* = nan;
  331.             var jpgBytes:* = null;
  332.             var urlLoader:* = null;
  333.             var exifResStartPos:* = nan;
  334.             var exifResSize:* = nan;
  335.             var resBytes:* = null;
  336.             var fileName:* = null;
  337.             var e:* = _arg1;
  338.             var file:* = _arg2;
  339.             var loaderInfo:* = (e.target as LoaderInfo);
  340.             loaderInfo.removeEventListener(Event.COMPLETE, this.onImageLoaded);
  341.             var exifMarker:* = "";
  342.             for (j in this.EXIF_MARKER) {
  343.                 exifMarker = (exifMarker + string.fromcharcode(this.EXIF_MARKER[j]));
  344.             };
  345.             srcBytes = file.data;
  346.             exifStartPos = this.getExifPosition(srcBytes);
  347.             if (exifStartPos > 0){
  348.                 exifSize = this.getExifSize(srcBytes[(exifStartPos + 2)], srcBytes[(exifStartPos + 3)]);
  349.             };
  350.             var image:* = Bitmap(loaderInfo.content);
  351.             var urlRequest:* = new URLRequest();
  352.             if ((((image.width > 0x0500)) || ((image.height > 0x0400)))){
  353.                 image = ImageHelper.resize(image, 0x0500, 0x0400);
  354.                 jpgBytes = JPEGEncoder.encode(image.bitmapData, this.config.jpeg_quality);
  355.                 if ((((exifStartPos > 0)) && ((exifSize > 0)))){
  356.                     exifResStartPos = this.getExifPosition(jpgBytes);
  357.                     if (exifResStartPos > 0){
  358.                         exifResSize = this.getExifSize(jpgBytes[(exifResStartPos + 2)], jpgBytes[(exifResStartPos + 3)]);
  359.                         resBytes = new ByteArray();
  360.                         j = 0;
  361.                         while (j < exifResStartPos) {
  362.                             resBytes.writeByte(jpgBytes[j]);
  363.                             j = (j + 1);
  364.                         };
  365.                         j = exifStartPos;
  366.                         while (j < (exifStartPos + exifSize)) {
  367.                             resBytes.writeByte(srcBytes[j]);
  368.                             j = (j + 1);
  369.                         };
  370.                         j = (exifResStartPos + exifResSize);
  371.                         while (j < jpgBytes.length) {
  372.                             resBytes.writeByte(jpgBytes[j]);
  373.                             j = (j + 1);
  374.                         };
  375.                         jpgBytes = resBytes;
  376.                     };
  377.                 };
  378.                 this.postData = new UploadPostData("file0", encodeURIComponent(file.name), jpgBytes);
  379.                 this.onUploadProgress({
  380.                     bytesloaded:(file.size / 2),
  381.                     bytestotal:file.size
  382.                 });
  383.                 urlRequest.data = this.postData.getPostData();
  384.                 urlRequest.url = ((this.config.upload_url + "?") + this.config.post_data);
  385.                 urlRequest.requestHeaders.push(new URLRequestHeader("Content-type", ("multipart/form-data; boundary=" + this.postData.getBoundary())));
  386.                 urlRequest.requestHeaders.push(new URLRequestHeader("Cache-Control", "no-cache"));
  387.                 urlRequest.method = URLRequestMethod.POST;
  388.                 urlLoader = new URLLoader();
  389.                 urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
  390.                 urlLoader.addEventListener(Event.COMPLETE, function (_arg1:Event):void{
  391.                     onFileUploadComplete(_arg1, file);
  392.                 });
  393.                 urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError);
  394.                 urlLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onIOError);
  395.                 urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHttpStatus);
  396.                 urlLoader.addEventListener(ErrorEvent.error, this.onIOError);
  397.                 try {
  398.                     urlLoader.load(urlRequest);
  399.                 } catch(error:error) {
  400.                     debug("Upload error");
  401.                     ExternalCall.UploadError(config.onUploadError, ERROR_CODE_UPLOAD_FAILED, error.message);
  402.                     loadFiles(filesList);
  403.                     return;
  404.                 };
  405.             } else {
  406.                 fileName = ((this.config.file_name)!="") ? this.config.file_name : "Filedata";
  407.                 urlRequest.url = this.config.upload_url;
  408.                 urlRequest.method = URLRequestMethod.POST;
  409.                 if (this.config.post_data){
  410.                     this.debug(("Post data: " + this.config.post_data));
  411.                     urlRequest.data = this.config.post_data;
  412.                 };
  413.                 urlRequest.requestHeaders.push(new URLRequestHeader("Cache-Control", "no-cache"));
  414.                 file.addEventListener(Event.OPEN, this.onUploadOpened);
  415.                 file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function (_arg1):void{
  416.                     onFileUploadComplete(_arg1, file);
  417.                 });
  418.                 file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError);
  419.                 file.addEventListener(IOErrorEvent.IO_ERROR, this.onIOError);
  420.                 file.addEventListener(ProgressEvent.PROGRESS, this.onUploadProgress);
  421.                 file.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHttpStatus);
  422.                 file.addEventListener(ErrorEvent.error, this.onIOError);
  423.                 try {
  424.                     file.upload(urlRequest, fileName);
  425.                 } catch(error:error) {
  426.                     debug("Upload error");
  427.                     ExternalCall.UploadError(config.onUploadError, ERROR_CODE_UPLOAD_FAILED, error.message);
  428.                     loadFiles(filesList);
  429.                     return;
  430.                 };
  431.             };
  432.         }
  433.         private function onUploadOpened(_arg1:Event):void{
  434.             this.debug("Connection opened");
  435.         }
  436.         private function onUploadProgress(_arg1):void{
  437.             this.debug(((("Progress handler:  bytesLoaded=" + _arg1.bytesloaded) + " bytesTotal=") + _arg1.bytestotal));
  438.             ExternalCall.UploadProgress(this.config.onUploadProgress, ((this.loadedCount + (_arg1.bytesloaded / _arg1.bytestotal)) * 100), (this.totalCount * 100));
  439.         }
  440.         private function onFileUploadComplete(_arg1, _arg2:FileReference):void{
  441.             this.debug("Upload complete");
  442.             this.loadedSize = (this.loadedSize + _arg2.size);
  443.             var _local3:string = ((_arg1.constructor)==DataEvent) ? string(_arg1.data) : string(_arg1.target.data);
  444.             ExternalCall.UploadSuccess(this.config.onUploadSuccess, _local3, {
  445.                 filename:_arg2.name,
  446.                 type:_arg2.type,
  447.                 size:_arg2.size,
  448.                 num:this.loadedCount,
  449.                 totalCount:this.totalCount,
  450.                 loadedSize:this.loadedSize,
  451.                 totalSize:this.totalSize
  452.             });
  453.             this.onUploadProgress({
  454.                 bytesloaded:_arg2.size,
  455.                 bytestotal:_arg2.size
  456.             });
  457.             this.loadedCount++;
  458.             this.loadFiles(this.filesList);
  459.         }
  460.         private function onHttpStatus(_arg1:HTTPStatusEvent):void{
  461.             this.debug("HTTP Status error");
  462.         }
  463.         private function onSecurityError(_arg1:SecurityErrorEvent):void{
  464.             this.debug("Security error");
  465.             ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_SECURITY_ERROR, _arg1.text.tostring());
  466.         }
  467.         private function onIOError(_arg1:IOErrorEvent):void{
  468.             this.debug("IO error");
  469.             ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_IO_ERROR, _arg1.text);
  470.         }
  471.         private function onTerminateClick(_arg1:Event):void{
  472.             if (this.file){
  473.                 this.file.cancel();
  474.             };
  475.             this.debug("Upload terminated");
  476.             ExternalCall.UploadError(this.config.onUploadError, this.ERROR_CODE_UPLOAD_STOPPED);
  477.         }
  478.         private function debug(_arg1:string):void{
  479.             var lines:* = null;
  480.             var i:* = nan;
  481.             var msg:* = _arg1;
  482.             try {
  483.                 if (this.config.onDebug){
  484.                     lines = msg.split("\n");
  485.                     i = 0;
  486.                     while (i < lines.length) {
  487.                         lines[i] = ("SWF DEBUG: " + lines[i]);
  488.                         i = (i + 1);
  489.                     };
  490.                     ExternalCall.Debug(this.config.onDebug, lines.join("\n"));
  491.                 };
  492.             } catch(ex:error) {
  493.             };
  494.         }
  495.         private function validFileType(_arg1:string):boolean{
  496.             if (this._valid_file_extensions.length == 0){
  497.                 return (true);
  498.             };
  499.             var _local2:number = _arg1.lastindexof(".");
  500.             var _local3 = "";
  501.             if (_local2 >= 0){
  502.                 _local3 = _arg1.substr((_local2 + 1)).tolowercase();
  503.             };
  504.             var _local4:boolean;
  505.             var _local5:number = 0;
  506.             while (_local5 < this._valid_file_extensions.length) {
  507.                 if (string(this._valid_file_extensions[_local5]) == _local3){
  508.                     _local4 = true;
  509.                     break;
  510.                 };
  511.                 _local5++;
  512.             };
  513.             return (_local4);
  514.         }
  515.         private function loadFileExtensions(_arg1:string):void{
  516.             var _local4:string;
  517.             var _local5:number;
  518.             var _local2:array = _arg1.split(";");
  519.             this._valid_file_extensions = new array();
  520.             var _local3:number = 0;
  521.             while (_local3 < _local2.length) {
  522.                 _local4 = string(_local2[_local3]);
  523.                 _local5 = _local4.lastindexof(".");
  524.                 if (_local5 >= 0){
  525.                     _local4 = _local4.substr((_local5 + 1)).tolowercase();
  526.                 } else {
  527.                     _local4 = _local4.tolowercase();
  528.                 };
  529.                 if (_local4 == "*"){
  530.                     this._valid_file_extensions = new array();
  531.                     break;
  532.                 };
  533.                 this._valid_file_extensions.push(_local4);
  534.                 _local3++;
  535.             };
  536.         }
  537.  
  538.     }
  539. }//package
  540. ?package by.blooddy.crypto.image {
  541.     import flash.utils.*;
  542.  
  543.     public final class JPEGTable {
  544.  
  545.         private static const _quantTables:array = new array();
  546.  
  547.         private static var _jpegTable:ByteArray;
  548.  
  549.         public function JPEGTable(){
  550.             error.throwError(ArgumentError, 2012, getQualifiedClassName(this));
  551.         }
  552.         public static function getTable(_arg1:uint=60):ByteArray{
  553.             if (_arg1 > 100){
  554.                 error.throwError(RangeError, 2006, "quality");
  555.             };
  556.             if (_arg1 < 1){
  557.                 _arg1 = 1;
  558.             };
  559.             var _local2:ByteArray = _quantTables[_arg1];
  560.             if (!_local2){
  561.                 _local2 = JPEGTableHelper.createQuantTable(_arg1);
  562.                 if (!_jpegTable){
  563.                     _jpegTable = new ByteArray();
  564.                     _jpegTable.writeBytes(JPEGTableHelper.createZigZagTable());
  565.                     _jpegTable.writeBytes(JPEGTableHelper.createHuffmanTable());
  566.                     _jpegTable.writeBytes(JPEGTableHelper.createCategoryTable());
  567.                 };
  568.             };
  569.             var _local3:ByteArray = new ByteArray();
  570.             _local3.writeBytes(_local2);
  571.             _local3.writeBytes(_jpegTable);
  572.             _local3.position = 0;
  573.             return (_local3);
  574.         }
  575.  
  576.     }
  577. }//package by.blooddy.crypto.image
  578. ?package by.blooddy.crypto.image {
  579.     import flash.utils.*;
  580.     import flash.system.*;
  581.  
  582.     public class JPEGTableHelper {
  583.  
  584.         public function JPEGTableHelper():void{
  585.         }
  586.         public static function createQuantTable(_arg1:uint):ByteArray{
  587.             var _local6:uint;
  588.             var _local8:uint;
  589.             var _local9:number;
  590.             if (_arg1 > 100){
  591.                 error.throwError(RangeError, 2006, "quality");
  592.             };
  593.             var _local2:uint = ((_arg1)<=1) ? 5000 : ((_arg1)<50) ? (5000 / _arg1) : (200 - (_arg1 << 1));
  594.             var _local3:ByteArray = ApplicationDomain.currentDomain.domainMemory;
  595.             var _local4:ByteArray = new ByteArray();
  596.             _local4.position = 130;
  597.             _local4.writeUTFBytes("\x10\x0B\n\x10\x18(3=\f\f\x0E\x13\x1A:<7\x0E\r\x10\x18(9E8\x0E\x11\x16\x1D3WP>\x12\x16%8DmgM\x18#7@Qhq\\1@NWgyxeH\\_bpdgc");
  598.             _local4.writeUTFBytes("\x11\x12\x18/cccc\x12\x15\x1ABcccc\x18\x1A8ccccc/Bcccccccccccccccccccccccccccccccccccccc");
  599.             _local4.position = 1154;
  600.             _local4.writeUTFBytes("\x00\x01\x05\x06\x0E\x0F\x1B\x1C\x02\x04\x07\r\x10\x1A\x1D*\x03\b\f\x11\x19\x1E)+\t\x0B\x12\x18\x1F(,5\n\x13\x17 '-46\x14\x16!&.37<\x15\"%/28;=#$019:>?");
  601.             _local4.length = (_local4.length + 64);
  602.             if (_local4.length < ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH){
  603.                 _local4.length = ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH;
  604.             };
  605.             ApplicationDomain.currentDomain.domainMemory = _local4;
  606.             var _local5:uint;
  607.             do  {
  608.                 _local6 = (((op_li8((130 + _local5)) /*Alchemy*/  * _local2) + 50) / 100);
  609.                 if (_local6 < 1){
  610.                     _local6 = 1;
  611.                 } else {
  612.                     if (_local6 > 0xFF){
  613.                         _local6 = 0xFF;
  614.                     };
  615.                 };
  616.                 op_si8(_local6, (1 + op_li8((1154 + _local5)) /*Alchemy*/ )); //Alchemy
  617.                 ++_local5;
  618.             } while (_local5 < 64);
  619.             _local5 = 0;
  620.             do  {
  621.                 _local6 = (((op_li8((194 + _local5)) /*Alchemy*/  * _local2) + 50) / 100);
  622.                 if (_local6 < 1){
  623.                     _local6 = 1;
  624.                 } else {
  625.                     if (_local6 > 0xFF){
  626.                         _local6 = 0xFF;
  627.                     };
  628.                 };
  629.                 op_si8(_local6, (66 + op_li8((1154 + _local5)) /*Alchemy*/ )); //Alchemy
  630.                 ++_local5;
  631.             } while (_local5 < 64);
  632.             op_sf64(1, 1218); //Alchemy
  633.             op_sf64(1.387039845, 1226); //Alchemy
  634.             op_sf64(1.306562965, 1234); //Alchemy
  635.             op_sf64(1.175875602, 1242); //Alchemy
  636.             op_sf64(1, 1250); //Alchemy
  637.             op_sf64(0.785694958, 1258); //Alchemy
  638.             op_sf64(0.5411961, 1266); //Alchemy
  639.             op_sf64(0.275899379, 1274); //Alchemy
  640.             _local5 = 0;
  641.             var _local7:uint;
  642.             do  {
  643.                 _local8 = 0;
  644.                 do  {
  645.                     _local9 = ((op_lf64((1218 + _local7)) /*Alchemy*/  * op_lf64((1218 + _local8)) /*Alchemy*/ ) * 8);
  646.                     op_sf64((1 / (op_li8((1 + op_li8((1154 + _local5)) /*Alchemy*/ )) /*Alchemy*/  * _local9)), (130 + (_local5 << 3))); //Alchemy
  647.                     op_sf64((1 / (op_li8((66 + op_li8((1154 + _local5)) /*Alchemy*/ )) /*Alchemy*/  * _local9)), (642 + (_local5 << 3))); //Alchemy
  648.                     _local5++;
  649.                     _local8 = (_local8 + 8);
  650.                 } while (_local8 < 64);
  651.                 _local7 = (_local7 + 8);
  652.             } while (_local7 < 64);
  653.             ApplicationDomain.currentDomain.domainMemory = _local3;
  654.             _local4.length = 1154;
  655.             var _local10:ByteArray = new ByteArray();
  656.             _local10.writeBytes(_local4);
  657.             _local10.position = 0;
  658.             return (_local10);
  659.         }
  660.         public static function createZigZagTable():ByteArray{
  661.             var _local1:ByteArray = new ByteArray();
  662.             _local1.writeUTFBytes("\x00\x01\x05\x06\x0E\x0F\x1B\x1C\x02\x04\x07\r\x10\x1A\x1D*\x03\b\f\x11\x19\x1E)+\t\x0B\x12\x18\x1F(,5\n\x13\x17 '-46\x14\x16!&.37<\x15\"%/28;=#$019:>?");
  663.             _local1.position = 0;
  664.             return (_local1);
  665.         }
  666.         public static function createHuffmanTable():ByteArray{
  667.             var _local8:uint;
  668.             var _local9:uint;
  669.             var _local10:uint;
  670.             var _local1:ByteArray = ApplicationDomain.currentDomain.domainMemory;
  671.             var _local2:ByteArray = new ByteArray();
  672.             _local2.length = 1994;
  673.             if (_local2.length < ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH){
  674.                 _local2.length = ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH;
  675.             };
  676.             ApplicationDomain.currentDomain.domainMemory = _local2;
  677.             _local2.position = (_local2.position + 1);
  678.             _local2.writeUTFBytes("\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00");
  679.             _local2.writeUTFBytes("\x00\x01\x02\x03\x04\x05\x06\x07\b\t\n\x0B");
  680.             _local2.position = (_local2.position + 1);
  681.             _local2.writeUTFBytes("\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}");
  682.             var _local4:array = [197121, 302321924, 104935713, 123818259, 840200482, 144806273, -1045347805, -254717419, 1919038244, 369756546, 437852183, 673654309, 892611113, 959985462, 1162101562, 1229473606, 1431589706, 1498961750, 1701077850, 1768449894, 1970565994, 2037938038, -2054913158, -1987541114, -1802268022, -1734895979, -1549624679, -1482250844, -1297438296, -1229605709, -1162233673, -976960574, -909588538, -724315446, -656943403, -488514855, -421141277, -353769241, -185339151, -117967115, 64249];
  683.             var _local3:int;
  684.             do  {
  685.                 op_si32(_local4[_local3], (46 + (_local3 << 2))); //Alchemy
  686.                 _local3++;
  687.             } while (_local3 < 41);
  688.             _local2.position = 208;
  689.             _local2.position = (_local2.position + 1);
  690.             _local2.writeUTFBytes("\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00");
  691.             _local2.writeBytes(_local2, 17, 12);
  692.             _local2.position = (_local2.position + 1);
  693.             _local2.writeUTFBytes("\x00\x02\x01\x02\x04\x04\x03\x04\x07\x05\x04\x04\x00\x01\x02w");
  694.             _local4 = [50462976, 553976849, 1091700273, 1902184273, -2127420909, -1857940472, 163688865, -263048413, -781032939, 874780170, 401679841, 639244568, 707340327, 943142453, 1145256505, 1212630597, 1414744649, 1482118741, 1684232793, 1751606885, 1953720937, 2021095029, -2088600967, -2021227132, -1836414584, -1768581997, -1701209961, -1515936862, -1448564826, -1263291734, -1195919691, -1010648391, -943274556, -758462008, -690629421, -623257385, -437984286, -370612250, -185339158, -117967115, 64249];
  695.             _local3 = 0;
  696.             do  {
  697.                 op_si32(_local4[_local3], (254 + (_local3 << 2))); //Alchemy
  698.                 _local3++;
  699.             } while (_local3 < 41);
  700.             var _local5:int;
  701.             var _local6:int;
  702.             var _local7:uint = 1;
  703.             do  {
  704.                 _local9 = op_li8(_local7) /*Alchemy*/ ;
  705.                 _local8 = 1;
  706.                 while (_local8 <= _local9) {
  707.                     _local10 = (416 + (op_li8((17 + _local6)) /*Alchemy*/  * 3));
  708.                     op_si8(_local7, _local10); //Alchemy
  709.                     op_si16(_local5, (_local10 + 1)); //Alchemy
  710.                     _local6++;
  711.                     _local5++;
  712.                     _local8++;
  713.                 };
  714.                 _local5 = (_local5 << 1);
  715.                 ++_local7;
  716.             } while (_local7 <= 16);
  717.             _local5 = 0;
  718.             _local6 = 0;
  719.             _local7 = 1;
  720.             do  {
  721.                 _local9 = op_li8((29 + _local7)) /*Alchemy*/ ;
  722.                 _local8 = 1;
  723.                 while (_local8 <= _local9) {
  724.                     _local10 = (452 + (op_li8((46 + _local6)) /*Alchemy*/  * 3));
  725.                     op_si8(_local7, _local10); //Alchemy
  726.                     op_si16(_local5, (_local10 + 1)); //Alchemy
  727.                     _local6++;
  728.                     _local5++;
  729.                     _local8++;
  730.                 };
  731.                 _local5 = (_local5 << 1);
  732.                 ++_local7;
  733.             } while (_local7 <= 16);
  734.             _local5 = 0;
  735.             _local6 = 0;
  736.             _local7 = 1;
  737.             do  {
  738.                 _local9 = op_li8((208 + _local7)) /*Alchemy*/ ;
  739.                 _local8 = 1;
  740.                 while (_local8 <= _local9) {
  741.                     _local10 = (1205 + (op_li8((225 + _local6)) /*Alchemy*/  * 3));
  742.                     op_si8(_local7, _local10); //Alchemy
  743.                     op_si16(_local5, (_local10 + 1)); //Alchemy
  744.                     _local6++;
  745.                     _local5++;
  746.                     _local8++;
  747.                 };
  748.                 _local5 = (_local5 << 1);
  749.                 ++_local7;
  750.             } while (_local7 <= 16);
  751.             _local5 = 0;
  752.             _local6 = 0;
  753.             _local7 = 1;
  754.             do  {
  755.                 _local9 = op_li8((237 + _local7)) /*Alchemy*/ ;
  756.                 _local8 = 1;
  757.                 while (_local8 <= _local9) {
  758.                     _local10 = (1241 + (op_li8((254 + _local6)) /*Alchemy*/  * 3));
  759.                     op_si8(_local7, _local10); //Alchemy
  760.                     op_si16(_local5, (_local10 + 1)); //Alchemy
  761.                     _local6++;
  762.                     _local5++;
  763.                     _local8++;
  764.                 };
  765.                 _local5 = (_local5 << 1);
  766.                 ++_local7;
  767.             } while (_local7 <= 16);
  768.             _local2.position = 0;
  769.             ApplicationDomain.currentDomain.domainMemory = _local1;
  770.             return (_local2);
  771.         }
  772.         public static function createCategoryTable():ByteArray{
  773.             var _local5:uint;
  774.             var _local6:int;
  775.             var _local7:int;
  776.             var _local1:ByteArray = ApplicationDomain.currentDomain.domainMemory;
  777.             var _local2:ByteArray = new ByteArray();
  778.             _local2.length = 196605;
  779.             if (_local2.length < ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH){
  780.                 _local2.length = ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH;
  781.             };
  782.             ApplicationDomain.currentDomain.domainMemory = _local2;
  783.             var _local3 = 1;
  784.             var _local4 = 2;
  785.             var _local8:uint = 1;
  786.             do  {
  787.                 _local6 = _local3;
  788.                 _local7 = _local4;
  789.                 do  {
  790.                     _local5 = ((32767 + _local6) * 3);
  791.                     op_si8(_local8, _local5); //Alchemy
  792.                     op_si16(_local6, (_local5 + 1)); //Alchemy
  793.                     _local6++;
  794.                 } while (_local6 < _local7);
  795.                 _local6 = (-(_local4) + 1);
  796.                 _local7 = -(_local3);
  797.                 do  {
  798.                     _local5 = ((32767 + _local6) * 3);
  799.                     op_si8(_local8, _local5); //Alchemy
  800.                     op_si16(((_local4 - 1) + _local6), (_local5 + 1)); //Alchemy
  801.                     _local6++;
  802.                 } while (_local6 <= _local7);
  803.                 _local3 = (_local3 << 1);
  804.                 _local4 = (_local4 << 1);
  805.                 ++_local8;
  806.             } while (_local8 <= 15);
  807.             _local2.position = 0;
  808.             ApplicationDomain.currentDomain.domainMemory = _local1;
  809.             return (_local2);
  810.         }
  811.  
  812.     }
  813. }//package by.blooddy.crypto.image
  814. ?package by.blooddy.crypto.image {
  815.     import flash.utils.*;
  816.     import flash.display.*;
  817.     import flash.system.*;
  818.  
  819.     public class JPEGEncoder {
  820.  
  821.         public function JPEGEncoder():void{
  822.         }
  823.         public static function encode(_arg1:BitmapData, _arg2:uint=60):ByteArray{
  824.             var _local7:uint;
  825.             var _local9:uint;
  826.             var _local16:uint;
  827.             var _local17:uint;
  828.             var _local18:uint;
  829.             var _local19:uint;
  830.             var _local20:uint;
  831.             var _local21:uint;
  832.             var _local22:int;
  833.             var _local23:number;
  834.             var _local24:number;
  835.             var _local25:number;
  836.             var _local26:number;
  837.             var _local27:number;
  838.             var _local28:number;
  839.             var _local29:number;
  840.             var _local30:number;
  841.             var _local31:number;
  842.             var _local32:number;
  843.             var _local33:number;
  844.             var _local34:number;
  845.             var _local35:number;
  846.             var _local36:number;
  847.             var _local37:number;
  848.             var _local38:number;
  849.             var _local39:number;
  850.             var _local40:number;
  851.             var _local41:number;
  852.             var _local42:number;
  853.             var _local43:number;
  854.             var _local44:number;
  855.             var _local45:number;
  856.             var _local46:number;
  857.             var _local47:number;
  858.             var _local48:number;
  859.             var _local49:number;
  860.             var _local50:number;
  861.             var _local51:int;
  862.             var _local52:int;
  863.             var _local53:int;
  864.             var _local54:int;
  865.             var _local55:int;
  866.             var _local56:int;
  867.             var _local57:int;
  868.             if (_arg1 == null){
  869.                 error.throwError(TypeError, 2007, "image");
  870.             };
  871.             if (_arg2 > 100){
  872.                 error.throwError(RangeError, 2006, "quality");
  873.             };
  874.             var _local3:ByteArray = ApplicationDomain.currentDomain.domainMemory;
  875.             var _local4:uint = _arg1.width;
  876.             var _local5:uint = _arg1.height;
  877.             var _local6:ByteArray = new ByteArray();
  878.             _local6.position = 1792;
  879.             _local6.writeBytes(JPEGTable.getTable(_arg2));
  880.             _local6.length = (_local6.length + (680 + ((_local4 * _local5) * 3)));
  881.             if (_local6.length < ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH){
  882.                 _local6.length = ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH;
  883.             };
  884.             ApplicationDomain.currentDomain.domainMemory = _local6;
  885.             op_si16(55551, 201609); //Alchemy
  886.             _local7 = 201611;
  887.             op_si16(57599, _local7); //Alchemy
  888.             op_si16(0x1000, (_local7 + 2)); //Alchemy
  889.             op_si32(1179207242, (_local7 + 4)); //Alchemy
  890.             op_si8(0, (_local7 + 8)); //Alchemy
  891.             op_si16(0x0101, (_local7 + 9)); //Alchemy
  892.             op_si8(0, (_local7 + 11)); //Alchemy
  893.             op_si32(16777472, (_local7 + 12)); //Alchemy
  894.             op_si16(0, (_local7 + 16)); //Alchemy
  895.             _local7 = 201629;
  896.             op_si16(57855, _local7); //Alchemy
  897.             op_si16(0x4600, (_local7 + 2)); //Alchemy
  898.             op_si32(1718188101, (_local7 + 4)); //Alchemy
  899.             op_si16(0, (_local7 + 8)); //Alchemy
  900.             op_si32(2771273, (_local7 + 10)); //Alchemy
  901.             op_si32(8, (_local7 + 14)); //Alchemy
  902.             op_si16(1, (_local7 + 18)); //Alchemy
  903.             op_si16(305, (_local7 + 20)); //Alchemy
  904.             op_si16(2, (_local7 + 22)); //Alchemy
  905.             op_si32(35, (_local7 + 24)); //Alchemy
  906.             op_si32(26, (_local7 + 28)); //Alchemy
  907.             op_si32(0, (_local7 + 32)); //Alchemy
  908.             _local6.position = (_local7 + 36);
  909.             _local6.writeMultiByte("by.blooddy.crypto.image.JPEGEncoder", "x-ascii");
  910.             op_si8(0, (_local7 + 71)); //Alchemy
  911.             _local7 = 201701;
  912.             op_si16(56319, _local7); //Alchemy
  913.             op_si16(0x8400, (_local7 + 2)); //Alchemy
  914.             _local6.position = (_local7 + 4);
  915.             _local6.writeBytes(_local6, 1792, 130);
  916.             op_si8(0, (_local7 + 4)); //Alchemy
  917.             op_si8(1, (_local7 + 69)); //Alchemy
  918.             _local7 = 201835;
  919.             var _local8:uint = _arg1.width;
  920.             _local9 = _arg1.height;
  921.             op_si16(49407, _local7); //Alchemy
  922.             op_si16(0x1100, (_local7 + 2)); //Alchemy
  923.             op_si8(8, (_local7 + 4)); //Alchemy
  924.             op_si16((((_local9 >> 8) & 0xFF) | ((_local9 & 0xFF) << 8)), (_local7 + 5)); //Alchemy
  925.             op_si16((((_local8 >> 8) & 0xFF) | ((_local8 & 0xFF) << 8)), (_local7 + 7)); //Alchemy
  926.             op_si8(3, (_local7 + 9)); //Alchemy
  927.             op_si32(4353, (_local7 + 10)); //Alchemy
  928.             op_si32(69890, (_local7 + 13)); //Alchemy
  929.             op_si32(69891, (_local7 + 16)); //Alchemy
  930.             _local7 = 201854;
  931.             op_si16(50431, _local7); //Alchemy
  932.             op_si16(41473, (_local7 + 2)); //Alchemy
  933.             _local6.position = (_local7 + 4);
  934.             _local6.writeBytes(_local6, 3010, 416);
  935.             op_si8(0, (_local7 + 4)); //Alchemy
  936.             op_si8(16, (_local7 + 33)); //Alchemy
  937.             op_si8(1, (_local7 + 212)); //Alchemy
  938.             op_si8(17, (_local7 + 241)); //Alchemy
  939.             _local7 = 202274;
  940.             op_si16(56063, _local7); //Alchemy
  941.             op_si16(0x0C00, (_local7 + 2)); //Alchemy
  942.             op_si8(3, (_local7 + 4)); //Alchemy
  943.             op_si16(1, (_local7 + 5)); //Alchemy
  944.             op_si16(4354, (_local7 + 7)); //Alchemy
  945.             op_si16(4355, (_local7 + 9)); //Alchemy
  946.             op_si32(0x3F00, (_local7 + 11)); //Alchemy
  947.             var _local10 = 202288;
  948.             var _local11 = 7;
  949.             var _local12:int;
  950.             var _local13:int;
  951.             var _local14:int;
  952.             var _local15:int;
  953.             _local8 = 0;
  954.             do  {
  955.                 _local7 = 0;
  956.                 do  {
  957.                     _local9 = 0;
  958.                     _local16 = (_local7 + 8);
  959.                     _local17 = (_local8 + 8);
  960.                     do  {
  961.                         do  {
  962.                             _local18 = _arg1.getPixel(_local7, _local8);
  963.                             _local19 = (_local18 >>> 16);
  964.                             _local20 = ((_local18 >> 8) & 0xFF);
  965.                             _local21 = (_local18 & 0xFF);
  966.                             op_sf64(((((0.299 * _local19) + (0.587 * _local20)) + (0.114 * _local21)) - 128), (0x0100 + _local9)); //Alchemy
  967.                             op_sf64((((-0.16874 * _local19) - (0.33126 * _local20)) + (0.5 * _local21)), (0x0300 + _local9)); //Alchemy
  968.                             op_sf64((((0.5 * _local19) - (0.41869 * _local20)) - (0.08131 * _local21)), (0x0500 + _local9)); //Alchemy
  969.                             _local9 = (_local9 + 8);
  970.                             ++_local7;
  971.                         } while (_local7 < _local16);
  972.                         _local7 = (_local7 - 8);
  973.                         ++_local8;
  974.                     } while (_local8 < _local17);
  975.                     _local8 = (_local8 - 8);
  976.                     _local9 = 0x0100;
  977.                     _local22 = _local13;
  978.                     _local16 = 3426;
  979.                     _local17 = 3462;
  980.                     _local18 = 0;
  981.                     do  {
  982.                         _local23 = op_lf64((_local9 + _local18)) /*Alchemy*/ ;
  983.                         _local24 = op_lf64(((_local9 + _local18) + 8)) /*Alchemy*/ ;
  984.                         _local25 = op_lf64(((_local9 + _local18) + 16)) /*Alchemy*/ ;
  985.                         _local26 = op_lf64(((_local9 + _local18) + 24)) /*Alchemy*/ ;
  986.                         _local27 = op_lf64(((_local9 + _local18) + 32)) /*Alchemy*/ ;
  987.                         _local28 = op_lf64(((_local9 + _local18) + 40)) /*Alchemy*/ ;
  988.                         _local29 = op_lf64(((_local9 + _local18) + 48)) /*Alchemy*/ ;
  989.                         _local30 = op_lf64(((_local9 + _local18) + 56)) /*Alchemy*/ ;
  990.                         _local31 = (_local23 + _local30);
  991.                         _local38 = (_local23 - _local30);
  992.                         _local32 = (_local24 + _local29);
  993.                         _local37 = (_local24 - _local29);
  994.                         _local33 = (_local25 + _local28);
  995.                         _local36 = (_local25 - _local28);
  996.                         _local34 = (_local26 + _local27);
  997.                         _local35 = (_local26 - _local27);
  998.                         _local39 = (_local31 + _local34);
  999.                         _local42 = (_local31 - _local34);
  1000.                         _local40 = (_local32 + _local33);
  1001.                         _local41 = (_local32 - _local33);
  1002.                         op_sf64((_local39 + _local40), (_local9 + _local18)); //Alchemy
  1003.                         op_sf64((_local39 - _local40), ((_local9 + _local18) + 32)); //Alchemy
  1004.                         _local43 = ((_local41 + _local42) * 0.707106781);
  1005.                         op_sf64((_local42 + _local43), ((_local9 + _local18) + 16)); //Alchemy
  1006.                         op_sf64((_local42 - _local43), ((_local9 + _local18) + 48)); //Alchemy
  1007.                         _local39 = (_local35 + _local36);
  1008.                         _local40 = (_local36 + _local37);
  1009.                         _local41 = (_local37 + _local38);
  1010.                         _local47 = ((_local39 - _local41) * 0.382683433);
  1011.                         _local44 = ((0.5411961 * _local39) + _local47);
  1012.                         _local46 = ((1.306562965 * _local41) + _local47);
  1013.                         _local45 = (_local40 * 0.707106781);
  1014.                         _local48 = (_local38 + _local45);
  1015.                         _local49 = (_local38 - _local45);
  1016.                         op_sf64((_local49 + _local44), ((_local9 + _local18) + 40)); //Alchemy
  1017.                         op_sf64((_local49 - _local44), ((_local9 + _local18) + 24)); //Alchemy
  1018.                         op_sf64((_local48 + _local46), ((_local9 + _local18) + 8)); //Alchemy
  1019.                         op_sf64((_local48 - _local46), ((_local9 + _local18) + 56)); //Alchemy
  1020.                         _local18 = (_local18 + 64);
  1021.                     } while (_local18 < 0x0200);
  1022.                     _local18 = 0;
  1023.                     do  {
  1024.                         _local23 = op_lf64((_local9 + _local18)) /*Alchemy*/ ;
  1025.                         _local24 = op_lf64(((_local9 + _local18) + 64)) /*Alchemy*/ ;
  1026.                         _local25 = op_lf64(((_local9 + _local18) + 128)) /*Alchemy*/ ;
  1027.                         _local26 = op_lf64(((_local9 + _local18) + 192)) /*Alchemy*/ ;
  1028.                         _local27 = op_lf64(((_local9 + _local18) + 0x0100)) /*Alchemy*/ ;
  1029.                         _local28 = op_lf64(((_local9 + _local18) + 320)) /*Alchemy*/ ;
  1030.                         _local29 = op_lf64(((_local9 + _local18) + 384)) /*Alchemy*/ ;
  1031.                         _local30 = op_lf64(((_local9 + _local18) + 448)) /*Alchemy*/ ;
  1032.                         _local31 = (_local23 + _local30);
  1033.                         _local38 = (_local23 - _local30);
  1034.                         _local32 = (_local24 + _local29);
  1035.                         _local37 = (_local24 - _local29);
  1036.                         _local33 = (_local25 + _local28);
  1037.                         _local36 = (_local25 - _local28);
  1038.                         _local34 = (_local26 + _local27);
  1039.                         _local35 = (_local26 - _local27);
  1040.                         _local39 = (_local31 + _local34);
  1041.                         _local42 = (_local31 - _local34);
  1042.                         _local40 = (_local32 + _local33);
  1043.                         _local41 = (_local32 - _local33);
  1044.                         op_sf64((_local39 + _local40), (_local9 + _local18)); //Alchemy
  1045.                         op_sf64((_local39 - _local40), ((_local9 + _local18) + 0x0100)); //Alchemy
  1046.                         _local43 = ((_local41 + _local42) * 0.707106781);
  1047.                         op_sf64((_local42 + _local43), ((_local9 + _local18) + 128)); //Alchemy
  1048.                         op_sf64((_local42 - _local43), ((_local9 + _local18) + 384)); //Alchemy
  1049.                         _local39 = (_local35 + _local36);
  1050.                         _local40 = (_local36 + _local37);
  1051.                         _local41 = (_local37 + _local38);
  1052.                         _local47 = ((_local39 - _local41) * 0.382683433);
  1053.                         _local44 = ((0.5411961 * _local39) + _local47);
  1054.                         _local46 = ((1.306562965 * _local41) + _local47);
  1055.                         _local45 = (_local40 * 0.707106781);
  1056.                         _local48 = (_local38 + _local45);
  1057.                         _local49 = (_local38 - _local45);
  1058.                         op_sf64((_local49 + _local44), ((_local9 + _local18) + 320)); //Alchemy
  1059.                         op_sf64((_local49 - _local44), ((_local9 + _local18) + 192)); //Alchemy
  1060.                         op_sf64((_local48 + _local46), ((_local9 + _local18) + 64)); //Alchemy
  1061.                         op_sf64((_local48 - _local46), ((_local9 + _local18) + 448)); //Alchemy
  1062.                         _local18 = (_local18 + 8);
  1063.                     } while (_local18 < 64);
  1064.                     _local19 = 0;
  1065.                     do  {
  1066.                         _local50 = (op_lf64((_local9 + (_local19 << 3))) /*Alchemy*/  * op_lf64((1922 + (_local19 << 3))) /*Alchemy*/ );
  1067.                         op_si32(((op_lf64((_local9 + (_local19 << 3))) /*Alchemy*/  * op_lf64((1922 + (_local19 << 3))) /*Alchemy*/ ) + ((_local50)>0) ? 0.5 : -0.5), (op_li8((2946 + _local19)) /*Alchemy*/  << 2)); //Alchemy
  1068.                         ++_local19;
  1069.                     } while (_local19 < 64);
  1070.                     _local51 = op_li32(0) /*Alchemy*/ ;
  1071.                     _local52 = (_local51 - _local22);
  1072.                     _local22 = _local51;
  1073.                     if (_local52 == 0){
  1074.                         _local53 = op_li8(_local16) /*Alchemy*/ ;
  1075.                         while (_local53--, _local53 >= 0) {
  1076.                             if ((op_li16((_local16 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1077.                                 _local12 = (_local12 | (1 << _local11));
  1078.                             };
  1079.                             _local11--;
  1080.                             if (_local11 < 0){
  1081.                                 if (_local12 == 0xFF){
  1082.                                     op_si16(0xFF, _local10); //Alchemy
  1083.                                     _local10 = (_local10 + 2);
  1084.                                 } else {
  1085.                                     op_si8(_local12, _local10); //Alchemy
  1086.                                     _local10++;
  1087.                                 };
  1088.                                 _local11 = 7;
  1089.                                 _local12 = 0;
  1090.                             };
  1091.                         };
  1092.                     } else {
  1093.                         _local18 = ((32767 + _local52) * 3);
  1094.                         _local19 = (_local16 + (op_li8((5004 + _local18)) /*Alchemy*/  * 3));
  1095.                         _local53 = op_li8(_local19) /*Alchemy*/ ;
  1096.                         while (_local53--, _local53 >= 0) {
  1097.                             if ((op_li16((_local19 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1098.                                 _local12 = (_local12 | (1 << _local11));
  1099.                             };
  1100.                             _local11--;
  1101.                             if (_local11 < 0){
  1102.                                 if (_local12 == 0xFF){
  1103.                                     op_si16(0xFF, _local10); //Alchemy
  1104.                                     _local10 = (_local10 + 2);
  1105.                                 } else {
  1106.                                     op_si8(_local12, _local10); //Alchemy
  1107.                                     _local10++;
  1108.                                 };
  1109.                                 _local11 = 7;
  1110.                                 _local12 = 0;
  1111.                             };
  1112.                         };
  1113.                         _local19 = (5004 + _local18);
  1114.                         _local53 = op_li8(_local19) /*Alchemy*/ ;
  1115.                         while (_local53--, _local53 >= 0) {
  1116.                             if ((op_li16((_local19 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1117.                                 _local12 = (_local12 | (1 << _local11));
  1118.                             };
  1119.                             _local11--;
  1120.                             if (_local11 < 0){
  1121.                                 if (_local12 == 0xFF){
  1122.                                     op_si16(0xFF, _local10); //Alchemy
  1123.                                     _local10 = (_local10 + 2);
  1124.                                 } else {
  1125.                                     op_si8(_local12, _local10); //Alchemy
  1126.                                     _local10++;
  1127.                                 };
  1128.                                 _local11 = 7;
  1129.                                 _local12 = 0;
  1130.                             };
  1131.                         };
  1132.                     };
  1133.                     _local19 = 63;
  1134.                     while (if (_local19 > 0){
  1135.                         false;
  1136.                     }, false) {
  1137.                         _local19--;
  1138.                     };
  1139.                     if (_local19 != 0){
  1140.                         _local20 = 1;
  1141.                         while (_local20 <= _local19) {
  1142.                             _local54 = _local20;
  1143.                             while (if (_local20 <= _local19){
  1144.                                 false;
  1145.                             }, false) {
  1146.                                 _local20++;
  1147.                             };
  1148.                             _local55 = (_local20 - _local54);
  1149.                             if (_local55 >= 16){
  1150.                                 _local53 = (_local55 >> 4);
  1151.                                 _local56 = 1;
  1152.                                 while (_local56 <= _local53) {
  1153.                                     _local21 = (_local17 + 720);
  1154.                                     _local57 = op_li8(_local21) /*Alchemy*/ ;
  1155.                                     while (_local57--, _local57 >= 0) {
  1156.                                         if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1157.                                             _local12 = (_local12 | (1 << _local11));
  1158.                                         };
  1159.                                         _local11--;
  1160.                                         if (_local11 < 0){
  1161.                                             if (_local12 == 0xFF){
  1162.                                                 op_si16(0xFF, _local10); //Alchemy
  1163.                                                 _local10 = (_local10 + 2);
  1164.                                             } else {
  1165.                                                 op_si8(_local12, _local10); //Alchemy
  1166.                                                 _local10++;
  1167.                                             };
  1168.                                             _local11 = 7;
  1169.                                             _local12 = 0;
  1170.                                         };
  1171.                                     };
  1172.                                     _local56++;
  1173.                                 };
  1174.                                 _local55 = (_local55 & 15);
  1175.                             };
  1176.                             _local18 = ((32767 + op_li32((_local20 << 2)) /*Alchemy*/ ) * 3);
  1177.                             _local21 = ((_local17 + ((_local55 << 4) * 3)) + (op_li8((5004 + _local18)) /*Alchemy*/  * 3));
  1178.                             _local57 = op_li8(_local21) /*Alchemy*/ ;
  1179.                             while (_local57--, _local57 >= 0) {
  1180.                                 if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1181.                                     _local12 = (_local12 | (1 << _local11));
  1182.                                 };
  1183.                                 _local11--;
  1184.                                 if (_local11 < 0){
  1185.                                     if (_local12 == 0xFF){
  1186.                                         op_si16(0xFF, _local10); //Alchemy
  1187.                                         _local10 = (_local10 + 2);
  1188.                                     } else {
  1189.                                         op_si8(_local12, _local10); //Alchemy
  1190.                                         _local10++;
  1191.                                     };
  1192.                                     _local11 = 7;
  1193.                                     _local12 = 0;
  1194.                                 };
  1195.                             };
  1196.                             _local21 = (5004 + _local18);
  1197.                             _local57 = op_li8(_local21) /*Alchemy*/ ;
  1198.                             while (_local57--, _local57 >= 0) {
  1199.                                 if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1200.                                     _local12 = (_local12 | (1 << _local11));
  1201.                                 };
  1202.                                 _local11--;
  1203.                                 if (_local11 < 0){
  1204.                                     if (_local12 == 0xFF){
  1205.                                         op_si16(0xFF, _local10); //Alchemy
  1206.                                         _local10 = (_local10 + 2);
  1207.                                     } else {
  1208.                                         op_si8(_local12, _local10); //Alchemy
  1209.                                         _local10++;
  1210.                                     };
  1211.                                     _local11 = 7;
  1212.                                     _local12 = 0;
  1213.                                 };
  1214.                             };
  1215.                             _local20++;
  1216.                         };
  1217.                     };
  1218.                     if (_local19 != 63){
  1219.                         _local53 = op_li8(_local17) /*Alchemy*/ ;
  1220.                         while (_local53--, _local53 >= 0) {
  1221.                             if ((op_li16((_local17 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1222.                                 _local12 = (_local12 | (1 << _local11));
  1223.                             };
  1224.                             _local11--;
  1225.                             if (_local11 < 0){
  1226.                                 if (_local12 == 0xFF){
  1227.                                     op_si16(0xFF, _local10); //Alchemy
  1228.                                     _local10 = (_local10 + 2);
  1229.                                 } else {
  1230.                                     op_si8(_local12, _local10); //Alchemy
  1231.                                     _local10++;
  1232.                                 };
  1233.                                 _local11 = 7;
  1234.                                 _local12 = 0;
  1235.                             };
  1236.                         };
  1237.                     };
  1238.                     _local13 = _local22;
  1239.                     _local9 = 0x0300;
  1240.                     _local22 = _local14;
  1241.                     _local16 = 4215;
  1242.                     _local17 = 4251;
  1243.                     _local18 = 0;
  1244.                     do  {
  1245.                         _local23 = op_lf64((_local9 + _local18)) /*Alchemy*/ ;
  1246.                         _local24 = op_lf64(((_local9 + _local18) + 8)) /*Alchemy*/ ;
  1247.                         _local25 = op_lf64(((_local9 + _local18) + 16)) /*Alchemy*/ ;
  1248.                         _local26 = op_lf64(((_local9 + _local18) + 24)) /*Alchemy*/ ;
  1249.                         _local27 = op_lf64(((_local9 + _local18) + 32)) /*Alchemy*/ ;
  1250.                         _local28 = op_lf64(((_local9 + _local18) + 40)) /*Alchemy*/ ;
  1251.                         _local29 = op_lf64(((_local9 + _local18) + 48)) /*Alchemy*/ ;
  1252.                         _local30 = op_lf64(((_local9 + _local18) + 56)) /*Alchemy*/ ;
  1253.                         _local31 = (_local23 + _local30);
  1254.                         _local38 = (_local23 - _local30);
  1255.                         _local32 = (_local24 + _local29);
  1256.                         _local37 = (_local24 - _local29);
  1257.                         _local33 = (_local25 + _local28);
  1258.                         _local36 = (_local25 - _local28);
  1259.                         _local34 = (_local26 + _local27);
  1260.                         _local35 = (_local26 - _local27);
  1261.                         _local39 = (_local31 + _local34);
  1262.                         _local42 = (_local31 - _local34);
  1263.                         _local40 = (_local32 + _local33);
  1264.                         _local41 = (_local32 - _local33);
  1265.                         op_sf64((_local39 + _local40), (_local9 + _local18)); //Alchemy
  1266.                         op_sf64((_local39 - _local40), ((_local9 + _local18) + 32)); //Alchemy
  1267.                         _local43 = ((_local41 + _local42) * 0.707106781);
  1268.                         op_sf64((_local42 + _local43), ((_local9 + _local18) + 16)); //Alchemy
  1269.                         op_sf64((_local42 - _local43), ((_local9 + _local18) + 48)); //Alchemy
  1270.                         _local39 = (_local35 + _local36);
  1271.                         _local40 = (_local36 + _local37);
  1272.                         _local41 = (_local37 + _local38);
  1273.                         _local47 = ((_local39 - _local41) * 0.382683433);
  1274.                         _local44 = ((0.5411961 * _local39) + _local47);
  1275.                         _local46 = ((1.306562965 * _local41) + _local47);
  1276.                         _local45 = (_local40 * 0.707106781);
  1277.                         _local48 = (_local38 + _local45);
  1278.                         _local49 = (_local38 - _local45);
  1279.                         op_sf64((_local49 + _local44), ((_local9 + _local18) + 40)); //Alchemy
  1280.                         op_sf64((_local49 - _local44), ((_local9 + _local18) + 24)); //Alchemy
  1281.                         op_sf64((_local48 + _local46), ((_local9 + _local18) + 8)); //Alchemy
  1282.                         op_sf64((_local48 - _local46), ((_local9 + _local18) + 56)); //Alchemy
  1283.                         _local18 = (_local18 + 64);
  1284.                     } while (_local18 < 0x0200);
  1285.                     _local18 = 0;
  1286.                     do  {
  1287.                         _local23 = op_lf64((_local9 + _local18)) /*Alchemy*/ ;
  1288.                         _local24 = op_lf64(((_local9 + _local18) + 64)) /*Alchemy*/ ;
  1289.                         _local25 = op_lf64(((_local9 + _local18) + 128)) /*Alchemy*/ ;
  1290.                         _local26 = op_lf64(((_local9 + _local18) + 192)) /*Alchemy*/ ;
  1291.                         _local27 = op_lf64(((_local9 + _local18) + 0x0100)) /*Alchemy*/ ;
  1292.                         _local28 = op_lf64(((_local9 + _local18) + 320)) /*Alchemy*/ ;
  1293.                         _local29 = op_lf64(((_local9 + _local18) + 384)) /*Alchemy*/ ;
  1294.                         _local30 = op_lf64(((_local9 + _local18) + 448)) /*Alchemy*/ ;
  1295.                         _local31 = (_local23 + _local30);
  1296.                         _local38 = (_local23 - _local30);
  1297.                         _local32 = (_local24 + _local29);
  1298.                         _local37 = (_local24 - _local29);
  1299.                         _local33 = (_local25 + _local28);
  1300.                         _local36 = (_local25 - _local28);
  1301.                         _local34 = (_local26 + _local27);
  1302.                         _local35 = (_local26 - _local27);
  1303.                         _local39 = (_local31 + _local34);
  1304.                         _local42 = (_local31 - _local34);
  1305.                         _local40 = (_local32 + _local33);
  1306.                         _local41 = (_local32 - _local33);
  1307.                         op_sf64((_local39 + _local40), (_local9 + _local18)); //Alchemy
  1308.                         op_sf64((_local39 - _local40), ((_local9 + _local18) + 0x0100)); //Alchemy
  1309.                         _local43 = ((_local41 + _local42) * 0.707106781);
  1310.                         op_sf64((_local42 + _local43), ((_local9 + _local18) + 128)); //Alchemy
  1311.                         op_sf64((_local42 - _local43), ((_local9 + _local18) + 384)); //Alchemy
  1312.                         _local39 = (_local35 + _local36);
  1313.                         _local40 = (_local36 + _local37);
  1314.                         _local41 = (_local37 + _local38);
  1315.                         _local47 = ((_local39 - _local41) * 0.382683433);
  1316.                         _local44 = ((0.5411961 * _local39) + _local47);
  1317.                         _local46 = ((1.306562965 * _local41) + _local47);
  1318.                         _local45 = (_local40 * 0.707106781);
  1319.                         _local48 = (_local38 + _local45);
  1320.                         _local49 = (_local38 - _local45);
  1321.                         op_sf64((_local49 + _local44), ((_local9 + _local18) + 320)); //Alchemy
  1322.                         op_sf64((_local49 - _local44), ((_local9 + _local18) + 192)); //Alchemy
  1323.                         op_sf64((_local48 + _local46), ((_local9 + _local18) + 64)); //Alchemy
  1324.                         op_sf64((_local48 - _local46), ((_local9 + _local18) + 448)); //Alchemy
  1325.                         _local18 = (_local18 + 8);
  1326.                     } while (_local18 < 64);
  1327.                     _local19 = 0;
  1328.                     do  {
  1329.                         _local50 = (op_lf64((_local9 + (_local19 << 3))) /*Alchemy*/  * op_lf64((2434 + (_local19 << 3))) /*Alchemy*/ );
  1330.                         op_si32(((op_lf64((_local9 + (_local19 << 3))) /*Alchemy*/  * op_lf64((2434 + (_local19 << 3))) /*Alchemy*/ ) + ((_local50)>0) ? 0.5 : -0.5), (op_li8((2946 + _local19)) /*Alchemy*/  << 2)); //Alchemy
  1331.                         ++_local19;
  1332.                     } while (_local19 < 64);
  1333.                     _local51 = op_li32(0) /*Alchemy*/ ;
  1334.                     _local52 = (_local51 - _local22);
  1335.                     _local22 = _local51;
  1336.                     if (_local52 == 0){
  1337.                         _local53 = op_li8(_local16) /*Alchemy*/ ;
  1338.                         while (_local53--, _local53 >= 0) {
  1339.                             if ((op_li16((_local16 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1340.                                 _local12 = (_local12 | (1 << _local11));
  1341.                             };
  1342.                             _local11--;
  1343.                             if (_local11 < 0){
  1344.                                 if (_local12 == 0xFF){
  1345.                                     op_si16(0xFF, _local10); //Alchemy
  1346.                                     _local10 = (_local10 + 2);
  1347.                                 } else {
  1348.                                     op_si8(_local12, _local10); //Alchemy
  1349.                                     _local10++;
  1350.                                 };
  1351.                                 _local11 = 7;
  1352.                                 _local12 = 0;
  1353.                             };
  1354.                         };
  1355.                     } else {
  1356.                         _local18 = ((32767 + _local52) * 3);
  1357.                         _local19 = (_local16 + (op_li8((5004 + _local18)) /*Alchemy*/  * 3));
  1358.                         _local53 = op_li8(_local19) /*Alchemy*/ ;
  1359.                         while (_local53--, _local53 >= 0) {
  1360.                             if ((op_li16((_local19 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1361.                                 _local12 = (_local12 | (1 << _local11));
  1362.                             };
  1363.                             _local11--;
  1364.                             if (_local11 < 0){
  1365.                                 if (_local12 == 0xFF){
  1366.                                     op_si16(0xFF, _local10); //Alchemy
  1367.                                     _local10 = (_local10 + 2);
  1368.                                 } else {
  1369.                                     op_si8(_local12, _local10); //Alchemy
  1370.                                     _local10++;
  1371.                                 };
  1372.                                 _local11 = 7;
  1373.                                 _local12 = 0;
  1374.                             };
  1375.                         };
  1376.                         _local19 = (5004 + _local18);
  1377.                         _local53 = op_li8(_local19) /*Alchemy*/ ;
  1378.                         while (_local53--, _local53 >= 0) {
  1379.                             if ((op_li16((_local19 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1380.                                 _local12 = (_local12 | (1 << _local11));
  1381.                             };
  1382.                             _local11--;
  1383.                             if (_local11 < 0){
  1384.                                 if (_local12 == 0xFF){
  1385.                                     op_si16(0xFF, _local10); //Alchemy
  1386.                                     _local10 = (_local10 + 2);
  1387.                                 } else {
  1388.                                     op_si8(_local12, _local10); //Alchemy
  1389.                                     _local10++;
  1390.                                 };
  1391.                                 _local11 = 7;
  1392.                                 _local12 = 0;
  1393.                             };
  1394.                         };
  1395.                     };
  1396.                     _local19 = 63;
  1397.                     while (if (_local19 > 0){
  1398.                         false;
  1399.                     }, false) {
  1400.                         _local19--;
  1401.                     };
  1402.                     if (_local19 != 0){
  1403.                         _local20 = 1;
  1404.                         while (_local20 <= _local19) {
  1405.                             _local54 = _local20;
  1406.                             while (if (_local20 <= _local19){
  1407.                                 false;
  1408.                             }, false) {
  1409.                                 _local20++;
  1410.                             };
  1411.                             _local55 = (_local20 - _local54);
  1412.                             if (_local55 >= 16){
  1413.                                 _local53 = (_local55 >> 4);
  1414.                                 _local56 = 1;
  1415.                                 while (_local56 <= _local53) {
  1416.                                     _local21 = (_local17 + 720);
  1417.                                     _local57 = op_li8(_local21) /*Alchemy*/ ;
  1418.                                     while (_local57--, _local57 >= 0) {
  1419.                                         if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1420.                                             _local12 = (_local12 | (1 << _local11));
  1421.                                         };
  1422.                                         _local11--;
  1423.                                         if (_local11 < 0){
  1424.                                             if (_local12 == 0xFF){
  1425.                                                 op_si16(0xFF, _local10); //Alchemy
  1426.                                                 _local10 = (_local10 + 2);
  1427.                                             } else {
  1428.                                                 op_si8(_local12, _local10); //Alchemy
  1429.                                                 _local10++;
  1430.                                             };
  1431.                                             _local11 = 7;
  1432.                                             _local12 = 0;
  1433.                                         };
  1434.                                     };
  1435.                                     _local56++;
  1436.                                 };
  1437.                                 _local55 = (_local55 & 15);
  1438.                             };
  1439.                             _local18 = ((32767 + op_li32((_local20 << 2)) /*Alchemy*/ ) * 3);
  1440.                             _local21 = ((_local17 + ((_local55 << 4) * 3)) + (op_li8((5004 + _local18)) /*Alchemy*/  * 3));
  1441.                             _local57 = op_li8(_local21) /*Alchemy*/ ;
  1442.                             while (_local57--, _local57 >= 0) {
  1443.                                 if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1444.                                     _local12 = (_local12 | (1 << _local11));
  1445.                                 };
  1446.                                 _local11--;
  1447.                                 if (_local11 < 0){
  1448.                                     if (_local12 == 0xFF){
  1449.                                         op_si16(0xFF, _local10); //Alchemy
  1450.                                         _local10 = (_local10 + 2);
  1451.                                     } else {
  1452.                                         op_si8(_local12, _local10); //Alchemy
  1453.                                         _local10++;
  1454.                                     };
  1455.                                     _local11 = 7;
  1456.                                     _local12 = 0;
  1457.                                 };
  1458.                             };
  1459.                             _local21 = (5004 + _local18);
  1460.                             _local57 = op_li8(_local21) /*Alchemy*/ ;
  1461.                             while (_local57--, _local57 >= 0) {
  1462.                                 if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1463.                                     _local12 = (_local12 | (1 << _local11));
  1464.                                 };
  1465.                                 _local11--;
  1466.                                 if (_local11 < 0){
  1467.                                     if (_local12 == 0xFF){
  1468.                                         op_si16(0xFF, _local10); //Alchemy
  1469.                                         _local10 = (_local10 + 2);
  1470.                                     } else {
  1471.                                         op_si8(_local12, _local10); //Alchemy
  1472.                                         _local10++;
  1473.                                     };
  1474.                                     _local11 = 7;
  1475.                                     _local12 = 0;
  1476.                                 };
  1477.                             };
  1478.                             _local20++;
  1479.                         };
  1480.                     };
  1481.                     if (_local19 != 63){
  1482.                         _local53 = op_li8(_local17) /*Alchemy*/ ;
  1483.                         while (_local53--, _local53 >= 0) {
  1484.                             if ((op_li16((_local17 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1485.                                 _local12 = (_local12 | (1 << _local11));
  1486.                             };
  1487.                             _local11--;
  1488.                             if (_local11 < 0){
  1489.                                 if (_local12 == 0xFF){
  1490.                                     op_si16(0xFF, _local10); //Alchemy
  1491.                                     _local10 = (_local10 + 2);
  1492.                                 } else {
  1493.                                     op_si8(_local12, _local10); //Alchemy
  1494.                                     _local10++;
  1495.                                 };
  1496.                                 _local11 = 7;
  1497.                                 _local12 = 0;
  1498.                             };
  1499.                         };
  1500.                     };
  1501.                     _local14 = _local22;
  1502.                     _local9 = 0x0500;
  1503.                     _local22 = _local15;
  1504.                     _local16 = 4215;
  1505.                     _local17 = 4251;
  1506.                     _local18 = 0;
  1507.                     do  {
  1508.                         _local23 = op_lf64((_local9 + _local18)) /*Alchemy*/ ;
  1509.                         _local24 = op_lf64(((_local9 + _local18) + 8)) /*Alchemy*/ ;
  1510.                         _local25 = op_lf64(((_local9 + _local18) + 16)) /*Alchemy*/ ;
  1511.                         _local26 = op_lf64(((_local9 + _local18) + 24)) /*Alchemy*/ ;
  1512.                         _local27 = op_lf64(((_local9 + _local18) + 32)) /*Alchemy*/ ;
  1513.                         _local28 = op_lf64(((_local9 + _local18) + 40)) /*Alchemy*/ ;
  1514.                         _local29 = op_lf64(((_local9 + _local18) + 48)) /*Alchemy*/ ;
  1515.                         _local30 = op_lf64(((_local9 + _local18) + 56)) /*Alchemy*/ ;
  1516.                         _local31 = (_local23 + _local30);
  1517.                         _local38 = (_local23 - _local30);
  1518.                         _local32 = (_local24 + _local29);
  1519.                         _local37 = (_local24 - _local29);
  1520.                         _local33 = (_local25 + _local28);
  1521.                         _local36 = (_local25 - _local28);
  1522.                         _local34 = (_local26 + _local27);
  1523.                         _local35 = (_local26 - _local27);
  1524.                         _local39 = (_local31 + _local34);
  1525.                         _local42 = (_local31 - _local34);
  1526.                         _local40 = (_local32 + _local33);
  1527.                         _local41 = (_local32 - _local33);
  1528.                         op_sf64((_local39 + _local40), (_local9 + _local18)); //Alchemy
  1529.                         op_sf64((_local39 - _local40), ((_local9 + _local18) + 32)); //Alchemy
  1530.                         _local43 = ((_local41 + _local42) * 0.707106781);
  1531.                         op_sf64((_local42 + _local43), ((_local9 + _local18) + 16)); //Alchemy
  1532.                         op_sf64((_local42 - _local43), ((_local9 + _local18) + 48)); //Alchemy
  1533.                         _local39 = (_local35 + _local36);
  1534.                         _local40 = (_local36 + _local37);
  1535.                         _local41 = (_local37 + _local38);
  1536.                         _local47 = ((_local39 - _local41) * 0.382683433);
  1537.                         _local44 = ((0.5411961 * _local39) + _local47);
  1538.                         _local46 = ((1.306562965 * _local41) + _local47);
  1539.                         _local45 = (_local40 * 0.707106781);
  1540.                         _local48 = (_local38 + _local45);
  1541.                         _local49 = (_local38 - _local45);
  1542.                         op_sf64((_local49 + _local44), ((_local9 + _local18) + 40)); //Alchemy
  1543.                         op_sf64((_local49 - _local44), ((_local9 + _local18) + 24)); //Alchemy
  1544.                         op_sf64((_local48 + _local46), ((_local9 + _local18) + 8)); //Alchemy
  1545.                         op_sf64((_local48 - _local46), ((_local9 + _local18) + 56)); //Alchemy
  1546.                         _local18 = (_local18 + 64);
  1547.                     } while (_local18 < 0x0200);
  1548.                     _local18 = 0;
  1549.                     do  {
  1550.                         _local23 = op_lf64((_local9 + _local18)) /*Alchemy*/ ;
  1551.                         _local24 = op_lf64(((_local9 + _local18) + 64)) /*Alchemy*/ ;
  1552.                         _local25 = op_lf64(((_local9 + _local18) + 128)) /*Alchemy*/ ;
  1553.                         _local26 = op_lf64(((_local9 + _local18) + 192)) /*Alchemy*/ ;
  1554.                         _local27 = op_lf64(((_local9 + _local18) + 0x0100)) /*Alchemy*/ ;
  1555.                         _local28 = op_lf64(((_local9 + _local18) + 320)) /*Alchemy*/ ;
  1556.                         _local29 = op_lf64(((_local9 + _local18) + 384)) /*Alchemy*/ ;
  1557.                         _local30 = op_lf64(((_local9 + _local18) + 448)) /*Alchemy*/ ;
  1558.                         _local31 = (_local23 + _local30);
  1559.                         _local38 = (_local23 - _local30);
  1560.                         _local32 = (_local24 + _local29);
  1561.                         _local37 = (_local24 - _local29);
  1562.                         _local33 = (_local25 + _local28);
  1563.                         _local36 = (_local25 - _local28);
  1564.                         _local34 = (_local26 + _local27);
  1565.                         _local35 = (_local26 - _local27);
  1566.                         _local39 = (_local31 + _local34);
  1567.                         _local42 = (_local31 - _local34);
  1568.                         _local40 = (_local32 + _local33);
  1569.                         _local41 = (_local32 - _local33);
  1570.                         op_sf64((_local39 + _local40), (_local9 + _local18)); //Alchemy
  1571.                         op_sf64((_local39 - _local40), ((_local9 + _local18) + 0x0100)); //Alchemy
  1572.                         _local43 = ((_local41 + _local42) * 0.707106781);
  1573.                         op_sf64((_local42 + _local43), ((_local9 + _local18) + 128)); //Alchemy
  1574.                         op_sf64((_local42 - _local43), ((_local9 + _local18) + 384)); //Alchemy
  1575.                         _local39 = (_local35 + _local36);
  1576.                         _local40 = (_local36 + _local37);
  1577.                         _local41 = (_local37 + _local38);
  1578.                         _local47 = ((_local39 - _local41) * 0.382683433);
  1579.                         _local44 = ((0.5411961 * _local39) + _local47);
  1580.                         _local46 = ((1.306562965 * _local41) + _local47);
  1581.                         _local45 = (_local40 * 0.707106781);
  1582.                         _local48 = (_local38 + _local45);
  1583.                         _local49 = (_local38 - _local45);
  1584.                         op_sf64((_local49 + _local44), ((_local9 + _local18) + 320)); //Alchemy
  1585.                         op_sf64((_local49 - _local44), ((_local9 + _local18) + 192)); //Alchemy
  1586.                         op_sf64((_local48 + _local46), ((_local9 + _local18) + 64)); //Alchemy
  1587.                         op_sf64((_local48 - _local46), ((_local9 + _local18) + 448)); //Alchemy
  1588.                         _local18 = (_local18 + 8);
  1589.                     } while (_local18 < 64);
  1590.                     _local19 = 0;
  1591.                     do  {
  1592.                         _local50 = (op_lf64((_local9 + (_local19 << 3))) /*Alchemy*/  * op_lf64((2434 + (_local19 << 3))) /*Alchemy*/ );
  1593.                         op_si32(((op_lf64((_local9 + (_local19 << 3))) /*Alchemy*/  * op_lf64((2434 + (_local19 << 3))) /*Alchemy*/ ) + ((_local50)>0) ? 0.5 : -0.5), (op_li8((2946 + _local19)) /*Alchemy*/  << 2)); //Alchemy
  1594.                         ++_local19;
  1595.                     } while (_local19 < 64);
  1596.                     _local51 = op_li32(0) /*Alchemy*/ ;
  1597.                     _local52 = (_local51 - _local22);
  1598.                     _local22 = _local51;
  1599.                     if (_local52 == 0){
  1600.                         _local53 = op_li8(_local16) /*Alchemy*/ ;
  1601.                         while (_local53--, _local53 >= 0) {
  1602.                             if ((op_li16((_local16 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1603.                                 _local12 = (_local12 | (1 << _local11));
  1604.                             };
  1605.                             _local11--;
  1606.                             if (_local11 < 0){
  1607.                                 if (_local12 == 0xFF){
  1608.                                     op_si16(0xFF, _local10); //Alchemy
  1609.                                     _local10 = (_local10 + 2);
  1610.                                 } else {
  1611.                                     op_si8(_local12, _local10); //Alchemy
  1612.                                     _local10++;
  1613.                                 };
  1614.                                 _local11 = 7;
  1615.                                 _local12 = 0;
  1616.                             };
  1617.                         };
  1618.                     } else {
  1619.                         _local18 = ((32767 + _local52) * 3);
  1620.                         _local19 = (_local16 + (op_li8((5004 + _local18)) /*Alchemy*/  * 3));
  1621.                         _local53 = op_li8(_local19) /*Alchemy*/ ;
  1622.                         while (_local53--, _local53 >= 0) {
  1623.                             if ((op_li16((_local19 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1624.                                 _local12 = (_local12 | (1 << _local11));
  1625.                             };
  1626.                             _local11--;
  1627.                             if (_local11 < 0){
  1628.                                 if (_local12 == 0xFF){
  1629.                                     op_si16(0xFF, _local10); //Alchemy
  1630.                                     _local10 = (_local10 + 2);
  1631.                                 } else {
  1632.                                     op_si8(_local12, _local10); //Alchemy
  1633.                                     _local10++;
  1634.                                 };
  1635.                                 _local11 = 7;
  1636.                                 _local12 = 0;
  1637.                             };
  1638.                         };
  1639.                         _local19 = (5004 + _local18);
  1640.                         _local53 = op_li8(_local19) /*Alchemy*/ ;
  1641.                         while (_local53--, _local53 >= 0) {
  1642.                             if ((op_li16((_local19 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1643.                                 _local12 = (_local12 | (1 << _local11));
  1644.                             };
  1645.                             _local11--;
  1646.                             if (_local11 < 0){
  1647.                                 if (_local12 == 0xFF){
  1648.                                     op_si16(0xFF, _local10); //Alchemy
  1649.                                     _local10 = (_local10 + 2);
  1650.                                 } else {
  1651.                                     op_si8(_local12, _local10); //Alchemy
  1652.                                     _local10++;
  1653.                                 };
  1654.                                 _local11 = 7;
  1655.                                 _local12 = 0;
  1656.                             };
  1657.                         };
  1658.                     };
  1659.                     _local19 = 63;
  1660.                     while (if (_local19 > 0){
  1661.                         false;
  1662.                     }, false) {
  1663.                         _local19--;
  1664.                     };
  1665.                     if (_local19 != 0){
  1666.                         _local20 = 1;
  1667.                         while (_local20 <= _local19) {
  1668.                             _local54 = _local20;
  1669.                             while (if (_local20 <= _local19){
  1670.                                 false;
  1671.                             }, false) {
  1672.                                 _local20++;
  1673.                             };
  1674.                             _local55 = (_local20 - _local54);
  1675.                             if (_local55 >= 16){
  1676.                                 _local53 = (_local55 >> 4);
  1677.                                 _local56 = 1;
  1678.                                 while (_local56 <= _local53) {
  1679.                                     _local21 = (_local17 + 720);
  1680.                                     _local57 = op_li8(_local21) /*Alchemy*/ ;
  1681.                                     while (_local57--, _local57 >= 0) {
  1682.                                         if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1683.                                             _local12 = (_local12 | (1 << _local11));
  1684.                                         };
  1685.                                         _local11--;
  1686.                                         if (_local11 < 0){
  1687.                                             if (_local12 == 0xFF){
  1688.                                                 op_si16(0xFF, _local10); //Alchemy
  1689.                                                 _local10 = (_local10 + 2);
  1690.                                             } else {
  1691.                                                 op_si8(_local12, _local10); //Alchemy
  1692.                                                 _local10++;
  1693.                                             };
  1694.                                             _local11 = 7;
  1695.                                             _local12 = 0;
  1696.                                         };
  1697.                                     };
  1698.                                     _local56++;
  1699.                                 };
  1700.                                 _local55 = (_local55 & 15);
  1701.                             };
  1702.                             _local18 = ((32767 + op_li32((_local20 << 2)) /*Alchemy*/ ) * 3);
  1703.                             _local21 = ((_local17 + ((_local55 << 4) * 3)) + (op_li8((5004 + _local18)) /*Alchemy*/  * 3));
  1704.                             _local57 = op_li8(_local21) /*Alchemy*/ ;
  1705.                             while (_local57--, _local57 >= 0) {
  1706.                                 if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1707.                                     _local12 = (_local12 | (1 << _local11));
  1708.                                 };
  1709.                                 _local11--;
  1710.                                 if (_local11 < 0){
  1711.                                     if (_local12 == 0xFF){
  1712.                                         op_si16(0xFF, _local10); //Alchemy
  1713.                                         _local10 = (_local10 + 2);
  1714.                                     } else {
  1715.                                         op_si8(_local12, _local10); //Alchemy
  1716.                                         _local10++;
  1717.                                     };
  1718.                                     _local11 = 7;
  1719.                                     _local12 = 0;
  1720.                                 };
  1721.                             };
  1722.                             _local21 = (5004 + _local18);
  1723.                             _local57 = op_li8(_local21) /*Alchemy*/ ;
  1724.                             while (_local57--, _local57 >= 0) {
  1725.                                 if ((op_li16((_local21 + 1)) /*Alchemy*/  & (1 << _local57)) != 0){
  1726.                                     _local12 = (_local12 | (1 << _local11));
  1727.                                 };
  1728.                                 _local11--;
  1729.                                 if (_local11 < 0){
  1730.                                     if (_local12 == 0xFF){
  1731.                                         op_si16(0xFF, _local10); //Alchemy
  1732.                                         _local10 = (_local10 + 2);
  1733.                                     } else {
  1734.                                         op_si8(_local12, _local10); //Alchemy
  1735.                                         _local10++;
  1736.                                     };
  1737.                                     _local11 = 7;
  1738.                                     _local12 = 0;
  1739.                                 };
  1740.                             };
  1741.                             _local20++;
  1742.                         };
  1743.                     };
  1744.                     if (_local19 != 63){
  1745.                         _local53 = op_li8(_local17) /*Alchemy*/ ;
  1746.                         while (_local53--, _local53 >= 0) {
  1747.                             if ((op_li16((_local17 + 1)) /*Alchemy*/  & (1 << _local53)) != 0){
  1748.                                 _local12 = (_local12 | (1 << _local11));
  1749.                             };
  1750.                             _local11--;
  1751.                             if (_local11 < 0){
  1752.                                 if (_local12 == 0xFF){
  1753.                                     op_si16(0xFF, _local10); //Alchemy
  1754.                                     _local10 = (_local10 + 2);
  1755.                                 } else {
  1756.                                     op_si8(_local12, _local10); //Alchemy
  1757.                                     _local10++;
  1758.                                 };
  1759.                                 _local11 = 7;
  1760.                                 _local12 = 0;
  1761.                             };
  1762.                         };
  1763.                     };
  1764.                     _local15 = _local22;
  1765.                     _local7 = (_local7 + 8);
  1766.                 } while (_local7 < _local4);
  1767.                 _local8 = (_local8 + 8);
  1768.             } while (_local8 < _local5);
  1769.             if (_local11 >= 0){
  1770.                 _local22 = (_local11 + 1);
  1771.                 while (_local22--, _local22 >= 0) {
  1772.                     if ((((1 << (_local11 + 1)) - 1) & (1 << _local22)) != 0){
  1773.                         _local12 = (_local12 | (1 << _local11));
  1774.                     };
  1775.                     _local11--;
  1776.                     if (_local11 < 0){
  1777.                         if (_local12 == 0xFF){
  1778.                             op_si16(0xFF, _local10); //Alchemy
  1779.                             _local10 = (_local10 + 2);
  1780.                         } else {
  1781.                             op_si8(_local12, _local10); //Alchemy
  1782.                             _local10++;
  1783.                         };
  1784.                         _local11 = 7;
  1785.                         _local12 = 0;
  1786.                     };
  1787.                 };
  1788.             };
  1789.             op_si16(55807, _local10); //Alchemy
  1790.             ApplicationDomain.currentDomain.domainMemory = _local3;
  1791.             var _local58:ByteArray = new ByteArray();
  1792.             _local58.writeBytes(_local6, 201609, ((_local10 - 201609) + 2));
  1793.             _local58.position = 0;
  1794.             return (_local58);
  1795.         }
  1796.  
  1797.     }
  1798. }//package by.blooddy.crypto.image
  1799. ?package {
  1800.     import flash.display.*;
  1801.     import flash.geom.*;
  1802.     import flash.filters.*;
  1803.  
  1804.     public class ImageHelper {
  1805.  
  1806.         public static function resize(_arg1:Bitmap, _arg2:number, _arg3:number):Bitmap{
  1807.             var _local4:number = 1;
  1808.             var _local5:Matrix = new Matrix();
  1809.             if ((((_arg1.width > _arg2)) || ((_arg1.height > _arg3)))){
  1810.                 _local4 = math.min((_arg2 / _arg1.width), (_arg3 / _arg1.height));
  1811.                 _local5.scale(_local4, _local4);
  1812.             };
  1813.             _arg1.smoothing = true;
  1814.             var _local6:BitmapData = new BitmapData((_arg1.width * _local4), (_arg1.height * _local4), true, 0xFFFFFFFF);
  1815.             _local6.draw(_arg1, _local5, null, null, null, true);
  1816.             return (new Bitmap(_local6, PixelSnapping.AUTO, true));
  1817.         }
  1818.         private static function applySharpen(_arg1:BitmapData, _arg2:boolean=false):void{
  1819.             var _local3:ConvolutionFilter = new ConvolutionFilter();
  1820.             _local3.matrixX = 3;
  1821.             _local3.matrixY = 3;
  1822.             _local3.bias = 0;
  1823.             if (_arg2){
  1824.                 _local3.divisor = 20;
  1825.                 _local3.matrix = [-1, -1, -1, -1, 28, -1, -1, -1, -1];
  1826.             } else {
  1827.                 _local3.divisor = 7;
  1828.                 _local3.matrix = [0, -2, 0, -2, 15, -2, 0, -2, 0];
  1829.             };
  1830.             _arg1.applyFilter(_arg1, _arg1.rect, new Point(0, 0), _local3);
  1831.         }
  1832.         public static function rotateRight(_arg1:Bitmap):Bitmap{
  1833.             return (ImageHelper.rotate(_arg1, 1));
  1834.         }
  1835.         public static function rotateLeft(_arg1:Bitmap):Bitmap{
  1836.             return (ImageHelper.rotate(_arg1, 2));
  1837.         }
  1838.         private static function rotate(_arg1:Bitmap, _arg2:number):Bitmap{
  1839.             var _local3:Matrix = new Matrix();
  1840.             switch (_arg2){
  1841.                 case 2:
  1842.                     _local3.rotate((-(math.pi) / 2));
  1843.                     _local3.translate(0, _arg1.width);
  1844.                     break;
  1845.                 default:
  1846.                     _local3.rotate((math.pi / 2));
  1847.                     _local3.translate(_arg1.height, 0);
  1848.             };
  1849.             _arg1.smoothing = true;
  1850.             var _local4:BitmapData = new BitmapData(_arg1.height, _arg1.width, true, 0xFFFFFFFF);
  1851.             _local4.draw(_arg1, _local3, null, null, null, true);
  1852.             return (new Bitmap(_local4, PixelSnapping.AUTO, true));
  1853.         }
  1854.  
  1855.     }
  1856. }//package
  1857. ?package {
  1858.     import flash.utils.*;
  1859.  
  1860.     public class UploadPostData {
  1861.  
  1862.         private var _boundary:string = "";
  1863.         private var _post_data:ByteArray;
  1864.         private var partNum:number = 0;
  1865.         private var count:number = 0;
  1866.  
  1867.         public function UploadPostData(_arg1:string, _arg2:string, _arg3:ByteArray){
  1868.             var _local4:number;
  1869.             super();
  1870.             this._post_data = new ByteArray();
  1871.             this._post_data = this.BOUNDARY(this._post_data);
  1872.             this._post_data = this.LINEBREAK(this._post_data);
  1873.             var _local5 = (("Content-Disposition: form-data; name=\"Filename\"\r\n\r\n" + _arg2) + "\r\n");
  1874.             _local4 = 0;
  1875.             while (_local4 < _local5.length) {
  1876.                 this._post_data.writeByte(_local5.charcodeat(_local4));
  1877.                 _local4++;
  1878.             };
  1879.             this._post_data = this.BOUNDARY(this._post_data);
  1880.             _local5 = (("\r\nContent-Disposition: form-data; name=\"photo\"; filename=\"" + _arg2) + "\"\r\nContent-Type: application/octet-stream\r\n\r\n");
  1881.             _local4 = 0;
  1882.             while (_local4 < _local5.length) {
  1883.                 this._post_data.writeByte(_local5.charcodeat(_local4));
  1884.                 _local4++;
  1885.             };
  1886.             this._post_data.writeBytes(_arg3, 0, _arg3.length);
  1887.             this._post_data = this.LINEBREAK(this._post_data);
  1888.             this._post_data = this.BOUNDARY(this._post_data);
  1889.             _local5 = "\r\nContent-Disposition: form-data; name=\"Upload\"\r\n\r\nSubmit Query\r\n";
  1890.             _local4 = 0;
  1891.             while (_local4 < _local5.length) {
  1892.                 this._post_data.writeByte(_local5.charcodeat(_local4));
  1893.                 _local4++;
  1894.             };
  1895.             this._post_data = this.DOUBLEDASH(this.BOUNDARY(this._post_data));
  1896.         }
  1897.         public function reset():void{
  1898.             this._post_data.clear();
  1899.             this._post_data = new ByteArray();
  1900.             this._boundary = "";
  1901.         }
  1902.         public function getBoundary():string{
  1903.             var _local1:int;
  1904.             if (this._boundary.length == 0){
  1905.                 _local1 = 0;
  1906.                 while (_local1 < 32) {
  1907.                     this._boundary = (this._boundary + string.fromcharcode(int((97 + (math.random() * 25)))));
  1908.                     _local1++;
  1909.                 };
  1910.             };
  1911.             return (this._boundary);
  1912.         }
  1913.         public function getPostData():ByteArray{
  1914.             return (this._post_data);
  1915.         }
  1916.         private function BOUNDARY(_arg1:ByteArray):ByteArray{
  1917.             var _local2:int = this.getBoundary().length;
  1918.             _arg1 = this.DOUBLEDASH(_arg1);
  1919.             var _local3:int;
  1920.             while (_local3 < _local2) {
  1921.                 _arg1.writeByte(this._boundary.charcodeat(_local3));
  1922.                 _local3++;
  1923.             };
  1924.             return (_arg1);
  1925.         }
  1926.         private function LINEBREAK(_arg1:ByteArray):ByteArray{
  1927.             _arg1.writeShort(3338);
  1928.             return (_arg1);
  1929.         }
  1930.         private function QUOTATIONMARK(_arg1:ByteArray):ByteArray{
  1931.             _arg1.writeByte(34);
  1932.             return (_arg1);
  1933.         }
  1934.         private function DOUBLEDASH(_arg1:ByteArray):ByteArray{
  1935.             _arg1.writeShort(0x2D2D);
  1936.             return (_arg1);
  1937.         }
  1938.  
  1939.     }
  1940. }//package
  1941. ?package {
  1942.     import flash.net.*;
  1943.     import flash.display.*;
  1944.  
  1945.     public class Config {
  1946.  
  1947.         private static var _config:object = {
  1948.             upload_url:"http://localhost/index.php",
  1949.             redirect_url:"",
  1950.             file_size_limit:((0x0400 * 0x0400) * 10),
  1951.             file_types_description:"All files, *.*",
  1952.             file_types:"*.*",
  1953.             file_name:"",
  1954.             post_data:"",
  1955.             max_files:200,
  1956.             jpeg_quality:93,
  1957.             lang:{
  1958.                 button_browse:"Открыть файл",
  1959.                 button_terminate:"Прервать"
  1960.             },
  1961.             onMouseOver:"debugLog",
  1962.             onMouseOut:"debugLog",
  1963.             onmousedown:"debugLog",
  1964.             onmouseup:"debugLog",
  1965.             onUploadStart:"onUploadStart",
  1966.             onUploadProgress:"onUploadProgress",
  1967.             onUploadError:"onUploadError",
  1968.             onUploadSuccess:"onUploadSuccess",
  1969.             onUploadComplete:"onUploadComplete",
  1970.             onSelectClick:"onSelectClick",
  1971.             onDebug:"onDebug"
  1972.         };
  1973.  
  1974.         public static function getConfig():object{
  1975.             return (_config);
  1976.         }
  1977.         public static function setConfig(_arg1:object):void{
  1978.             var key:* = null;
  1979.             var value:* = null;
  1980.             var is_lang:* = false;
  1981.             var is_callback:* = false;
  1982.             var parameters:* = _arg1;
  1983.             try {
  1984.                 is_lang = false;
  1985.                 is_callback = false;
  1986.                 for (key in parameters) {
  1987.                     value = string(parameters[key]);
  1988.                     is_lang = (((key.indexof("lang.") == 0)) && (!((_config.lang[key.substr(5)] === undefined))));
  1989.                     if (is_lang){
  1990.                         _config.lang[key.substr(5)] = unescape(value);
  1991.                     } else {
  1992.                         if (_config[key] !== undefined){
  1993.                             _config[key] = unescape(value);
  1994.                         };
  1995.                     };
  1996.                 };
  1997.             } catch(error:error) {
  1998.             };
  1999.         }
  2000.         public static function loadConfig(_arg1:LoaderInfo):object{
  2001.             var parameters:* = null;
  2002.             var urlQuery:* = null;
  2003.             var urlVars:* = null;
  2004.             var key:* = null;
  2005.             var loaderInfo:* = _arg1;
  2006.             try {
  2007.                 loaderInfo = LoaderInfo(loaderInfo);
  2008.                 parameters = loaderInfo.parameters;
  2009.                 urlQuery = loaderInfo.url.split("?")[1];
  2010.                 urlVars = new URLVariables(((urlQuery) || ("")));
  2011.                 for (key in urlVars) {
  2012.                     if (parameters[key]){
  2013.                         delete parameters[key];
  2014.                     };
  2015.                 };
  2016.                 setConfig(parameters);
  2017.             } catch(error:error) {
  2018.             };
  2019.             return (_config);
  2020.         }
  2021.  
  2022.     }
  2023. }//package
Advertisement
Add Comment
Please, Sign In to add comment