2009/10/15
Flash Lite で MD5 を作ってみた。
残念ながら FlashLite2.0 機種上の FlashLite1.1 でしか動きません。
ケータイ SWF からリクエストする際の内容を証明できるようにしたかったんですが、
メモリは食わないものの、スクリプトだけで SWF が 50KB 超えます。
逆にFL2.x以降ならシフトローテート、関数、配列、論理演算を使って短く記述できるので、
SHA1とかも可能と思う。FlashLite2.0以降であれば、 OpenSocial なリクエストもできそう。
Fla はここに http://faces.jp/files/ao/20091015_md5/fl1md5.zip
com.adobe.crypto.MD5 を参考にしたんですが、中身は AND XOR など論理演算が中心で
アセンブラで組みこめそうな内容でした
//md5Init.as
len = length(str);
s = str add mbChr(0x80)
blocks = ''
blocksMask = ''
for(i = 0; i <= len; i += 4 ) {
for (j = 4; j>0; j-- ) {
c = subString(s, i + j, 1)
if (c eq '') {
blocks = blocks add '.'
blocksMask = blocksMask add '0'
}else {
blocks = blocks add c
blocksMask = blocksMask add '1'
}
}
}
i = (int((len * 8 + 0x40) / 0x0200) * 0x10 + 0x0e) * 4
while(length(blocks) < i) {
blocks = blocks add '.';
blocksMask = blocksMask add '0'
}
for(i = 0x01000000; i >=1; i /= 0x0100 ) {
byte = int((len*8) / i) % 0x0100;
if (byte == 0) {
blocks = blocks add '.';
blocksMask = blocksMask add '0'
}else {
blocks = blocks add mbChr(byte);
blocksMask = blocksMask add '1'
}
}
a = 1732584193;
b = -271733879;
c = -1732584194;
d = 271733878;
s = 4294967296;//0x100000000
n = 0x80000000;
p = 0;
//md5Encode.as
for (j = 0; j < 16; j++ ) {
name = 'x' add subString('0123456789ABCDEF',j+1,1)
eval(name) = 0;
for (k = 0x01000000; k >= 1; k /= 0x0100 ) {
if (subString(blocksMask, p+1, 1) > 0) {
eval(name) += ord(subString(blocks, p+1, 1)) * k
}
p++
}
}
aa = a;
bb = b;
cc = c;
dd = d;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(c/i)%2))||((!(int(b/i)%2))&&(int(d/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x0-680876936; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x2000000)*0x80)+int(((v<0)?v+s :v)/0x2000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(b/i)%2))||((!(int(a/i)%2))&&(int(c/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x1-389564586; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x100000)*0x1000)+int(((v<0)?v+s :v)/0x100000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(a/i)%2))||((!(int(d/i)%2))&&(int(b/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x2+606105819; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x8000)*0x20000)+int(((v<0)?v+s :v)/0x8000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(d/i)%2))||((!(int(c/i)%2))&&(int(a/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x3-1044525330; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x400)*0x400000)+int(((v<0)?v+s :v)/0x400)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(c/i)%2))||((!(int(b/i)%2))&&(int(d/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x4-176418897; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x2000000)*0x80)+int(((v<0)?v+s :v)/0x2000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(b/i)%2))||((!(int(a/i)%2))&&(int(c/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x5+1200080426; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x100000)*0x1000)+int(((v<0)?v+s :v)/0x100000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(a/i)%2))||((!(int(d/i)%2))&&(int(b/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x6-1473231341; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x8000)*0x20000)+int(((v<0)?v+s :v)/0x8000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(d/i)%2))||((!(int(c/i)%2))&&(int(a/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x7-45705983; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x400)*0x400000)+int(((v<0)?v+s :v)/0x400)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(c/i)%2))||((!(int(b/i)%2))&&(int(d/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x8+1770035416; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x2000000)*0x80)+int(((v<0)?v+s :v)/0x2000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(b/i)%2))||((!(int(a/i)%2))&&(int(c/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x9-1958414417; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x100000)*0x1000)+int(((v<0)?v+s :v)/0x100000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(a/i)%2))||((!(int(d/i)%2))&&(int(b/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xA-42063; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x8000)*0x20000)+int(((v<0)?v+s :v)/0x8000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(d/i)%2))||((!(int(c/i)%2))&&(int(a/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+xB-1990404162; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x400)*0x400000)+int(((v<0)?v+s :v)/0x400)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(c/i)%2))||((!(int(b/i)%2))&&(int(d/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+xC+1804603682; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x2000000)*0x80)+int(((v<0)?v+s :v)/0x2000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(b/i)%2))||((!(int(a/i)%2))&&(int(c/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+xD-40341101; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x100000)*0x1000)+int(((v<0)?v+s :v)/0x100000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(a/i)%2))||((!(int(d/i)%2))&&(int(b/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xE-1502002290; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x8000)*0x20000)+int(((v<0)?v+s :v)/0x8000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(d/i)%2))||((!(int(c/i)%2))&&(int(a/i)%2)))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+xF+1236535329; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x400)*0x400000)+int(((v<0)?v+s :v)/0x400)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(d/i)%2))||((int(c/i)%2)&&(!(int(d/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x1-165796510; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x8000000)*0x20)+int(((v<0)?v+s :v)/0x8000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(c/i)%2))||((int(b/i)%2)&&(!(int(c/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x6-1069501632; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x800000)*0x200)+int(((v<0)?v+s :v)/0x800000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(b/i)%2))||((int(a/i)%2)&&(!(int(b/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xB+643717713; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x40000)*0x4000)+int(((v<0)?v+s :v)/0x40000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(a/i)%2))||((int(d/i)%2)&&(!(int(a/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x0-373897302; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x1000)*0x100000)+int(((v<0)?v+s :v)/0x1000)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(d/i)%2))||((int(c/i)%2)&&(!(int(d/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x5-701558691; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x8000000)*0x20)+int(((v<0)?v+s :v)/0x8000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(c/i)%2))||((int(b/i)%2)&&(!(int(c/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+xA+38016083; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x800000)*0x200)+int(((v<0)?v+s :v)/0x800000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(b/i)%2))||((int(a/i)%2)&&(!(int(b/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xF-660478335; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x40000)*0x4000)+int(((v<0)?v+s :v)/0x40000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(a/i)%2))||((int(d/i)%2)&&(!(int(a/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x4-405537848; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x1000)*0x100000)+int(((v<0)?v+s :v)/0x1000)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(d/i)%2))||((int(c/i)%2)&&(!(int(d/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x9+568446438; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x8000000)*0x20)+int(((v<0)?v+s :v)/0x8000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(c/i)%2))||((int(b/i)%2)&&(!(int(c/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+xE-1019803690; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x800000)*0x200)+int(((v<0)?v+s :v)/0x800000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(b/i)%2))||((int(a/i)%2)&&(!(int(b/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x3-187363961; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x40000)*0x4000)+int(((v<0)?v+s :v)/0x40000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(a/i)%2))||((int(d/i)%2)&&(!(int(a/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x8+1163531501; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x1000)*0x100000)+int(((v<0)?v+s :v)/0x1000)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)&&(int(d/i)%2))||((int(c/i)%2)&&(!(int(d/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+xD-1444681467; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x8000000)*0x20)+int(((v<0)?v+s :v)/0x8000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)&&(int(c/i)%2))||((int(b/i)%2)&&(!(int(c/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x2-51403784; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x800000)*0x200)+int(((v<0)?v+s :v)/0x800000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)&&(int(b/i)%2))||((int(a/i)%2)&&(!(int(b/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x7+1735328473; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x40000)*0x4000)+int(((v<0)?v+s :v)/0x40000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)&&(int(a/i)%2))||((int(d/i)%2)&&(!(int(a/i)%2))))*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+xC-1926607734; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x1000)*0x100000)+int(((v<0)?v+s :v)/0x1000)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(b/i)%2)+(int(c/i)%2))%2)+(int(d/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x5-378558; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x10000000)*0x10)+int(((v<0)?v+s :v)/0x10000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(a/i)%2)+(int(b/i)%2))%2)+(int(c/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x8-2022574463; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x200000)*0x800)+int(((v<0)?v+s :v)/0x200000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(d/i)%2)+(int(a/i)%2))%2)+(int(b/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xB+1839030562; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x10000)*0x10000)+int(((v<0)?v+s :v)/0x10000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(c/i)%2)+(int(d/i)%2))%2)+(int(a/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+xE-35309556; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x200)*0x800000)+int(((v<0)?v+s :v)/0x200)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(b/i)%2)+(int(c/i)%2))%2)+(int(d/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x1-1530992060; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x10000000)*0x10)+int(((v<0)?v+s :v)/0x10000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(a/i)%2)+(int(b/i)%2))%2)+(int(c/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x4+1272893353; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x200000)*0x800)+int(((v<0)?v+s :v)/0x200000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(d/i)%2)+(int(a/i)%2))%2)+(int(b/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x7-155497632; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x10000)*0x10000)+int(((v<0)?v+s :v)/0x10000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(c/i)%2)+(int(d/i)%2))%2)+(int(a/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+xA-1094730640; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x200)*0x800000)+int(((v<0)?v+s :v)/0x200)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(b/i)%2)+(int(c/i)%2))%2)+(int(d/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+xD+681279174; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x10000000)*0x10)+int(((v<0)?v+s :v)/0x10000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(a/i)%2)+(int(b/i)%2))%2)+(int(c/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x0-358537222; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x200000)*0x800)+int(((v<0)?v+s :v)/0x200000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(d/i)%2)+(int(a/i)%2))%2)+(int(b/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x3-722521979; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x10000)*0x10000)+int(((v<0)?v+s :v)/0x10000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(c/i)%2)+(int(d/i)%2))%2)+(int(a/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x6+76029189; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x200)*0x800000)+int(((v<0)?v+s :v)/0x200)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(b/i)%2)+(int(c/i)%2))%2)+(int(d/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x9-640364487; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x10000000)*0x10)+int(((v<0)?v+s :v)/0x10000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(a/i)%2)+(int(b/i)%2))%2)+(int(c/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+xC-421815835; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x200000)*0x800)+int(((v<0)?v+s :v)/0x200000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(d/i)%2)+(int(a/i)%2))%2)+(int(b/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xF+530742520; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x10000)*0x10000)+int(((v<0)?v+s :v)/0x10000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((((int(c/i)%2)+(int(d/i)%2))%2)+(int(a/i)%2))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x2-995338651; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x200)*0x800000)+int(((v<0)?v+s :v)/0x200)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)+((int(b/i)%2)||(!(int(d/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x0-198630844; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x4000000)*0x40)+int(((v<0)?v+s :v)/0x4000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)+((int(a/i)%2)||(!(int(c/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x7+1126891415; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x400000)*0x400)+int(((v<0)?v+s :v)/0x400000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)+((int(d/i)%2)||(!(int(b/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xE-1416354905; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x20000)*0x8000)+int(((v<0)?v+s :v)/0x20000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)+((int(c/i)%2)||(!(int(a/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x5-57434055; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x800)*0x200000)+int(((v<0)?v+s :v)/0x800)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)+((int(b/i)%2)||(!(int(d/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+xC+1700485571; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x4000000)*0x40)+int(((v<0)?v+s :v)/0x4000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)+((int(a/i)%2)||(!(int(c/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+x3-1894986606; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x400000)*0x400)+int(((v<0)?v+s :v)/0x400000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)+((int(d/i)%2)||(!(int(b/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+xA-1051523; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x20000)*0x8000)+int(((v<0)?v+s :v)/0x20000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)+((int(c/i)%2)||(!(int(a/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x1-2054922799; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x800)*0x200000)+int(((v<0)?v+s :v)/0x800)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)+((int(b/i)%2)||(!(int(d/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x8+1873313359; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x4000000)*0x40)+int(((v<0)?v+s :v)/0x4000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)+((int(a/i)%2)||(!(int(c/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+xF-30611744; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x400000)*0x400)+int(((v<0)?v+s :v)/0x400000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)+((int(d/i)%2)||(!(int(b/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x6-1560198380; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x20000)*0x8000)+int(((v<0)?v+s :v)/0x20000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)+((int(c/i)%2)||(!(int(a/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+xD+1309151649; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x800)*0x200000)+int(((v<0)?v+s :v)/0x800)+c; if(b>n)b-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(c/i)%2)+((int(b/i)%2)||(!(int(d/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=a+x4-145523070; if(v<0){v+=s;}else if(v>n){v-=s}; a=((v%0x4000000)*0x40)+int(((v<0)?v+s :v)/0x4000000)+b; if(a>n)a-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(b/i)%2)+((int(a/i)%2)||(!(int(c/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=d+xB-1120210379; if(v<0){v+=s;}else if(v>n){v-=s}; d=((v%0x400000)*0x400)+int(((v<0)?v+s :v)/0x400000)+a; if(d>n)d-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(a/i)%2)+((int(d/i)%2)||(!(int(b/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=c+x2+718787259; if(v<0){v+=s;}else if(v>n){v-=s}; c=((v%0x20000)*0x8000)+int(((v<0)?v+s :v)/0x20000)+d; if(c>n)c-=s;
v=0;for(i=1;i<s;i*=2){v+=(((int(d/i)%2)+((int(c/i)%2)||(!(int(a/i)%2))))%2)*i;}if(v<0){v+=s;}else if(v>n){v-=s}; v+=b+x9-343485551; if(v<0){v+=s;}else if(v>n){v-=s}; b=((v%0x800)*0x200000)+int(((v<0)?v+s :v)/0x800)+c; if(b>n)b-=s;
a += aa;if(a<0){a+=s;}else if(a>n){a-=s};
b += bb;if(b<0){b+=s;}else if(b>n){b-=s};
c += cc;if(c<0){c+=s;}else if(c>n){c-=s};
d += dd;if(d<0){d+=s;}else if(d>n){d-=s};
//md5Hex.as
if(p<length(blocks)){
gotoAndPlay(_currentframe-1)
}else{
hex = ''
for(i = 1; i <s ; i *= 0x100 ) {
hex = hex add subString('0123456789abcdef',(int(a/(i*0x10))%0x10)+1,1)
hex = hex add subString('0123456789abcdef',(int(a/i)%0x10)+1,1)
}
for(i = 1; i <s ; i *= 0x100 ) {
hex = hex add subString('0123456789abcdef',(int(b/(i*0x10))%0x10)+1,1)
hex = hex add subString('0123456789abcdef',(int(b/i)%0x10)+1,1)
}
for(i = 1; i <s ; i *= 0x100 ) {
hex = hex add subString('0123456789abcdef',(int(c/(i*0x10))%0x10)+1,1)
hex = hex add subString('0123456789abcdef',(int(c/i)%0x10)+1,1)
}
for(i = 1; i <s ; i *= 0x100 ) {
hex = hex add subString('0123456789abcdef',(int(d/(i*0x10))%0x10)+1,1)
hex = hex add subString('0123456789abcdef',(int(d/i)%0x10)+1,1)
}
}