// Microsoft VisualC 2-10/net runtime
unsigned int __cdecl unknown_libname_30(unsigned int a1, int a2, unsigned int a3)
{
int v3; // esi@1
unsigned int v4; // edi@1
unsigned int result; // eax@6
unsigned int v6; // ecx@8
int v7; // esi@26
int v8; // edi@26
unsigned int v9; // ecx@27
v3 = a2;
v4 = a1;
if ( a1 > a2 && a1 < a2 + a3 )
{
v7 = a3 + a2 - 4;
v8 = a3 + a1 - 4;
if ( v8 & 3 )
{
if ( a3 >= 4 )
JUMPOUT(__CS__, *((_DWORD *)unknown_libname_54 + (v8 & 3) + 1));
switch ( a3 )
{
case 0u:
LABEL_34:
result = a1;
break;
case 1u:
LABEL_35:
*(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
result = a1;
break;
case 2u:
LABEL_36:
*(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
*(_BYTE *)(v8 + 2) = *(_BYTE *)(v7 + 2);
result = a1;
break;
case 3u:
goto LABEL_37;
}
}
else
{
v9 = a3 >> 2;
if ( a3 >> 2 < 8 )
{
switch ( -v9 )
{
case 0:
break;
}
}
else
{
memcpy((void *)v8, (const void *)v7, 4 * v9);
v7 += 4 * v9;
v8 += 4 * v9;
}
switch ( a3 & 3 )
{
case 0u:
goto LABEL_34;
case 1u:
goto LABEL_35;
case 2u:
goto LABEL_36;
case 3u:
break;
}
LABEL_37:
*(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
*(_BYTE *)(v8 + 2) = *(_BYTE *)(v7 + 2);
*(_BYTE *)(v8 + 1) = *(_BYTE *)(v7 + 1);
result = a1;
}
}
else
{
if ( a3 >= 0x100 && dword_101ADC64 && (v3 = a2, v4 = a1, (a1 & 0xF) == (a2 & 0xF)) )
{
result = _VEC_memcpy(a1, a2, a3);
}
else
{
if ( v4 & 3 )
{
if ( a3 >= 4 )
JUMPOUT(__CS__, *((_DWORD *)unknown_libname_35 + (v4 & 3) + 1));
JUMPOUT(__CS__, *((_DWORD *)unknown_libname_47 + a3 - 4));
}
v6 = a3 >> 2;
if ( a3 >> 2 < 8 )
{
switch ( v6 )
{
case 0u:
goto LABEL_10;
case 1u:
goto LABEL_21;
case 2u:
goto LABEL_20;
case 3u:
goto LABEL_19;
case 4u:
goto LABEL_18;
case 5u:
goto LABEL_17;
case 6u:
break;
case 7u:
*(_DWORD *)(v4 + 4 * v6 - 28) = *(_DWORD *)(v3 + 4 * v6 - 28);
break;
}
*(_DWORD *)(v4 + 4 * v6 - 24) = *(_DWORD *)(v3 + 4 * v6 - 24);
LABEL_17:
*(_DWORD *)(v4 + 4 * v6 - 20) = *(_DWORD *)(v3 + 4 * v6 - 20);
LABEL_18:
*(_DWORD *)(v4 + 4 * v6 - 16) = *(_DWORD *)(v3 + 4 * v6 - 16);
LABEL_19:
*(_DWORD *)(v4 + 4 * v6 - 12) = *(_DWORD *)(v3 + 4 * v6 - 12);
LABEL_20:
*(_DWORD *)(v4 + 4 * v6 - 8) = *(_DWORD *)(v3 + 4 * v6 - 8);
LABEL_21:
*(_DWORD *)(v4 + 4 * v6 - 4) = *(_DWORD *)(v3 + 4 * v6 - 4);
v3 += 4 * v6;
v4 += 4 * v6;
}
else
{
memcpy((void *)v4, (const void *)v3, 4 * v6);
v3 += 4 * v6;
v4 += 4 * v6;
}
LABEL_10:
switch ( a3 & 3 )
{
case 0u:
result = a1;
break;
case 1u:
*(_BYTE *)v4 = *(_BYTE *)v3;
result = a1;
break;
case 2u:
*(_BYTE *)v4 = *(_BYTE *)v3;
*(_BYTE *)(v4 + 1) = *(_BYTE *)(v3 + 1);
result = a1;
break;
case 3u:
*(_BYTE *)v4 = *(_BYTE *)v3;
*(_BYTE *)(v4 + 1) = *(_BYTE *)(v3 + 1);
*(_BYTE *)(v4 + 2) = *(_BYTE *)(v3 + 2);
result = a1;
break;
}
}
}
return result;
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!