Skip to content

Instantly share code, notes, and snippets.

@Swyter
Last active December 15, 2016 08:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Swyter/5ca9cf32a7f6ddc4e146e360c17f40a2 to your computer and use it in GitHub Desktop.
Save Swyter/5ca9cf32a7f6ddc4e146e360c17f40a2 to your computer and use it in GitHub Desktop.
package com.spotify.core
{
import avm2.intrinsics.memory.li32;
import avm2.intrinsics.memory.li8;
import avm2.intrinsics.memory.si32;
import avm2.intrinsics.memory.si8;
import com.spotify.core_2F_var_2F_folders_2F_9w_2F_1qgqt2cn279bvq4xrmv1c2_80000gn_2F_T_2F__2F_ccfk1YOK_2E_lto_2E_bc_3A_71C87280_2D_0648_2D_4E44_2D_97CD_2D_27E77AB5FB54.___unnamed_66;
import com.spotify.core_2F_var_2F_folders_2F_9w_2F_1qgqt2cn279bvq4xrmv1c2_80000gn_2F_T_2F__2F_ccfk1YOK_2E_lto_2E_bc_3A_71C87280_2D_0648_2D_4E44_2D_97CD_2D_27E77AB5FB54.___unnamed_67;
import com.spotify.core_2F_var_2F_folders_2F_9w_2F_1qgqt2cn279bvq4xrmv1c2_80000gn_2F_T_2F__2F_ccfk1YOK_2E_lto_2E_bc_3A_71C87280_2D_0648_2D_4E44_2D_97CD_2D_27E77AB5FB54.___unnamed_68;
import com.spotify.core_2F_var_2F_folders_2F_9w_2F_1qgqt2cn279bvq4xrmv1c2_80000gn_2F_T_2F__2F_ccfk1YOK_2E_lto_2E_bc_3A_71C87280_2D_0648_2D_4E44_2D_97CD_2D_27E77AB5FB54.F___unnamed_4;
import com.spotify.core_2F_var_2F_folders_2F_9w_2F_1qgqt2cn279bvq4xrmv1c2_80000gn_2F_T_2F__2F_ccfk1YOK_2E_lto_2E_bc_3A_71C87280_2D_0648_2D_4E44_2D_97CD_2D_27E77AB5FB54.F___unnamed_57_possibly_free_or_destructor;
import com.spotify.core_2F_var_2F_folders_2F_9w_2F_1qgqt2cn279bvq4xrmv1c2_80000gn_2F_T_2F__2F_ccfk1YOK_2E_lto_2E_bc_3A_71C87280_2D_0648_2D_4E44_2D_97CD_2D_27E77AB5FB54.___unnamed_69;
// public function evaluate(__param1_extra_key__:String, __param2_hardcoded_key__:String) : String
function evaluate(__param1_extra_key__, __param2_hardcoded_key__)
{
function int(a) {return a};
function uint(a) {return a};
ESP = 512;
a = {};
CModule = {};
CModule.mallocString = function(str) {};
CModule.readString = function(str) {};
F_malloc = function() {};
F___unnamed_4 = function() {};
F___unnamed_57_possibly_free_or_destructor = function() {};
var __ESP_ORIG__ = 0;
var __RET__ = null;
var __ptr_param1_extra_key__ = 0;
var __ptr_param2_hardcoded_key__ = 0;
var _param1_counter_ = 0;
var _tmp_ = 0;
var _loc19_ = 0;
var _loc21_ = 0;
var _loc3_ = 0;
var _loc17_ = 0;
var _cur_ptr_ = 0;
var _loc10_ = 0;
var _loc11_ = 0;
var _loc13_ = 0;
var _loc12_ = 0;
var _loc9_ = 0;
var __ESP__ = int(ESP);
__ESP_ORIG__ = __ESP__;
__ESP__ = 352 - __ESP__;
ESP = __ESP__ & 0xFFFFFFF0;
__ptr_param1_extra_key__ = CModule.mallocString(__param1_extra_key__);
_loc21_ = __ptr_param1_extra_key__ & 0xFFFFFFFC;
ESP = __ESP__ & 0xFFFFFFF0;
__ptr_param2_hardcoded_key__ = CModule.mallocString(__param2_hardcoded_key__);
// determine if one of the bytes in a 4 byte word is zero
_loc19_ = a[_loc21_]
_tmp_ = 0xFEFEFEFF + _loc19_;
_loc19_ = _loc19_ & 0x80808080;
_loc19_ = _loc19_ ^ 0x80808080;
_tmp_ = _loc19_ & _tmp_;
if(_tmp_ != 0)
{
_loc17_ = _loc21_ + 4;
_param1_counter_ = 0;
// check that the extra key is not zero, count byte size
while(true)
{
_cur_ptr_ = __ptr_param1_extra_key__ + _param1_counter_;
if(uint(_cur_ptr_) < uint(_loc17_))
{
_tmp_ = a[_cur_ptr_]
if(_tmp_ != 0)
{
_param1_counter_ = 1 + _param1_counter_;
continue;
}
break;
}
}
_tmp_ = int(_param1_counter_ >>> 31);
_tmp_ += _param1_counter_;
_tmp_ >>= 1;
_tmp_ = 1 + _tmp_;
__ESP__ = 16 - __ESP__;
a[__ESP__] = _tmp_;
ESP = __ESP__;
F_malloc();
_loc17_ = __ptr_param1_extra_key__ + 1;
_cur_ptr_ = 0;
__ESP__ = 16 + __ESP__;
__ptr_param1_extra_key__ = eax;
for(; uint(_cur_ptr_) < uint(_param1_counter_); _tmp_ = _cur_ptr_ + __ptr_param1_extra_key__,_loc19_ = _loc21_ << 4,_loc19_ = _loc19_ + _loc3_,a[_tmp_] = _loc19_,_loc17_ = _loc17_ + 2,_cur_ptr_ = _cur_ptr_ + 1)
{
_loc13_ = a[_loc17_ - 1]
_loc21_ = -48 + _loc13_;
_tmp_ = _loc21_ & 255;
if(uint(_tmp_) >= 10)
{
_loc21_ = _loc13_ & 223;
_tmp_ = -65 + _loc21_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc21_ = -55 + _loc21_;
}
break;
}
_loc13_ = a[_loc17_]
_loc3_ = _loc13_ + -48;
_tmp_ = _loc3_ & 255;
if(uint(_tmp_) >= 10)
{
_loc13_ = _loc13_ & 223;
_tmp_ = -65 + _loc13_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc3_ = _loc13_ + -55;
continue;
}
break;
}
}
// reset to zero
_loc13_ = 0;
a[__ESP_ORIG__ - 212] = _loc13_;
a[__ESP_ORIG__ - 216] = _loc13_;
a[__ESP_ORIG__ - 220] = _loc13_;
a[__ESP_ORIG__ - 224] = _loc13_;
a[__ESP_ORIG__ - 228] = _loc13_;
a[__ESP_ORIG__ - 232] = _loc13_;
a[__ESP_ORIG__ - 236] = _loc13_;
a[__ESP_ORIG__ - 240] = _loc13_;
a[__ESP_ORIG__ - 244] = _loc13_;
a[__ESP_ORIG__ - 248] = _loc13_;
a[__ESP_ORIG__ - 252] = _loc13_;
a[__ESP_ORIG__ - 256] = _loc13_;
a[__ESP_ORIG__ - 260] = _loc13_;
a[__ESP_ORIG__ - 264] = _loc13_;
a[__ESP_ORIG__ - 268] = _loc13_;
a[__ESP_ORIG__ - 272] = _loc13_;
a[__ESP_ORIG__ - 276] = _loc13_;
a[__ESP_ORIG__ - 280] = _loc13_;
a[__ESP_ORIG__ - 284] = _loc13_;
a[__ESP_ORIG__ - 288] = _loc13_;
a[__ESP_ORIG__ - 292] = _loc13_;
a[__ESP_ORIG__ - 296] = _loc13_;
a[__ESP_ORIG__ - 300] = _loc13_;
a[__ESP_ORIG__ - 304] = _loc13_;
a[__ESP_ORIG__ - 308] = _loc13_;
a[__ESP_ORIG__ - 312] = _loc13_;
a[__ESP_ORIG__ - 316] = _loc13_;
a[__ESP_ORIG__ - 320] = _loc13_;
a[__ESP_ORIG__ - 324] = _loc13_;
a[__ESP_ORIG__ - 328] = _loc13_;
a[__ESP_ORIG__ - 332] = _loc13_;
a[__ESP_ORIG__ - 336] = _loc13_;
a[__ESP_ORIG__ - 340] = _loc13_;
a[__ESP_ORIG__ - 344] = _loc13_;
a[__ESP_ORIG__ - 348] = _loc13_;
__ESP__ = 16 - __ESP__;
a[__ESP__] = 17;
ESP = __ESP__;
F_malloc();
__ESP__ = 16 + __ESP__;
_loc21_ = int(eax);
a[_loc21_ + 16] = _loc13_;
a[_loc21_ + 12] = _loc13_;
a[_loc21_ + 8] = _loc13_;
a[_loc21_ + 4] = _loc13_;
a[_loc21_] = _loc13_;
__ESP__ = 16 - __ESP__;
a[__ESP__] = 17;
ESP = __ESP__;
F_malloc();
__ESP__ = 16 + __ESP__;
_loc17_ = eax;
a[_loc17_ + 16] = _loc13_;
a[_loc17_ + 12] = _loc13_;
a[_loc17_ + 8] = _loc13_;
a[_loc17_ + 4] = _loc13_;
a[_loc17_] = _loc13_;
__ESP__ = 16 - __ESP__;
a[__ESP__] = 17;
ESP = __ESP__;
F_malloc();
__ESP__ = 16 + __ESP__;
_cur_ptr_ = eax;
a[_cur_ptr_ + 16] = _loc13_;
a[_cur_ptr_ + 12] = _loc13_;
a[_cur_ptr_ + 8] = _loc13_;
a[_cur_ptr_ + 4] = _loc13_;
a[_cur_ptr_] = _loc13_;
__ESP__ = 16 - __ESP__;
a[__ESP__] = 33;
ESP = __ESP__;
F_malloc();
__ESP__ = 16 + __ESP__;
_param1_counter_ = int(eax);
__ESP__ = 16 - __ESP__;
a[__ESP__ + 8] = 33;
a[__ESP__ + 4] = _loc13_;
a[__ESP__] = _param1_counter_;
ESP = __ESP__;
Fmemset();
__ESP__ = 16 + __ESP__;
_tmp_ = a[__ptr_param1_extra_key__ + 12]
a[__ESP_ORIG__ - 236] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 8]
a[__ESP_ORIG__ - 240] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 4]
a[__ESP_ORIG__ - 244] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__]
a[__ESP_ORIG__ - 248] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 28]
a[__ESP_ORIG__ - 216] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 24]
a[__ESP_ORIG__ - 220] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 20]
a[__ESP_ORIG__ - 224] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 16]
a[__ESP_ORIG__ - 228] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 44]
a[__ESP_ORIG__ - 276] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 40]
a[__ESP_ORIG__ - 280] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 36]
a[__ESP_ORIG__ - 284] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 32]
a[__ESP_ORIG__ - 288] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 60]
a[__ESP_ORIG__ - 256] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 56]
a[__ESP_ORIG__ - 260] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 52]
a[__ESP_ORIG__ - 264] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 48]
a[__ESP_ORIG__ - 268] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 76]
a[__ESP_ORIG__ - 316] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 72]
a[__ESP_ORIG__ - 320] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 68]
a[__ESP_ORIG__ - 324] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 64]
a[__ESP_ORIG__ - 328] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 92]
a[__ESP_ORIG__ - 296] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 88]
a[__ESP_ORIG__ - 300] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 84]
a[__ESP_ORIG__ - 304] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 80]
a[__ESP_ORIG__ - 308] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 108]
a[__ESP_ORIG__ - 336] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 104]
a[__ESP_ORIG__ - 340] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 100]
a[__ESP_ORIG__ - 344] = _tmp_;
_tmp_ = a[__ptr_param1_extra_key__ + 96]
a[__ESP_ORIG__ - 348] = _tmp_;
__ESP__ = 16 - __ESP__;
a[__ESP__] = 17;
ESP = __ESP__;
F_malloc();
__ESP__ = 16 + __ESP__;
__ptr_param1_extra_key__ = eax;
a[__ptr_param1_extra_key__ + 16] = _loc13_;
a[__ptr_param1_extra_key__ + 12] = _loc13_;
a[__ptr_param1_extra_key__ + 8] = _loc13_;
a[__ptr_param1_extra_key__ + 4] = _loc13_;
a[__ptr_param1_extra_key__] = _loc13_;
_loc3_ = __ptr_param2_hardcoded_key__ + 1;
for(; uint(_loc13_) < 16; _tmp_ = 160 - __ESP_ORIG__,_tmp_ = _loc13_ + _tmp_,_loc19_ = _loc10_ << 4,_loc19_ = _loc19_ + _loc11_,a[_tmp_] = _loc19_,_loc3_ = _loc3_ + 2,_loc13_ = 1 + _loc13_)
{
_loc9_ = a[_loc3_ - 1]
_loc10_ = -48 + _loc9_;
_tmp_ = _loc10_ & 255;
if(uint(_tmp_) >= 10)
{
_loc10_ = _loc9_ & 223;
_tmp_ = -65 + _loc10_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc10_ = -55 + _loc10_;
}
break;
}
_loc9_ = a[_loc3_]
_loc11_ = -48 + _loc9_;
_tmp_ = _loc11_ & 255;
if(uint(_tmp_) >= 10)
{
_loc9_ = _loc9_ & 223;
_tmp_ = -65 + _loc9_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc11_ = -55 + _loc9_;
continue;
}
break;
}
}
_loc13_ = 1 + ___unnamed_66;
_loc3_ = 0;
for(; uint(_loc3_) < 16; _tmp_ = 176 - __ESP_ORIG__,_tmp_ = _loc3_ + _tmp_,_loc19_ = _loc10_ << 4,_loc19_ = _loc19_ + _loc11_,a[_tmp_] = _loc19_,_loc13_ = 2 + _loc13_,_loc3_ = _loc3_ + 1)
{
_loc9_ = a[_loc13_ - 1]
_loc10_ = -48 + _loc9_;
_tmp_ = _loc10_ & 255;
if(uint(_tmp_) >= 10)
{
_loc10_ = _loc9_ & 223;
_tmp_ = -65 + _loc10_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc10_ = -55 + _loc10_;
}
break;
}
_loc9_ = a[_loc13_]
_loc11_ = -48 + _loc9_;
_tmp_ = _loc11_ & 255;
if(uint(_tmp_) >= 10)
{
_loc9_ = _loc9_ & 223;
_tmp_ = -65 + _loc9_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc11_ = -55 + _loc9_;
continue;
}
break;
}
}
_loc13_ = 1 + ___unnamed_67;
_loc3_ = 0;
for(; uint(_loc3_) < 16; _tmp_ = 192 - __ESP_ORIG__,_tmp_ = _loc3_ + _tmp_,_loc19_ = _loc10_ << 4,_loc19_ = _loc19_ + _loc11_,a[_tmp_] = _loc19_,_loc13_ = 2 + _loc13_,_loc3_ = _loc3_ + 1)
{
_loc9_ = a[_loc13_ - 1]
_loc10_ = -48 + _loc9_;
_tmp_ = _loc10_ & 255;
if(uint(_tmp_) >= 10)
{
_loc10_ = _loc9_ & 223;
_tmp_ = -65 + _loc10_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc10_ = -55 + _loc10_;
}
break;
}
_loc9_ = a[_loc13_]
_loc11_ = -48 + _loc9_;
_tmp_ = _loc11_ & 255;
if(uint(_tmp_) >= 10)
{
_loc9_ = _loc9_ & 223;
_tmp_ = -65 + _loc9_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc11_ = -55 + _loc9_;
continue;
}
break;
}
}
_loc13_ = 1 + ___unnamed_68;
_loc3_ = 0;
for(; uint(_loc3_) < 16; _tmp_ = 208 - __ESP_ORIG__,_tmp_ = _loc3_ + _tmp_,_loc19_ = _loc10_ << 4,_loc19_ = _loc19_ + _loc11_,a[_tmp_] = _loc19_,_loc13_ = 2 + _loc13_,_loc3_ = _loc3_ + 1)
{
_loc9_ = a[_loc13_ - 1]
_loc10_ = -48 + _loc9_;
_tmp_ = _loc10_ & 255;
if(uint(_tmp_) >= 10)
{
_loc10_ = _loc9_ & 223;
_tmp_ = -65 + _loc10_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc10_ = -55 + _loc10_;
}
break;
}
_loc9_ = a[_loc13_]
_loc11_ = -48 + _loc9_;
_tmp_ = _loc11_ & 255;
if(uint(_tmp_) >= 10)
{
_loc9_ = _loc9_ & 223;
_tmp_ = -65 + _loc9_;
_tmp_ = _tmp_ & 255;
if(uint(_tmp_) <= 5)
{
_loc11_ = -55 + _loc9_;
continue;
}
break;
}
}
__ESP__ = 16 - __ESP__;
_loc10_ = 248 - __ESP_ORIG__;
a[__ESP__ + 4] = _loc10_;
_tmp_ = 176 - __ESP_ORIG__;
a[__ESP__] = _tmp_;
_tmp_ = 144 - __ESP_ORIG__;
a[__ESP__ + 8] = _tmp_;
ESP = __ESP__;
F___unnamed_4();
__ESP__ = 16 + __ESP__;
_loc19_ = a[__ESP_ORIG__ - 132]
a[_loc21_ + 12] = _loc19_;
_loc19_ = a[__ESP_ORIG__ - 136]
a[_loc21_ + 8] = _loc19_;
_tmp_ = _tmp_ | 4;
_tmp_ = a[_tmp_]
a[_loc21_ + 4] = _tmp_;
_tmp_ = a[__ESP_ORIG__ - 144]
a[_loc21_] = _tmp_;
__ESP__ = 16 - __ESP__;
_loc3_ = __ESP_ORIG__ - 288;
a[__ESP__ + 4] = _loc3_;
_tmp_ = 192 - __ESP_ORIG__;
a[__ESP__] = _tmp_;
_tmp_ = 120 - __ESP_ORIG__;
a[__ESP__ + 8] = _tmp_;
ESP = __ESP__;
F___unnamed_4();
__ESP__ = 16 + __ESP__;
_loc19_ = a[__ESP_ORIG__ - 108]
a[_loc17_ + 12] = _loc19_;
_loc19_ = a[__ESP_ORIG__ - 112]
a[_loc17_ + 8] = _loc19_;
_tmp_ = _tmp_ | 4;
_tmp_ = a[_tmp_]
a[_loc17_ + 4] = _tmp_;
_tmp_ = a[__ESP_ORIG__ - 120]
a[_loc17_] = _tmp_;
__ESP__ = 16 - __ESP__;
_loc13_ = 328 - __ESP_ORIG__;
a[__ESP__ + 4] = _loc13_;
_tmp_ = 208 - __ESP_ORIG__;
a[__ESP__] = _tmp_;
_tmp_ = 96 - __ESP_ORIG__;
a[__ESP__ + 8] = _tmp_;
ESP = __ESP__;
F___unnamed_4();
__ESP__ = 16 + __ESP__;
_loc19_ = a[__ESP_ORIG__ - 84]
a[_cur_ptr_ + 12] = _loc19_;
_loc19_ = a[__ESP_ORIG__ - 88]
a[_cur_ptr_ + 8] = _loc19_;
_tmp_ = _tmp_ | 4;
_tmp_ = a[_tmp_]
a[_cur_ptr_ + 4] = _tmp_;
_tmp_ = a[__ESP_ORIG__ - 96]
a[_cur_ptr_] = _tmp_;
_loc9_ = 0;
_loc12_ = _loc9_;
loop6:
while(true)
{
_tmp_ = 228 - __ESP_ORIG__;
_tmp_ = _loc12_ - _tmp_;
_tmp_ = a[_tmp_]
_loc19_ = _loc12_ - _loc21_;
_loc19_ = a[_loc19_]
_loc11_ = _loc9_;
if(_loc19_ == _tmp_)
{
_loc12_ = -1 + _loc12_;
if(_loc12_ == 0xFFFFFFF0)
{
__ESP__ = 16 - __ESP__;
_loc13_ = 72 - __ESP_ORIG__;
a[__ESP__ + 8] = _loc13_;
a[__ESP__ + 4] = _loc10_;
_tmp_ = 160 - __ESP_ORIG__;
a[__ESP__] = _tmp_;
ESP = __ESP__;
F___unnamed_4();
__ESP__ = 16 + __ESP__;
_loc3_ = 0;
while(true)
{
_tmp_ = 348 - __ESP_ORIG__;
_tmp_ = _loc3_ - _tmp_;
_tmp_ = a[_tmp_]
_loc19_ = _loc3_ - _loc13_;
_loc19_ = a[_loc19_]
_tmp_ = _loc19_ ^ _tmp_;
_loc19_ = _loc3_ - __ptr_param1_extra_key__;
a[_loc19_] = _tmp_;
_loc3_ = _loc3_ + -1;
if(_loc3_ != 0xFFFFFFF0)
{
continue;
}
break loop6;
}
}
else
{
continue;
}
}
else
{
while(true)
{
_tmp_ = 268 - __ESP_ORIG__;
_tmp_ = _loc11_ - _tmp_;
_tmp_ = a[_tmp_]
_loc19_ = _loc11_ - _loc17_;
_loc19_ = a[_loc19_]
if(_loc19_ == _tmp_)
{
_loc11_ = -1 + _loc11_;
if(_loc11_ == 0xFFFFFFF0)
{
__ESP__ = 16 - __ESP__;
_loc13_ = 48 - __ESP_ORIG__;
a[__ESP__ + 8] = _loc13_;
a[__ESP__ + 4] = _loc3_;
_tmp_ = 160 - __ESP_ORIG__;
a[__ESP__] = _tmp_;
ESP = __ESP__;
F___unnamed_4();
__ESP__ = 16 + __ESP__;
_loc3_ = 0;
while(true)
{
_tmp_ = 348 - __ESP_ORIG__;
_tmp_ = _loc3_ - _tmp_;
_tmp_ = a[_tmp_]
_loc19_ = _loc3_ - _loc13_;
_loc19_ = a[_loc19_]
_loc19_ = _loc19_ ^ _tmp_;
_tmp_ = _loc3_ - __ptr_param1_extra_key__;
a[_tmp_] = _loc19_;
_loc3_ = _loc3_ + -1;
if(_loc3_ != 0xFFFFFFF0)
{
continue;
}
break loop6;
}
}
else
{
continue;
}
}
else
{
while(true)
{
_tmp_ = 308 - __ESP_ORIG__;
_tmp_ = _loc9_ - _tmp_;
_tmp_ = a[_tmp_]
_loc19_ = _loc9_ - _cur_ptr_;
_loc19_ = a[_loc19_]
if(_loc19_ == _tmp_)
{
_loc9_ = -1 + _loc9_;
if(_loc9_ == 0xFFFFFFF0)
{
__ESP__ = 16 - __ESP__;
_loc3_ = __ESP_ORIG__ - 24;
a[__ESP__ + 8] = _loc3_;
a[__ESP__ + 4] = _loc13_;
_tmp_ = 160 - __ESP_ORIG__;
a[__ESP__] = _tmp_;
ESP = __ESP__;
F___unnamed_4();
__ESP__ = 16 + __ESP__;
_loc13_ = 0;
while(true)
{
_tmp_ = 348 - __ESP_ORIG__;
_tmp_ = _loc13_ - _tmp_;
_tmp_ = a[_tmp_]
_loc19_ = _loc13_ - _loc3_;
_loc19_ = a[_loc19_]
_loc19_ = _loc19_ ^ _tmp_;
_tmp_ = _loc13_ - __ptr_param1_extra_key__;
a[_tmp_] = _loc19_;
_loc13_ = -1 + _loc13_;
if(_loc13_ == 0xFFFFFFF0)
{
break loop6;
}
}
}
else
{
continue;
}
}
break loop6;
}
}
}
}
}
if(_loc21_ != 0)
{
__ESP__ = 16 - __ESP__;
a[__ESP__] = _loc21_;
ESP = __ESP__;
F___unnamed_57_possibly_free_or_destructor();
__ESP__ = 16 + __ESP__;
}
if(_loc17_ != 0)
{
__ESP__ = 16 - __ESP__;
a[__ESP__] = _loc17_;
ESP = __ESP__;
F___unnamed_57_possibly_free_or_destructor();
__ESP__ = 16 + __ESP__;
}
if(_cur_ptr_ != 0)
{
__ESP__ = 16 - __ESP__;
a[__ESP__] = _cur_ptr_;
ESP = __ESP__;
F___unnamed_57_possibly_free_or_destructor();
__ESP__ = 16 + __ESP__;
}
_cur_ptr_ = 0;
if(__ptr_param2_hardcoded_key__ != 0)
{
__ESP__ = 16 - __ESP__;
a[__ESP__] = __ptr_param2_hardcoded_key__;
ESP = __ESP__;
F___unnamed_57_possibly_free_or_destructor();
__ESP__ = 16 + __ESP__;
_cur_ptr_ = 0;
}
do
{
_tmp_ = _cur_ptr_ << 1;
_tmp_ = _tmp_ - _param1_counter_;
_loc19_ = _cur_ptr_ - __ptr_param1_extra_key__;
_loc19_ = a[_loc19_]
var _loc5_ = int(_loc19_ >>> 4);
_loc5_ = _loc5_ + ___unnamed_69;
_loc5_ = a[_loc5_]
a[_tmp_] = _loc5_;
_loc19_ = _loc19_ & 15;
_loc19_ = _loc19_ + ___unnamed_69;
_loc19_ = a[_loc19_]
a[_tmp_ + 1] = _loc19_;
_cur_ptr_ = _cur_ptr_ + -1;
}
while(_cur_ptr_ != 0xFFFFFFF0);
a[_param1_counter_ + 32] = 0;
__RET__ = CModule.readString(_param1_counter_, 32);
a[_param1_counter_ + 12] = 0;
a[_param1_counter_ + 8] = 0;
a[_param1_counter_ + 4] = 0;
a[_param1_counter_] = 0;
if(__ptr_param1_extra_key__ != 0)
{
__ESP__ = 16 - __ESP__;
a[__ESP__] = __ptr_param1_extra_key__;
ESP = __ESP__;
F___unnamed_57_possibly_free_or_destructor();
__ESP__ = 16 + __ESP__;
}
if(_param1_counter_ != 0)
{
__ESP__ = 16 - __ESP__;
a[__ESP__] = _param1_counter_;
ESP = __ESP__;
F___unnamed_57_possibly_free_or_destructor();
__ESP__ = 16 + __ESP__;
}
var __RET_B__ = __RET__;
__ESP__ = __ESP_ORIG__;
ESP = __ESP__;
return __RET_B__;
}
_cur_ptr_ = _loc21_ + 4;
while(true)
{
// determine if one of the bytes in a 4 byte word is zero
_param1_counter_ = a[_cur_ptr_]
_tmp_ = 0xFEFEFEFF + _param1_counter_;
_loc19_ = _param1_counter_ & 0x80808080;
_loc19_ = _loc19_ ^ 0x80808080;
_tmp_ = _loc19_ & _tmp_;
if(_tmp_ != 0)
{
_tmp_ = _param1_counter_ & 255;
if(_tmp_ == 0)
{
_param1_counter_ = __ptr_param1_extra_key__ - _cur_ptr_;
}
else
{
_tmp_ = a[_cur_ptr_ + 1]
if(_tmp_ == 0)
{
_tmp_ = __ptr_param1_extra_key__ - 1;
_param1_counter_ = _cur_ptr_ + _tmp_;
}
else
{
_tmp_ = a[_cur_ptr_ + 2]
if(_tmp_ == 0)
{
_tmp_ = __ptr_param1_extra_key__ - 2;
_param1_counter_ = _cur_ptr_ + _tmp_;
}
else
{
_tmp_ = a[_cur_ptr_ + 3]
if(_tmp_ == 0)
{
_tmp_ = __ptr_param1_extra_key__ - 3;
_param1_counter_ = _cur_ptr_ + _tmp_;
}
else
{
continue;
}
}
}
}
goto(addr241);
}
}
}
}
@denysvitali
Copy link

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment