某安卓平台arm cpu核心的so文件通过ida插件转换的结果
大老
博客:http://blog.sina.com.cn/dalao
网站: http://www.40440.cn
qq:79234668
201307
以下是转换结果
#include <defs.h>
//-------------------------------------------------------------------------
// Function declarations
// int __fastcall operator new[](_DWORD); weak
int __fastcall _JNIEnv::NewString(int a1);
int __fastcall _JNIEnv::NewStringUTF(int a1, int a2);
int __fastcall _JNIEnv::ReleaseStringChars(int a1);
int __fastcall MD5Init(int result);
int __fastcall MD5Update(int a1, int a2, unsigned int a3);
int __fastcall _JNIEnv::GetStringChars(int a1);
int __fastcall vMD5CryptStr(int a1, unsigned int a2, int a3);
// void __cdecl operator delete[](void *); idb
int __fastcall MD5Final(int a1, int a2);
int __fastcall _JNIEnv::GetStringLength(int a1, int a2);
signed int __fastcall encrypt_1c(int a1, int a2, unsigned int a3);
int __fastcall decrypt_1c(int a1);
int __fastcall Java_com_aspire_mm_login_Encrypt_encrypt_1c(int a1, int a2, int a3);
int __fastcall Java_com_aspire_mm_login_Encrypt_decrypt_1c(int a1);
int __fastcall _JNIEnv::NewString(int a1);
int __fastcall _JNIEnv::GetStringLength(int a1, int a2);
int __fastcall _JNIEnv::GetStringChars(int a1);
int __fastcall _JNIEnv::ReleaseStringChars(int a1);
int __fastcall _JNIEnv::NewStringUTF(int a1, int a2);
int __fastcall MD5Init(int result);
int __fastcall MD5Update(int a1, int a2, unsigned int a3);
int __fastcall MD5Final(int a1, int a2);
int __fastcall vMD5Crypt(int a1, unsigned int a2, int a3);
int __fastcall vMD5CryptStr(int a1, unsigned int a2, int a3);
int __fastcall MD5Transform(int a1, int a2);
int __fastcall Encode(int result, int a2, unsigned int a3);
int __fastcall Decode(int result, int a2, unsigned int a3);
int __fastcall MD5_memcpy(int result, int a2, unsigned int a3);
int __fastcall MD5_memset(int result, char a2, unsigned int a3);
//-------------------------------------------------------------------------
// Data declarations
_UNKNOWN unk_28E4; // weak
char _data_start[64] =
{
'€',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0',
'\0'
}; // weak
//----- (00000618) --------------------------------------------------------
int __fastcall _JNIEnv::NewString(int a1)
{
return _JNIEnv::NewString(a1);
}
//----- (00000624) --------------------------------------------------------
int __fastcall _JNIEnv::NewStringUTF(int a1, int a2)
{
return _JNIEnv::NewStringUTF(a1, a2);
}
//----- (00000630) --------------------------------------------------------
int __fastcall _JNIEnv::ReleaseStringChars(int a1)
{
return _JNIEnv::ReleaseStringChars(a1);
}
//----- (0000063C) --------------------------------------------------------
int __fastcall MD5Init(int result)
{
return MD5Init(result);
}
//----- (00000648) --------------------------------------------------------
int __fastcall MD5Update(int a1, int a2, unsigned int a3)
{
return MD5Update(a1, a2, a3);
}
//----- (00000654) --------------------------------------------------------
int __fastcall _JNIEnv::GetStringChars(int a1)
{
return _JNIEnv::GetStringChars(a1);
}
//----- (00000660) --------------------------------------------------------
int __fastcall vMD5CryptStr(int a1, unsigned int a2, int a3)
{
return vMD5CryptStr(a1, a2, a3);
}
//----- (00000678) --------------------------------------------------------
int __fastcall MD5Final(int a1, int a2)
{
return MD5Final(a1, a2);
}
//----- (00000684) --------------------------------------------------------
int __fastcall _JNIEnv::GetStringLength(int a1, int a2)
{
return _JNIEnv::GetStringLength(a1, a2);
}
//----- (00000690) --------------------------------------------------------
signed int __fastcall encrypt_1c(int a1, int a2, unsigned int a3)
{
unsigned int v4; // [sp+4h] [bp-48h]@1
int v5; // [sp+8h] [bp-44h]@1
int v6; // [sp+Ch] [bp-40h]@1
char v7; // [sp+14h] [bp-38h]@4
int v8; // [sp+38h] [bp-14h]@1
void *v9; // [sp+3Ch] [bp-10h]@1
int i; // [sp+40h] [bp-Ch]@1
int j; // [sp+44h] [bp-8h]@6
char v12[4]; // [sp+48h] [bp-4h]@7
v6 = a1;
v5 = a2;
v4 = a3;
v8 = 32;
v9 = (void *)operator new[](a3);
for ( i = 0; i < (signed int)v4; ++i )
*((_BYTE *)v9 + i) = *(_WORD *)(v5 + 2 * i);
vMD5CryptStr((int)v9, v4, (int)&v7);
if ( v9 )
operator delete[](v9);
*(_DWORD *)v6 = operator new[](66);
for ( j = 0; j <= 31; ++j )
*(_WORD *)(*(_DWORD *)v6 + 2 * j) = (unsigned __int8)v12[j - 52];
*(_WORD *)(*(_DWORD *)v6 + 64) = 0;
return 32;
}
// 60C: using guessed type int __fastcall operator new[](_DWORD);
// 690: using guessed type char var_4[4];
//----- (000007EC) --------------------------------------------------------
int __fastcall decrypt_1c(int a1)
{
*(_DWORD *)a1 = 0;
return 0;
}
//----- (00000824) --------------------------------------------------------
int __fastcall Java_com_aspire_mm_login_Encrypt_encrypt_1c(int a1, int a2, int a3)
{
int v3; // ST0C_4@1
int v4; // ST04_4@1
void *v6; // [sp+10h] [bp-1Ch]@1
char v7; // [sp+17h] [bp-15h]@1
int v8; // [sp+18h] [bp-14h]@1
int v9; // [sp+1Ch] [bp-10h]@1
int v10; // [sp+20h] [bp-Ch]@1
int v11; // [sp+24h] [bp-8h]@1
v3 = a1;
v4 = a3;
v7 = 0;
v8 = _JNIEnv::GetStringChars(a1);
v9 = _JNIEnv::GetStringLength(v3, v4);
v10 = encrypt_1c((int)&v6, v8, v9);
_JNIEnv::ReleaseStringChars(v3);
v11 = _JNIEnv::NewString(v3);
if ( v6 )
operator delete[](v6);
return v11;
}
//----- (000008E4) --------------------------------------------------------
int __fastcall Java_com_aspire_mm_login_Encrypt_decrypt_1c(int a1)
{
return _JNIEnv::NewStringUTF(a1, (int)&unk_28E4);
}
//----- (00000924) --------------------------------------------------------
int __fastcall _JNIEnv::NewString(int a1)
{
return (*(int (**)(void))(*(_DWORD *)a1 + 652))();
}
//----- (00000968) --------------------------------------------------------
int __fastcall _JNIEnv::GetStringLength(int a1, int a2)
{
return (*(int (__cdecl **)(int, int))(*(_DWORD *)a1 + 656))(a1, a2);
}
//----- (000009A4) --------------------------------------------------------
int __fastcall _JNIEnv::GetStringChars(int a1)
{
return (*(int (**)(void))(*(_DWORD *)a1 + 660))();
}
//----- (000009E8) --------------------------------------------------------
int __fastcall _JNIEnv::ReleaseStringChars(int a1)
{
return (*(int (**)(void))(*(_DWORD *)a1 + 664))();
}
//----- (00000A24) --------------------------------------------------------
int __fastcall _JNIEnv::NewStringUTF(int a1, int a2)
{
return (*(int (__cdecl **)(int, int))(*(_DWORD *)a1 + 668))(a1, a2);
}
//----- (00000A60) --------------------------------------------------------
int __fastcall MD5Init(int result)
{
int *v1; // [sp+14h] [bp+0h]@1
v1 = (int *)&v1;
*(_DWORD *)(result + 20) = 0;
*(_DWORD *)(result + 16) = *(_DWORD *)(result + 20);
*(_DWORD *)result = 1732584193;
*(_DWORD *)(result + 4) = -271733879;
*(_DWORD *)(result + 8) = -1732584194;
*(_DWORD *)(result + 12) = 271733878;
return result;
}
//----- (00000AD8) --------------------------------------------------------
int __fastcall MD5Update(int a1, int a2, unsigned int a3)
{
unsigned int v4; // [sp+4h] [bp-20h]@1
int v5; // [sp+8h] [bp-1Ch]@1
int v6; // [sp+Ch] [bp-18h]@1
int i; // [sp+14h] [bp-10h]@4
int v8; // [sp+18h] [bp-Ch]@1
v6 = a1;
v5 = a2;
v4 = a3;
v8 = (*(_DWORD *)(a1 + 16) >> 3) & 0x3F;
*(_DWORD *)(a1 + 16) += 8 * a3;
if ( *(_DWORD *)(a1 + 16) < 8 * a3 )
++*(_DWORD *)(a1 + 20);
*(_DWORD *)(a1 + 20) += a3 >> 29;
if ( a3 < 64 - v8 )
{
i = 0;
}
else
{
MD5_memcpy(a1 + v8 + 24, a2, 64 - v8);
MD5Transform(v6, v6 + 24);
for ( i = 64 - v8; i + 63 < v4; i += 64 )
MD5Transform(v6, v5 + i);
v8 = 0;
}
return MD5_memcpy(v6 + v8 + 24, v5 + i, v4 - i);
}
//----- (00000C78) --------------------------------------------------------
int __fastcall MD5Final(int a1, int a2)
{
unsigned int v2; // r3@2
int v4; // [sp+0h] [bp-1Ch]@1
int v5; // [sp+4h] [bp-18h]@1
char v6; // [sp+8h] [bp-14h]@1
int v7; // [sp+10h] [bp-Ch]@1
unsigned int v8; // [sp+14h] [bp-8h]@4
v5 = a1;
v4 = a2;
Encode((int)&v6, a2 + 16, 8u);
v7 = (*(_DWORD *)(v4 + 16) >> 3) & 0x3F;
if ( (unsigned int)v7 > 0x37 )
v2 = 120 - v7;
else
v2 = 56 - v7;
v8 = v2;
MD5Update(v4, (int)_data_start, v2);
MD5Update(v4, (int)&v6, 8u);
Encode(v5, v4, 0x10u);
return MD5_memset(v4, 0, 0x58u);
}
//----- (00000D38) --------------------------------------------------------
int __fastcall vMD5Crypt(int a1, unsigned int a2, int a3)
{
int v3; // ST0C_4@1
unsigned int v4; // ST08_4@1
int v5; // ST04_4@1
char v7; // [sp+10h] [bp-5Ch]@1
v3 = a1;
v4 = a2;
v5 = a3;
MD5Init((int)&v7);
MD5Update((int)&v7, v3, v4);
return MD5Final(v5, (int)&v7);
}
//----- (00000D8C) --------------------------------------------------------
int __fastcall vMD5CryptStr(int a1, unsigned int a2, int a3)
{
int v3; // ST0C_4@1
unsigned int v4; // ST08_4@1
int result; // r0@1
char v6; // [sp+10h] [bp-8Ch]@1
int v7; // [sp+68h] [bp-34h]@1
int v8; // [sp+6Ch] [bp-30h]@1
int v9; // [sp+70h] [bp-2Ch]@1
int v10; // [sp+74h] [bp-28h]@1
int v11; // [sp+78h] [bp-24h]@1
int v12; // [sp+7Ch] [bp-20h]@1
int v13; // [sp+80h] [bp-1Ch]@1
int v14; // [sp+84h] [bp-18h]@1
char v15; // [sp+88h] [bp-14h]@1
int v16; // [sp+8Ch] [bp-10h]@1
int i; // [sp+90h] [bp-Ch]@1
int v18; // [sp+94h] [bp-8h]@1
char v19[4]; // [sp+98h] [bp-4h]@2
v3 = a1;
v4 = a2;
v16 = (int)"0123456789ABCDEF";
i = 0;
v7 = 0;
v8 = 0;
v9 = 0;
v10 = 0;
v11 = 0;
v12 = 0;
v13 = 0;
v14 = 0;
v15 = 0;
v18 = a3;
MD5Init((int)&v6);
MD5Update((int)&v6, v3, v4);
result = MD5Final((int)&v7, (int)&v6);
for ( i = 0; i <= 15; ++i )
{
*(_BYTE *)v18++ = *(_BYTE *)(v16 + ((signed int)(unsigned __int8)v19[i - 48] >> 4));
*(_BYTE *)v18++ = *(_BYTE *)(v16 + (v19[i - 48] & 0xF));
}
*(_BYTE *)v18 = 0;
return result;
}
// D8C: using guessed type char var_4[4];
//----- (00000F28) --------------------------------------------------------
int __fastcall MD5Transform(int a1, int a2)
{
int v2; // ST04_4@1
int v3; // off@1
int v4; // off@1
int v5; // off@1
int v6; // off@1
int v7; // off@1
int v8; // off@1
int v9; // off@1
int v10; // off@1
int v11; // off@1
int v12; // off@1
int v13; // off@1
int v14; // off@1
int v15; // off@1
int v16; // off@1
int v17; // off@1
int v18; // off@1
int v19; // off@1
int v20; // off@1
int v21; // off@1
int v22; // off@1
int v23; // off@1
int v24; // off@1
int v25; // off@1
int v26; // off@1
int v27; // off@1
int v28; // off@1
int v29; // off@1
int v30; // off@1
int v31; // off@1
int v32; // off@1
int v33; // off@1
int v34; // off@1
int v35; // off@1
int v36; // off@1
int v37; // off@1
int v38; // off@1
int v39; // off@1
int v40; // off@1
int v41; // off@1
int v42; // off@1
int v43; // off@1
int v44; // off@1
int v45; // off@1
int v46; // off@1
int v47; // off@1
int v48; // off@1
int v49; // off@1
int v50; // off@1
int v51; // off@1
int v52; // off@1
int v53; // off@1
int v54; // off@1
int v55; // off@1
int v56; // off@1
int v57; // off@1
int v58; // off@1
int v59; // off@1
int v60; // off@1
int v61; // off@1
int v62; // off@1
int v63; // off@1
int v64; // off@1
int v65; // off@1
int v66; // off@1
int v68; // [sp+8h] [bp-54h]@1
int v69; // [sp+Ch] [bp-50h]@1
int v70; // [sp+10h] [bp-4Ch]@1
int v71; // [sp+14h] [bp-48h]@1
int v72; // [sp+18h] [bp-44h]@1
int v73; // [sp+1Ch] [bp-40h]@1
int v74; // [sp+20h] [bp-3Ch]@1
int v75; // [sp+24h] [bp-38h]@1
int v76; // [sp+28h] [bp-34h]@1
int v77; // [sp+2Ch] [bp-30h]@1
int v78; // [sp+30h] [bp-2Ch]@1
int v79; // [sp+34h] [bp-28h]@1
int v80; // [sp+38h] [bp-24h]@1
int v81; // [sp+3Ch] [bp-20h]@1
int v82; // [sp+40h] [bp-1Ch]@1
int v83; // [sp+44h] [bp-18h]@1
int v84; // [sp+48h] [bp-14h]@1
int v85; // [sp+4Ch] [bp-10h]@1
int v86; // [sp+50h] [bp-Ch]@1
int v87; // [sp+54h] [bp-8h]@1
v2 = a1;
v84 = *(_DWORD *)a1;
v85 = *(_DWORD *)(a1 + 4);
v86 = *(_DWORD *)(a1 + 8);
v87 = *(_DWORD *)(a1 + 12);
Decode((int)&v68, a2, 0x40u);
v3 = __ROR4__((v85 & v86 | ~v85 & v87) + v68 + v84 - 680876936, 25);
v84 = v3 + v85;
v4 = __ROR4__(((v3 + v85) & v85 | ~(v3 + v85) & v86) + v69 + v87 - 389564586, 20);
v87 = v4 + v84;
v5 = __ROR4__(((v4 + v84) & v84 | ~(v4 + v84) & v85) + v70 + v86 + 606105819, 15);
v86 = v5 + v87;
v6 = __ROR4__(((v5 + v87) & v87 | ~(v5 + v87) & v84) + v71 + v85 - 1044525330, 10);
v85 = v6 + v86;
v7 = __ROR4__(((v6 + v86) & v86 | ~(v6 + v86) & v87) + v72 + v84 - 176418897, 25);
v84 = v7 + v85;
v8 = __ROR4__(((v7 + v85) & v85 | ~(v7 + v85) & v86) + v73 + v87 + 1200080426, 20);
v87 = v8 + v84;
v9 = __ROR4__(((v8 + v84) & v84 | ~(v8 + v84) & v85) + v74 + v86 - 1473231341, 15);
v86 = v9 + v87;
v10 = __ROR4__(((v9 + v87) & v87 | ~(v9 + v87) & v84) + v75 + v85 - 45705983, 10);
v85 = v10 + v86;
v11 = __ROR4__(((v10 + v86) & v86 | ~(v10 + v86) & v87) + v76 + v84 + 1770035416, 25);
v84 = v11 + v85;
v12 = __ROR4__(((v11 + v85) & v85 | ~(v11 + v85) & v86) + v77 + v87 - 1958414417, 20);
v87 = v12 + v84;
v13 = __ROR4__(((v12 + v84) & v84 | ~(v12 + v84) & v85) + v78 + v86 - 42063, 15);
v86 = v13 + v87;
v14 = __ROR4__(((v13 + v87) & v87 | ~(v13 + v87) & v84) + v79 + v85 - 1990404162, 10);
v85 = v14 + v86;
v15 = __ROR4__(((v14 + v86) & v86 | ~(v14 + v86) & v87) + v80 + v84 + 1804603682, 25);
v84 = v15 + v85;
v16 = __ROR4__(((v15 + v85) & v85 | ~(v15 + v85) & v86) + v81 + v87 - 40341101, 20);
v87 = v16 + v84;
v17 = __ROR4__(((v16 + v84) & v84 | ~(v16 + v84) & v85) + v82 + v86 - 1502002290, 15);
v86 = v17 + v87;
v18 = __ROR4__(((v17 + v87) & v87 | ~(v17 + v87) & v84) + v83 + v85 + 1236535329, 10);
v85 = v18 + v86;
v19 = __ROR4__(((v18 + v86) & v87 | ~v87 & v86) + v69 + v84 - 165796510, 27);
v84 = v19 + v85;
v20 = __ROR4__(((v19 + v85) & v86 | ~v86 & v85) + v74 + v87 - 1069501632, 23);
v87 = v20 + v84;
v21 = __ROR4__(((v20 + v84) & v85 | ~v85 & v84) + v79 + v86 + 643717713, 18);
v86 = v21 + v87;
v22 = __ROR4__(((v21 + v87) & v84 | ~v84 & v87) + v68 + v85 - 373897302, 12);
v85 = v22 + v86;
v23 = __ROR4__(((v22 + v86) & v87 | ~v87 & v86) + v73 + v84 - 701558691, 27);
v84 = v23 + v85;
v24 = __ROR4__(((v23 + v85) & v86 | ~v86 & v85) + v78 + v87 + 38016083, 23);
v87 = v24 + v84;
v25 = __ROR4__(((v24 + v84) & v85 | ~v85 & v84) + v83 + v86 - 660478335, 18);
v86 = v25 + v87;
v26 = __ROR4__(((v25 + v87) & v84 | ~v84 & v87) + v72 + v85 - 405537848, 12);
v85 = v26 + v86;
v27 = __ROR4__(((v26 + v86) & v87 | ~v87 & v86) + v77 + v84 + 568446438, 27);
v84 = v27 + v85;
v28 = __ROR4__(((v27 + v85) & v86 | ~v86 & v85) + v82 + v87 - 1019803690, 23);
v87 = v28 + v84;
v29 = __ROR4__(((v28 + v84) & v85 | ~v85 & v84) + v71 + v86 - 187363961, 18);
v86 = v29 + v87;
v30 = __ROR4__(((v29 + v87) & v84 | ~v84 & v87) + v76 + v85 + 1163531501, 12);
v85 = v30 + v86;
v31 = __ROR4__(((v30 + v86) & v87 | ~v87 & v86) + v81 + v84 - 1444681467, 27);
v84 = v31 + v85;
v32 = __ROR4__(((v31 + v85) & v86 | ~v86 & v85) + v70 + v87 - 51403784, 23);
v87 = v32 + v84;
v33 = __ROR4__(((v32 + v84) & v85 | ~v85 & v84) + v75 + v86 + 1735328473, 18);
v86 = v33 + v87;
v34 = __ROR4__(((v33 + v87) & v84 | ~v84 & v87) + v80 + v85 - 1926607734, 12);
v85 = v34 + v86;
v35 = __ROR4__(((v34 + v86) ^ v86 ^ v87) + v73 + v84 - 378558, 28);
v84 = v35 + v85;
v36 = __ROR4__(((v35 + v85) ^ v85 ^ v86) + v76 + v87 - 2022574463, 21);
v87 = v36 + v84;
v37 = __ROR4__(((v36 + v84) ^ v84 ^ v85) + v79 + v86 + 1839030562, 16);
v86 = v37 + v87;
v38 = __ROR4__(((v37 + v87) ^ v87 ^ v84) + v82 + v85 - 35309556, 9);
v85 = v38 + v86;
v39 = __ROR4__(((v38 + v86) ^ v86 ^ v87) + v69 + v84 - 1530992060, 28);
v84 = v39 + v85;
v40 = __ROR4__(((v39 + v85) ^ v85 ^ v86) + v72 + v87 + 1272893353, 21);
v87 = v40 + v84;
v41 = __ROR4__(((v40 + v84) ^ v84 ^ v85) + v75 + v86 - 155497632, 16);
v86 = v41 + v87;
v42 = __ROR4__(((v41 + v87) ^ v87 ^ v84) + v78 + v85 - 1094730640, 9);
v85 = v42 + v86;
v43 = __ROR4__(((v42 + v86) ^ v86 ^ v87) + v81 + v84 + 681279174, 28);
v84 = v43 + v85;
v44 = __ROR4__(((v43 + v85) ^ v85 ^ v86) + v68 + v87 - 358537222, 21);
v87 = v44 + v84;
v45 = __ROR4__(((v44 + v84) ^ v84 ^ v85) + v71 + v86 - 722521979, 16);
v86 = v45 + v87;
v46 = __ROR4__(((v45 + v87) ^ v87 ^ v84) + v74 + v85 + 76029189, 9);
v85 = v46 + v86;
v47 = __ROR4__(((v46 + v86) ^ v86 ^ v87) + v77 + v84 - 640364487, 28);
v84 = v47 + v85;
v48 = __ROR4__(((v47 + v85) ^ v85 ^ v86) + v80 + v87 - 421815835, 21);
v87 = v48 + v84;
v49 = __ROR4__(((v48 + v84) ^ v84 ^ v85) + v83 + v86 + 530742520, 16);
v86 = v49 + v87;
v50 = __ROR4__(((v49 + v87) ^ v87 ^ v84) + v70 + v85 - 995338651, 9);
v85 = v50 + v86;
v51 = __ROR4__(((~v87 | (v50 + v86)) ^ v86) + v68 + v84 - 198630844, 26);
v84 = v51 + v85;
v52 = __ROR4__(((~v86 | (v51 + v85)) ^ v85) + v75 + v87 + 1126891415, 22);
v87 = v52 + v84;
v53 = __ROR4__(((~v85 | (v52 + v84)) ^ v84) + v82 + v86 - 1416354905, 17);
v86 = v53 + v87;
v54 = __ROR4__(((~v84 | (v53 + v87)) ^ v87) + v73 + v85 - 57434055, 11);
v85 = v54 + v86;
v55 = __ROR4__(((~v87 | (v54 + v86)) ^ v86) + v80 + v84 + 1700485571, 26);
v84 = v55 + v85;
v56 = __ROR4__(((~v86 | (v55 + v85)) ^ v85) + v71 + v87 - 1894986606, 22);
v87 = v56 + v84;
v57 = __ROR4__(((~v85 | (v56 + v84)) ^ v84) + v78 + v86 - 1051523, 17);
v86 = v57 + v87;
v58 = __ROR4__(((~v84 | (v57 + v87)) ^ v87) + v69 + v85 - 2054922799, 11);
v85 = v58 + v86;
v59 = __ROR4__(((~v87 | (v58 + v86)) ^ v86) + v76 + v84 + 1873313359, 26);
v84 = v59 + v85;
v60 = __ROR4__(((~v86 | (v59 + v85)) ^ v85) + v83 + v87 - 30611744, 22);
v87 = v60 + v84;
v61 = __ROR4__(((~v85 | (v60 + v84)) ^ v84) + v74 + v86 - 1560198380, 17);
v86 = v61 + v87;
v62 = __ROR4__(((~v84 | (v61 + v87)) ^ v87) + v81 + v85 + 1309151649, 11);
v85 = v62 + v86;
v63 = __ROR4__(((~v87 | (v62 + v86)) ^ v86) + v72 + v84 - 145523070, 26);
v84 = v63 + v85;
v64 = __ROR4__(((~v86 | (v63 + v85)) ^ v85) + v79 + v87 - 1120210379, 22);
v87 = v64 + v84;
v65 = __ROR4__(((~v85 | (v64 + v84)) ^ v84) + v70 + v86 + 718787259, 17);
v86 = v65 + v87;
v66 = __ROR4__(((~v84 | (v65 + v87)) ^ v87) + v77 + v85 - 343485551, 11);
v85 = v66 + v86;
*(_DWORD *)v2 += v84;
*(_DWORD *)(v2 + 4) += v85;
*(_DWORD *)(v2 + 8) += v86;
*(_DWORD *)(v2 + 12) += v87;
return MD5_memset((int)&v68, 0, 0x40u);
}
//----- (000025E0) --------------------------------------------------------
int __fastcall Encode(int result, int a2, unsigned int a3)
{
int v3; // [sp+28h] [bp-Ch]@1
unsigned int i; // [sp+2Ch] [bp-8h]@1
int *v5; // [sp+34h] [bp+0h]@1
v5 = (int *)&v5;
v3 = 0;
for ( i = 0; i < a3; i += 4 )
{
*(_BYTE *)(result + i) = *(_DWORD *)(a2 + 4 * v3);
*(_BYTE *)(result + i + 1) = *(_WORD *)(a2 + 4 * v3) >> 8;
*(_BYTE *)(result + i + 2) = *(_DWORD *)(a2 + 4 * v3) >> 16;
*(_BYTE *)(result + i + 3) = *(_DWORD *)(a2 + 4 * v3++) >> 24;
}
return result;
}
//----- (00002708) --------------------------------------------------------
int __fastcall Decode(int result, int a2, unsigned int a3)
{
int v3; // [sp+24h] [bp-10h]@1
int v4; // [sp+28h] [bp-Ch]@1
unsigned int i; // [sp+2Ch] [bp-8h]@1
int *v6; // [sp+34h] [bp+0h]@1
v6 = (int *)&v6;
v3 = result;
v4 = 0;
for ( i = 0; i < a3; i += 4 )
{
result = a2;
*(_DWORD *)(v3 + 4 * v4++) = *(_BYTE *)(a2 + i) | (*(_BYTE *)(a2 + i + 1) << 8) | (*(_BYTE *)(a2 + i + 2) << 16) | (*(_BYTE *)(a2 + i + 3) << 24);
}
return result;
}
//----- (000027F4) --------------------------------------------------------
int __fastcall MD5_memcpy(int result, int a2, unsigned int a3)
{
unsigned int i; // [sp+2Ch] [bp-8h]@1
int *v4; // [sp+34h] [bp+0h]@1
v4 = (int *)&v4;
for ( i = 0; i < a3; ++i )
*(_BYTE *)(result + i) = *(_BYTE *)(a2 + i);
return result;
}
//----- (00002870) --------------------------------------------------------
int __fastcall MD5_memset(int result, char a2, unsigned int a3)
{
unsigned int i; // [sp+2Ch] [bp-8h]@1
int *v4; // [sp+34h] [bp+0h]@1
v4 = (int *)&v4;
for ( i = 0; i < a3; ++i )
*(_BYTE *)(result + i) = a2;
return result;
}
大老
qq:79234668
201307