-
-
[讨论]看一下这是什么加密算法
-
发表于: 2015-8-14 11:04 3873
-
int __cdecl DecryptData(int pData, int dataLen, int pRandomData, int randomDataLen)
{
int v4; // ebp@0
unsigned __int8 v5; // al@2
char *v6; // esi@2
char v7; // cl@3
signed int v8; // ecx@6
int *v9; // eax@6
int v10; // edx@7
__int16 v11; // cx@8
__int16 v12; // si@8
int v13; // esi@13
int v14; // edi@13
int v15; // ecx@13
int *v16; // eax@13
int v17; // esi@14
int v18; // edx@15
unsigned __int8 v19; // bl@15
bool v20; // zf@15
bool v21; // sf@16
unsigned __int8 v22; // of@16
int result; // eax@17
__int16 v24; // di@18
int v25; // eax@18
__int16 v26; // cx@18
__int16 v27; // si@18
int v28; // ebx@20
int v29; // eax@20
__int16 v30; // bx@20
__int16 v31; // bp@21
__int16 v32; // di@23
__int16 v33; // ax@24
__int16 v34; // cx@24
__int16 v35; // ax@26
unsigned __int16 v36; // di@28
unsigned __int16 v37; // ax@28
int v38; // edx@30
unsigned int v39; // ecx@30
unsigned __int16 v40; // bx@33
unsigned int v41; // ecx@35
int v42; // esi@35
unsigned __int16 v43; // bp@38
unsigned __int16 v44; // di@38
__int16 v45; // cx@38
unsigned __int16 v46; // ax@38
unsigned int v47; // ecx@40
unsigned __int16 v48; // dx@40
int v49; // edx@43
int v50; // edi@43
unsigned __int16 v51; // cx@44
int v52; // ebp@46
int v53; // ecx@48
int v54; // ebx@51
int v55; // ecx@51
__int16 v56; // bx@51
unsigned int v57; // ecx@53
int v58; // esi@53
__int16 v59; // bp@57
__int16 v60; // cx@57
unsigned int v61; // edx@61
int v62; // esi@61
__int16 v63; // ST2C_2@64
__int16 v64; // cx@64
__int16 v65; // ax@64
__int16 v66; // di@67
__int16 v67; // cx@67
signed int v68; // eax@71
int v69; // [sp-Ch] [bp-268h]@4
int v70; // [sp-8h] [bp-264h]@4
int *v71; // [sp-4h] [bp-260h]@4
char *v72; // [sp+10h] [bp-24Ch]@13
__int16 v73; // [sp+10h] [bp-24Ch]@67
int v74; // [sp+14h] [bp-248h]@13
char *v75; // [sp+14h] [bp-248h]@26
signed int v76; // [sp+18h] [bp-244h]@14
int v77; // [sp+18h] [bp-244h]@18
signed int v78; // [sp+1Ch] [bp-240h]@13
unsigned int v79; // [sp+28h] [bp-234h]@1
unsigned int v80; // [sp+28h] [bp-234h]@18
unsigned int v81; // [sp+2Ch] [bp-230h]@46
__int16 v82; // [sp+34h] [bp-228h]@56
_BYTE v83[3]; // [sp+3Ch] [bp-220h]@59
__int16 v84; // [sp+44h] [bp-218h]@59
__int16 v85; // [sp+4Ch] [bp-210h]@51
int v86; // [sp+54h] [bp-208h]@20
int v87; // [sp+58h] [bp-204h]@20
signed int v88; // [sp+60h] [bp-1FCh]@26
int v89; // [sp+64h] [bp-1F8h]@17
int v90; // [sp+68h] [bp-1F4h]@17
int v91; // [sp+6Ch] [bp-1F0h]@18
int v92; // [sp+70h] [bp-1ECh]@18
int v93; // [sp+74h] [bp-1E8h]@4
int v94; // [sp+78h] [bp-1E4h]@6
int v95; // [sp+7Ch] [bp-1E0h]@6
int v96; // [sp+80h] [bp-1DCh]@6
char v97; // [sp+84h] [bp-1D8h]@13
int v98; // [sp+94h] [bp-1C8h]@20
int v99; // [sp+A6h] [bp-1B6h]@18
int v100; // [sp+B8h] [bp-1A4h]@23
int v101; // [sp+CAh] [bp-192h]@18
char v102; // [sp+DAh] [bp-182h]@26
int v103; // [sp+E4h] [bp-178h]@6
int v104; // [sp+F0h] [bp-16Ch]@6
int v105; // [sp+F4h] [bp-168h]@6
int v106; // [sp+F8h] [bp-164h]@6
int v107; // [sp+FCh] [bp-160h]@6
char v108; // [sp+15Ch] [bp-100h]@2
v79 = 8 * ((unsigned int)dataLen >> 3);
if ( pRandomData )
{
v71 = &v93;
v70 = randomDataLen;
v69 = pRandomData;
}
else
{
v5 = 0;
v6 = &v108;
do
{
v7 = v5 ^ (16 * v5 | (v5 >> 4));
++v5;
*v6++ = v7;
}
while ( v5 < 0xFFu );
v71 = &v93;
v70 = 255;
v69 = (int)&v108;
}
MD5Hash16(v69, v70, v71);
v104 = v93;
v105 = v94;
v106 = v95;
v107 = v96;
v8 = 9;
v9 = &v103;
do
{
v10 = v8 + 1;
if ( ((_BYTE)v8 + 1) & 7 )
{
if ( v8 & 7 )
{
v11 = *((_WORD *)v9 + 8) >> 7;
v12 = *((_WORD *)v9 + 7) << 9;
}
else
{
v11 = *((_WORD *)v9 - 1) << 9;
v12 = *(_WORD *)v9 >> 7;
}
}
else
{
v11 = *((_WORD *)v9 + 7) << 9;
v12 = *(_WORD *)v9 >> 7;
}
*((_WORD *)v9 + 14) = v12 ^ v11;
v8 = v10;
v9 = (int *)((char *)v9 + 2);
}
while ( (unsigned int)(v10 - 1) < 0x36 );
v13 = 0;
v14 = (int)&v97;
v15 = 10;
v74 = 0;
v72 = &v97;
v78 = 10;
v16 = &v104;
do
{
v17 = v13 + 12;
v76 = 6;
do
{
v18 = (unsigned __int8)v17;
v16 = (int *)((char *)v16 + 2);
v17 += 11;
v14 += 18;
LOWORD(v4) = (unsigned __int8)byte_540E5C[(unsigned __int8)byte_540E5C[v18]];
v19 = v15;
v15 += 7;
v4 = (unsigned __int8)byte_540E5C[(unsigned __int8)byte_540E5C[v19]] + (v4 << 8);
v20 = v76-- == 1;
*(_WORD *)(v14 - 18) = *((_WORD *)v16 - 1) + v4;
}
while ( !v20 );
v15 = v78 + 3;
v13 = v74 + 1;
v14 = (int)(v72 + 2);
v22 = __OFSUB__(v78 + 3, 34);
v20 = v78 == 31;
v21 = v78 - 31 < 0;
++v74;
v78 += 3;
v72 += 2;
}
while ( (unsigned __int8)(v21 ^ v22) | v20 );
result = v93;
v89 = v93;
v90 = v94;
if ( (signed int)v79 > 0 )
{
v24 = v99;
v25 = pData;
v26 = v99 & 1;
v27 = v101 & 1;
v91 = v99 & 1;
v92 = v101 & 1;
v77 = pData;
v80 = (v79 + 7) >> 3;
while ( 1 )
{
v28 = *(_DWORD *)v25;
v29 = *(_DWORD *)(v25 + 4);
v86 = v28;
v30 = v98 ^ v28;
v87 = v29;
v31 = v26 ? v24 - HIWORD(v86) : HIWORD(v86) - v24;
v32 = v100 ^ v29;
if ( v27 )
{
v33 = v101;
v34 = HIWORD(v87);
}
else
{
v33 = HIWORD(v29);
v34 = v101;
}
v35 = v33 - v34;
v75 = &v102;
v88 = 8;
while ( 1 )
{
v36 = v30 + v32;
v37 = v31 + v35;
if ( v36 && v37 )
{
v38 = v36;
v39 = (v36 * v37 & 0xFFFF) - (v36 * (unsigned int)v37 >> 16);
if ( (signed int)v39 <= 0 )
LOWORD(v39) = v36 * v37 - (v36 * (unsigned int)v37 >> 16) + 1;
}
else
{
v38 = v36;
LOWORD(v39) = 1 - v37 - v36;
}
v40 = v39 ^ v30;
if ( v36 && (_WORD)v39 )
{
v41 = (v38 * (unsigned __int16)v39 & 0xFFFF) - (v38 * (unsigned int)(unsigned __int16)v39 >> 16);
LOWORD(v42) = v41;
if ( (signed int)v41 <= 0 )
LOWORD(v42) = v41 + 1;
}
else
{
v42 = 65537 - (unsigned __int16)v39 - v38;
}
v43 = v42 ^ v31;
v44 = v36 - v40;
v45 = *((_WORD *)v75 + 9);
v46 = *((_WORD *)v75 + 9) ^ (v37 - v43);
if ( v46 && v45 )
{
v47 = (v46 * *((_WORD *)v75 + 9) & 0xFFFF) - (v46 * (unsigned int)*((_WORD *)v75 + 9) >> 16);
v48 = v46 * *((_WORD *)v75 + 9) - (v46 * (unsigned int)*((_WORD *)v75 + 9) >> 16);
if ( (signed int)v47 <= 0 )
v48 = v46 * *((_WORD *)v75 + 9) - (v46 * (unsigned int)*((_WORD *)v75 + 9) >> 16) + 1;
}
else
{
v48 = 1 - v45 - v46;
}
v49 = v48;
v50 = v49 ^ v44;
v51 = v50 & 1 ? v50 - (_WORD)v49 : v50 + (_WORD)v49;
v81 = v51;
LOBYTE(v81) = byte_540F5C[(unsigned __int8)v51];
*(_WORD *)((char *)&v81 + 1) = (unsigned __int8)byte_540F5C[BYTE1(v81)];
v52 = v81 ^ v43;
if ( (_WORD)v52 && (_WORD)v81 )
{
v53 = ((unsigned __int16)v81 * (unsigned __int16)v52 & 0xFFFF)
- ((unsigned __int16)v81 * (unsigned int)(unsigned __int16)v52 >> 16);
if ( v53 <= 0 )
LOWORD(v53) = v81 * (_WORD)v52 - ((unsigned __int16)v81 * (unsigned int)(unsigned __int16)v52 >> 16) + 1;
}
else
{
v53 = 65537 - (unsigned __int16)v52 - (unsigned __int16)v81;
}
v54 = (unsigned __int16)v53 ^ v40;
LOBYTE(v85) = byte_540F5C[(unsigned __int8)v54];
HIBYTE(v85) = byte_540F5C[BYTE1(v54)];
v55 = *(_WORD *)v75;
v56 = v85 - v55;
if ( v85 != (_WORD)v55 && (_WORD)v55 )
{
v57 = ((unsigned __int16)(v85 - v55) * (unsigned __int16)v55 & 0xFFFF)
- ((unsigned __int16)(v85 - v55) * (unsigned int)(unsigned __int16)v55 >> 16);
LOWORD(v58) = v57;
if ( (signed int)v57 <= 0 )
LOWORD(v58) = v57 + 1;
}
else
{
v58 = 65537 - (unsigned __int16)v55 - (unsigned __int16)(v85 - v55);
}
LOBYTE(v82) = byte_540F5C[(unsigned __int8)v52];
HIBYTE(v82) = byte_540F5C[BYTE1(v52)];
if ( ((_BYTE)v82 - (_BYTE)v58) & 1 )
{
v59 = v82 - v58;
v60 = v82 - v58 - v58;
}
else
{
v59 = v82 - v58;
v60 = v82;
}
v83[0] = byte_540F5C[(unsigned __int8)v60];
*(_WORD *)&v83[1] = (unsigned __int8)byte_540F5C[HIBYTE(v60)];
LOBYTE(v84) = byte_540F5C[(unsigned __int8)v50];
HIBYTE(v84) = byte_540F5C[BYTE1(v50)];
if ( *(_WORD *)v83 && v84 != *(_WORD *)v83 )
{
v61 = ((unsigned __int16)(v84 - *(_WORD *)v83) * *(unsigned __int16 *)v83 & 0xFFFF)
- ((unsigned __int16)(v84 - *(_WORD *)v83) * (unsigned int)*(unsigned __int16 *)v83 >> 16);
LOWORD(v62) = (v84 - *(_WORD *)v83) * *(_WORD *)v83
- ((unsigned __int16)(v84 - *(_WORD *)v83) * (unsigned int)*(unsigned __int16 *)v83 >> 16);
if ( (signed int)v61 <= 0 )
LOWORD(v62) = (v84 - *(_WORD *)v83) * *(_WORD *)v83
- ((unsigned __int16)(v84 - *(_WORD *)v83) * (unsigned int)*(unsigned __int16 *)v83 >> 16)
+ 1;
}
else
{
v62 = 65537 - *(unsigned __int16 *)v83 - (unsigned __int16)(v84 - *(_WORD *)v83);
}
LOBYTE(v63) = byte_540F5C[(unsigned __int8)v46];
v30 = *((_WORD *)v75 - 36) ^ v56;
HIBYTE(v63) = byte_540F5C[HIBYTE(v46)];
v64 = *((_WORD *)v75 - 27);
v65 = v63 - v62;
v31 = v64 & 1 ? v64 - v59 : v59 - v64;
v66 = *((_WORD *)v75 - 18) ^ (v84 - *(_WORD *)v83);
v67 = *((_WORD *)v75 - 9);
v73 = *((_WORD *)v75 - 18) ^ (v84 - *(_WORD *)v83);
v35 = v67 & 1 ? v67 - v65 : v65 - v67;
v20 = v88 == 1;
v75 -= 2;
--v88;
if ( v20 )
break;
v32 = v73;
}
*(_WORD *)(v77 + 6) = v35;
*(_WORD *)v77 = v30;
*(_WORD *)(v77 + 2) = v31;
*(_WORD *)(v77 + 4) = v66;
v68 = 0;
do
{
*(_BYTE *)(v77 + v68) ^= *((_BYTE *)&v89 + v68);
++v68;
}
while ( v68 < 8 );
v89 = v86;
result = v80 - 1;
v20 = v80 == 1;
v90 = v87;
v77 += 8;
--v80;
if ( v20 )
break;
v26 = v91;
v24 = v99;
v27 = v92;
v25 = v77;
}
}
return result;
}
{
int v4; // ebp@0
unsigned __int8 v5; // al@2
char *v6; // esi@2
char v7; // cl@3
signed int v8; // ecx@6
int *v9; // eax@6
int v10; // edx@7
__int16 v11; // cx@8
__int16 v12; // si@8
int v13; // esi@13
int v14; // edi@13
int v15; // ecx@13
int *v16; // eax@13
int v17; // esi@14
int v18; // edx@15
unsigned __int8 v19; // bl@15
bool v20; // zf@15
bool v21; // sf@16
unsigned __int8 v22; // of@16
int result; // eax@17
__int16 v24; // di@18
int v25; // eax@18
__int16 v26; // cx@18
__int16 v27; // si@18
int v28; // ebx@20
int v29; // eax@20
__int16 v30; // bx@20
__int16 v31; // bp@21
__int16 v32; // di@23
__int16 v33; // ax@24
__int16 v34; // cx@24
__int16 v35; // ax@26
unsigned __int16 v36; // di@28
unsigned __int16 v37; // ax@28
int v38; // edx@30
unsigned int v39; // ecx@30
unsigned __int16 v40; // bx@33
unsigned int v41; // ecx@35
int v42; // esi@35
unsigned __int16 v43; // bp@38
unsigned __int16 v44; // di@38
__int16 v45; // cx@38
unsigned __int16 v46; // ax@38
unsigned int v47; // ecx@40
unsigned __int16 v48; // dx@40
int v49; // edx@43
int v50; // edi@43
unsigned __int16 v51; // cx@44
int v52; // ebp@46
int v53; // ecx@48
int v54; // ebx@51
int v55; // ecx@51
__int16 v56; // bx@51
unsigned int v57; // ecx@53
int v58; // esi@53
__int16 v59; // bp@57
__int16 v60; // cx@57
unsigned int v61; // edx@61
int v62; // esi@61
__int16 v63; // ST2C_2@64
__int16 v64; // cx@64
__int16 v65; // ax@64
__int16 v66; // di@67
__int16 v67; // cx@67
signed int v68; // eax@71
int v69; // [sp-Ch] [bp-268h]@4
int v70; // [sp-8h] [bp-264h]@4
int *v71; // [sp-4h] [bp-260h]@4
char *v72; // [sp+10h] [bp-24Ch]@13
__int16 v73; // [sp+10h] [bp-24Ch]@67
int v74; // [sp+14h] [bp-248h]@13
char *v75; // [sp+14h] [bp-248h]@26
signed int v76; // [sp+18h] [bp-244h]@14
int v77; // [sp+18h] [bp-244h]@18
signed int v78; // [sp+1Ch] [bp-240h]@13
unsigned int v79; // [sp+28h] [bp-234h]@1
unsigned int v80; // [sp+28h] [bp-234h]@18
unsigned int v81; // [sp+2Ch] [bp-230h]@46
__int16 v82; // [sp+34h] [bp-228h]@56
_BYTE v83[3]; // [sp+3Ch] [bp-220h]@59
__int16 v84; // [sp+44h] [bp-218h]@59
__int16 v85; // [sp+4Ch] [bp-210h]@51
int v86; // [sp+54h] [bp-208h]@20
int v87; // [sp+58h] [bp-204h]@20
signed int v88; // [sp+60h] [bp-1FCh]@26
int v89; // [sp+64h] [bp-1F8h]@17
int v90; // [sp+68h] [bp-1F4h]@17
int v91; // [sp+6Ch] [bp-1F0h]@18
int v92; // [sp+70h] [bp-1ECh]@18
int v93; // [sp+74h] [bp-1E8h]@4
int v94; // [sp+78h] [bp-1E4h]@6
int v95; // [sp+7Ch] [bp-1E0h]@6
int v96; // [sp+80h] [bp-1DCh]@6
char v97; // [sp+84h] [bp-1D8h]@13
int v98; // [sp+94h] [bp-1C8h]@20
int v99; // [sp+A6h] [bp-1B6h]@18
int v100; // [sp+B8h] [bp-1A4h]@23
int v101; // [sp+CAh] [bp-192h]@18
char v102; // [sp+DAh] [bp-182h]@26
int v103; // [sp+E4h] [bp-178h]@6
int v104; // [sp+F0h] [bp-16Ch]@6
int v105; // [sp+F4h] [bp-168h]@6
int v106; // [sp+F8h] [bp-164h]@6
int v107; // [sp+FCh] [bp-160h]@6
char v108; // [sp+15Ch] [bp-100h]@2
v79 = 8 * ((unsigned int)dataLen >> 3);
if ( pRandomData )
{
v71 = &v93;
v70 = randomDataLen;
v69 = pRandomData;
}
else
{
v5 = 0;
v6 = &v108;
do
{
v7 = v5 ^ (16 * v5 | (v5 >> 4));
++v5;
*v6++ = v7;
}
while ( v5 < 0xFFu );
v71 = &v93;
v70 = 255;
v69 = (int)&v108;
}
MD5Hash16(v69, v70, v71);
v104 = v93;
v105 = v94;
v106 = v95;
v107 = v96;
v8 = 9;
v9 = &v103;
do
{
v10 = v8 + 1;
if ( ((_BYTE)v8 + 1) & 7 )
{
if ( v8 & 7 )
{
v11 = *((_WORD *)v9 + 8) >> 7;
v12 = *((_WORD *)v9 + 7) << 9;
}
else
{
v11 = *((_WORD *)v9 - 1) << 9;
v12 = *(_WORD *)v9 >> 7;
}
}
else
{
v11 = *((_WORD *)v9 + 7) << 9;
v12 = *(_WORD *)v9 >> 7;
}
*((_WORD *)v9 + 14) = v12 ^ v11;
v8 = v10;
v9 = (int *)((char *)v9 + 2);
}
while ( (unsigned int)(v10 - 1) < 0x36 );
v13 = 0;
v14 = (int)&v97;
v15 = 10;
v74 = 0;
v72 = &v97;
v78 = 10;
v16 = &v104;
do
{
v17 = v13 + 12;
v76 = 6;
do
{
v18 = (unsigned __int8)v17;
v16 = (int *)((char *)v16 + 2);
v17 += 11;
v14 += 18;
LOWORD(v4) = (unsigned __int8)byte_540E5C[(unsigned __int8)byte_540E5C[v18]];
v19 = v15;
v15 += 7;
v4 = (unsigned __int8)byte_540E5C[(unsigned __int8)byte_540E5C[v19]] + (v4 << 8);
v20 = v76-- == 1;
*(_WORD *)(v14 - 18) = *((_WORD *)v16 - 1) + v4;
}
while ( !v20 );
v15 = v78 + 3;
v13 = v74 + 1;
v14 = (int)(v72 + 2);
v22 = __OFSUB__(v78 + 3, 34);
v20 = v78 == 31;
v21 = v78 - 31 < 0;
++v74;
v78 += 3;
v72 += 2;
}
while ( (unsigned __int8)(v21 ^ v22) | v20 );
result = v93;
v89 = v93;
v90 = v94;
if ( (signed int)v79 > 0 )
{
v24 = v99;
v25 = pData;
v26 = v99 & 1;
v27 = v101 & 1;
v91 = v99 & 1;
v92 = v101 & 1;
v77 = pData;
v80 = (v79 + 7) >> 3;
while ( 1 )
{
v28 = *(_DWORD *)v25;
v29 = *(_DWORD *)(v25 + 4);
v86 = v28;
v30 = v98 ^ v28;
v87 = v29;
v31 = v26 ? v24 - HIWORD(v86) : HIWORD(v86) - v24;
v32 = v100 ^ v29;
if ( v27 )
{
v33 = v101;
v34 = HIWORD(v87);
}
else
{
v33 = HIWORD(v29);
v34 = v101;
}
v35 = v33 - v34;
v75 = &v102;
v88 = 8;
while ( 1 )
{
v36 = v30 + v32;
v37 = v31 + v35;
if ( v36 && v37 )
{
v38 = v36;
v39 = (v36 * v37 & 0xFFFF) - (v36 * (unsigned int)v37 >> 16);
if ( (signed int)v39 <= 0 )
LOWORD(v39) = v36 * v37 - (v36 * (unsigned int)v37 >> 16) + 1;
}
else
{
v38 = v36;
LOWORD(v39) = 1 - v37 - v36;
}
v40 = v39 ^ v30;
if ( v36 && (_WORD)v39 )
{
v41 = (v38 * (unsigned __int16)v39 & 0xFFFF) - (v38 * (unsigned int)(unsigned __int16)v39 >> 16);
LOWORD(v42) = v41;
if ( (signed int)v41 <= 0 )
LOWORD(v42) = v41 + 1;
}
else
{
v42 = 65537 - (unsigned __int16)v39 - v38;
}
v43 = v42 ^ v31;
v44 = v36 - v40;
v45 = *((_WORD *)v75 + 9);
v46 = *((_WORD *)v75 + 9) ^ (v37 - v43);
if ( v46 && v45 )
{
v47 = (v46 * *((_WORD *)v75 + 9) & 0xFFFF) - (v46 * (unsigned int)*((_WORD *)v75 + 9) >> 16);
v48 = v46 * *((_WORD *)v75 + 9) - (v46 * (unsigned int)*((_WORD *)v75 + 9) >> 16);
if ( (signed int)v47 <= 0 )
v48 = v46 * *((_WORD *)v75 + 9) - (v46 * (unsigned int)*((_WORD *)v75 + 9) >> 16) + 1;
}
else
{
v48 = 1 - v45 - v46;
}
v49 = v48;
v50 = v49 ^ v44;
v51 = v50 & 1 ? v50 - (_WORD)v49 : v50 + (_WORD)v49;
v81 = v51;
LOBYTE(v81) = byte_540F5C[(unsigned __int8)v51];
*(_WORD *)((char *)&v81 + 1) = (unsigned __int8)byte_540F5C[BYTE1(v81)];
v52 = v81 ^ v43;
if ( (_WORD)v52 && (_WORD)v81 )
{
v53 = ((unsigned __int16)v81 * (unsigned __int16)v52 & 0xFFFF)
- ((unsigned __int16)v81 * (unsigned int)(unsigned __int16)v52 >> 16);
if ( v53 <= 0 )
LOWORD(v53) = v81 * (_WORD)v52 - ((unsigned __int16)v81 * (unsigned int)(unsigned __int16)v52 >> 16) + 1;
}
else
{
v53 = 65537 - (unsigned __int16)v52 - (unsigned __int16)v81;
}
v54 = (unsigned __int16)v53 ^ v40;
LOBYTE(v85) = byte_540F5C[(unsigned __int8)v54];
HIBYTE(v85) = byte_540F5C[BYTE1(v54)];
v55 = *(_WORD *)v75;
v56 = v85 - v55;
if ( v85 != (_WORD)v55 && (_WORD)v55 )
{
v57 = ((unsigned __int16)(v85 - v55) * (unsigned __int16)v55 & 0xFFFF)
- ((unsigned __int16)(v85 - v55) * (unsigned int)(unsigned __int16)v55 >> 16);
LOWORD(v58) = v57;
if ( (signed int)v57 <= 0 )
LOWORD(v58) = v57 + 1;
}
else
{
v58 = 65537 - (unsigned __int16)v55 - (unsigned __int16)(v85 - v55);
}
LOBYTE(v82) = byte_540F5C[(unsigned __int8)v52];
HIBYTE(v82) = byte_540F5C[BYTE1(v52)];
if ( ((_BYTE)v82 - (_BYTE)v58) & 1 )
{
v59 = v82 - v58;
v60 = v82 - v58 - v58;
}
else
{
v59 = v82 - v58;
v60 = v82;
}
v83[0] = byte_540F5C[(unsigned __int8)v60];
*(_WORD *)&v83[1] = (unsigned __int8)byte_540F5C[HIBYTE(v60)];
LOBYTE(v84) = byte_540F5C[(unsigned __int8)v50];
HIBYTE(v84) = byte_540F5C[BYTE1(v50)];
if ( *(_WORD *)v83 && v84 != *(_WORD *)v83 )
{
v61 = ((unsigned __int16)(v84 - *(_WORD *)v83) * *(unsigned __int16 *)v83 & 0xFFFF)
- ((unsigned __int16)(v84 - *(_WORD *)v83) * (unsigned int)*(unsigned __int16 *)v83 >> 16);
LOWORD(v62) = (v84 - *(_WORD *)v83) * *(_WORD *)v83
- ((unsigned __int16)(v84 - *(_WORD *)v83) * (unsigned int)*(unsigned __int16 *)v83 >> 16);
if ( (signed int)v61 <= 0 )
LOWORD(v62) = (v84 - *(_WORD *)v83) * *(_WORD *)v83
- ((unsigned __int16)(v84 - *(_WORD *)v83) * (unsigned int)*(unsigned __int16 *)v83 >> 16)
+ 1;
}
else
{
v62 = 65537 - *(unsigned __int16 *)v83 - (unsigned __int16)(v84 - *(_WORD *)v83);
}
LOBYTE(v63) = byte_540F5C[(unsigned __int8)v46];
v30 = *((_WORD *)v75 - 36) ^ v56;
HIBYTE(v63) = byte_540F5C[HIBYTE(v46)];
v64 = *((_WORD *)v75 - 27);
v65 = v63 - v62;
v31 = v64 & 1 ? v64 - v59 : v59 - v64;
v66 = *((_WORD *)v75 - 18) ^ (v84 - *(_WORD *)v83);
v67 = *((_WORD *)v75 - 9);
v73 = *((_WORD *)v75 - 18) ^ (v84 - *(_WORD *)v83);
v35 = v67 & 1 ? v67 - v65 : v65 - v67;
v20 = v88 == 1;
v75 -= 2;
--v88;
if ( v20 )
break;
v32 = v73;
}
*(_WORD *)(v77 + 6) = v35;
*(_WORD *)v77 = v30;
*(_WORD *)(v77 + 2) = v31;
*(_WORD *)(v77 + 4) = v66;
v68 = 0;
do
{
*(_BYTE *)(v77 + v68) ^= *((_BYTE *)&v89 + v68);
++v68;
}
while ( v68 < 8 );
v89 = v86;
result = v80 - 1;
v20 = v80 == 1;
v90 = v87;
v77 += 8;
--v80;
if ( v20 )
break;
v26 = v91;
v24 = v99;
v27 = v92;
v25 = v77;
}
}
return result;
}
赞赏
他的文章
看原图
赞赏
雪币:
留言: