- char __userpurge NetClient__ProcessMessage<al>(void *this<ecx>, double st6_0<st1>, double st7_0<st0>, int a2, int a3, int a4)
- {
- int v6; // ebx@1
- unsigned int v7; // edi@1
- int v8; // esi@1
- char result; // al@2
- unsigned int v10; // eax@11
- int v11; // ecx@12
- unsigned int v12; // [sp+Ch] [bp-4h]@1
- ++packetCounter;
- v8 = (int)this;
- CDataStore__GetInt32(a3, (int)&v12);
- v6 = v12 & 0x244;
- v7 = v12;
- if ( (v12 & 0x244) == 4 )
- {
- result = NetClient__JamClientDispatch(v8, v8, st6_0, st7_0, 0, a2, v12, a3);
- }
- else
- {
- if ( (v12 & 0x276) == 80 )
- {
- result = NetClient__JamClientGuildDispatch(v8, v8, 0, a2, v12, a3);
- }
- else
- {
- if ( (v12 & 0x1240) == 512 )
- {
- result = NetClient__JamClientMovementDispatch(v8, 0, a2, v12, a3);
- }
- else
- {
- if ( (v12 & 0x1244) == 580 )
- {
- result = NetClient__JamClientQuestDispatch(v8, 0, a2, v12, a3);
- }
- else
- {
- if ( (v12 & 0x252) == 64 )
- {
- result = NetClient__JamClientSpellDispatch(v8, st6_0, st7_0, 0, a2, v12, a3);
- }
- else
- {
- (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)v8 + 68))(v8, v12);
- v10 = v7 & 3 | ((v7 & 0x38 | ((v7 & 0x180 | (v7 >> 1) & 0x7E00) >> 1)) >> 1);
- if ( v6 || (v11 = *(_DWORD *)(v8 + 4 * v10 + 0x550), !v11) )
- result = (*(int (**)(void))(*(_DWORD *)a3 + 0x18))();
- else
- result = ((int (__cdecl *)(_DWORD, unsigned int, int, int))(v11 - ((v7 | (v7 << 16)) ^ 0x62A3A31D)))(
- *(_DWORD *)(v8 + 4 * v10 + 0x2550),
- v7,
- a2,
- a3);
- }
- }
- }
- }
- }
- return result;
- }