某安卓平台arm cpu核心的so文件转换结果

某安卓平台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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值