Копаясь дальше в клиенте, наткнулся на такое:
Код:
char __userpurge NetClient::ProcessMessage<al>(void *this<ecx>, int edi0<edi>, int a2, int a3, int a4)
{
int v5; // esi@1
unsigned int v6; // ebx@1
int v7; // edx@2
int v8; // ecx@6
char result; // al@11
int v10; // ecx@12
int v11; // ecx@19
unsigned int v12; // eax@31
int v13; // ecx@32
unsigned int dwOpcode; // [sp+Ch] [bp-18h]@1
unsigned int v15; // [sp+10h] [bp-14h]@1
unsigned int v16; // [sp+14h] [bp-10h]@17
unsigned int v17; // [sp+18h] [bp-Ch]@10
unsigned int v18; // [sp+1Ch] [bp-8h]@9
unsigned int v19; // [sp+20h] [bp-4h]@8
++dword_10A775C;
v5 = (int)this;
CDataStore__GetInt32(&dwOpcode);
v15 = dwOpcode & 0x1EF0;
v6 = dwOpcode;
if ( dwOpcode & 0x1EF0
&& (v7 = dwOpcode & 0x1F54, v7 != 768)
&& (dwOpcode & 0x1C52) != 3072
&& (dwOpcode & 0x15D8) != 64
&& (dwOpcode & 0x11D8) != 72
&& (v8 = dwOpcode & 0x1D90, v8 != 2064)
&& v8 != 2192
&& (v19 = dwOpcode & 0x1472, (dwOpcode & 0x1472) != 4162)
&& (v18 = dwOpcode & 0x1492, edi0 = 4114, (dwOpcode & 0x1492) != 4114) )
{
v17 = dwOpcode & 0x1D50;
if ( (dwOpcode & 0x1D50) == 1280 )
{
result = sub_68DE64(v5, 0, a2, dwOpcode, a3);
}
else
{
v10 = dwOpcode & 0x1ED2;
if ( v10 == 128
|| v10 == 130
|| v7 == 516
|| (dwOpcode & 0x11D0) == 192
|| (dwOpcode & 0x1F94) == 528
|| (v16 = dwOpcode & 0x1D34, (dwOpcode & 0x1D34) == 20)
|| (dwOpcode & 0x1450) == 1104
|| (v11 = dwOpcode & 0x117A, v11 == 4362) )
{
result = sub_C7EDD4(v5, 0, a2, dwOpcode, a3);
}
else
{
if ( v15 == 32
|| (dwOpcode & 0x1FD4) == 640
|| (dwOpcode & 0x1D94) == 144
|| (dwOpcode & 0x157E) == 272
|| v19 == 4194
|| v18 == 5138 )
{
result = sub_68EA8F(0, a2, dwOpcode, a3);
}
else
{
if ( v17 == 1024 || v16 == 52 || v19 == 1040 || v19 == 1042 || v11 == 4394 )
{
result = sub_C653F2(0, a2, dwOpcode, a3);
}
else
{
(*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)v5 + 68))(v5, dwOpcode);
v12 = v6 & 1 | ((v6 & 0xC | ((v6 & 0xFE0 | (v6 >> 1) & 0x7000) >> 1)) >> 1);
if ( (v6 & 0x1012) == 4096 && (v13 = *(_DWORD *)(v5 + 4 * v12 + 1360)) != 0 )
result = ((int (__cdecl *)(_DWORD, unsigned int, int, int))(v13 - ((v6 | (v6 << 16)) ^ 0x62A3A31D)))(
*(_DWORD *)(v5 + 4 * v12 + 9552),
v6,
a2,
a3);
else
result = (*(int (**)(void))(*(_DWORD *)a3 + 24))();
}
}
}
}
}
else
{
result = sub_658438(edi0, v5, v5, 0, a2, dwOpcode, a3);
}
return result;
}
а дальше еще хуже:
Код:
char __userpurge sub_658438<al>(int a1<edi>, int a2<esi>, int ecx0<ecx>, int a3, int a4, unsigned __int16 a5, int a6)
{
..........................
sub_A6EED0(0x466Cu, ecx0);
v92 = a2;
if ( !(a5 & 0x1EF0) )
{
v8 = a5 & 0xF | ((a5 & 0x100 | ((unsigned int)a5 >> 4) & 0xE00) >> 4);
goto LABEL_19;
}
v9 = 768;
v91 = a1;
if ( (a5 & 0x1F54) == 768 )
{
v8 = (a5 & 3 | ((a5 & 8 | ((a5 & 0x20 | (((unsigned __int8)(a5 & 0x80) | ((unsigned int)a5 >> 5) & 0x700) >> 1)) >> 1)) >> 1))
+ 32;
goto LABEL_19;
}
if ( (a5 & 0x1C52) == 3072 )
{
v8 = (a5 & 1 | ((a5 & 0xC | ((a5 & 0x20 | ((a5 & 0x380 | ((unsigned int)a5 >> 3) & 0x1C00) >> 1)) >> 1)) >> 1)) + 64;
goto LABEL_19;
}
if ( (a5 & 0x15D8) == 64 )
{
v8 = (a5 & 7 | ((a5 & 0x20 | ((a5 & 0x200 | ((a5 & 0x800 | ((unsigned int)a5 >> 1) & 0x7000) >> 1)) >> 3)) >> 2))
+ 192;
goto LABEL_19;
}
if ( (a5 & 0x11D8) == 72 )
{
v8 = (a5 & 7 | ((a5 & 0x20 | ((a5 & 0xE00 | ((unsigned int)a5 >> 1) & 0x7000) >> 3)) >> 2)) + 256;
goto LABEL_19;
}
if ( (a5 & 0x1D90) == 2064 )
{
v8 = (a5 & 0xF | ((a5 & 0x60 | ((a5 & 0x200 | ((unsigned int)a5 >> 3) & 0x1C00) >> 2)) >> 1)) + 384;
goto LABEL_19;
}
if ( (a5 & 0x1D90) == 2192 )
{
v9 = 512;
v10 = (a5 & 0x200 | ((unsigned int)a5 >> 3) & 0x1C00) >> 2;
v11 = a5 & 0x60;
v12 = a5 & 0xF;
}
else
{
if ( (a5 & 0x1472) == 4162 )
{
v8 = (a5 & 1 | ((a5 & 0xC | ((a5 & 0x380 | ((a5 & 0x800 | ((unsigned int)a5 >> 1) & 0x7000) >> 1)) >> 3)) >> 1))
+ 640;
goto LABEL_19;
}
v10 = (a5 & 0x60 | ((a5 & 0x300 | ((a5 & 0x800 | ((unsigned int)a5 >> 1) & 0x7000) >> 1)) >> 1)) >> 1;
v11 = a5 & 0xC;
v12 = a5 & 1;
}
v8 = v9 + (v12 | ((v11 | v10) >> 1));
LABEL_19:
switch ( v8 )
{
case 0x50u:
интересно, они как-то классифицируют разбивку или просто так от фонаря цифр наставили?
Интересуюсь потому что непонятно как функции обзывать.