12.12.2013, 14:05 | #1 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
NetClient__ProcessMessage
Копаясь дальше в клиенте, наткнулся на такое:
Код:
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: Интересуюсь потому что непонятно как функции обзывать. |