в creaturecahce еще по круче
Код:
unsigned int __thiscall sub_80E0B0(void *this, signed int a2, int a3)
{
signed int v3; // edi@1
void *v4; // esi@1
unsigned __int8 v5; // dl@2
unsigned int v7; // ecx@4
unsigned __int8 v8; // dl@4
char v9; // al@4
int v10; // ebx@4
unsigned int v11; // eax@7
char v12; // ST34_1@8
unsigned int v13; // ebx@8
unsigned int v14; // eax@10
bool v15; // zf@12
int v16; // ebx@13
int v17; // ebx@15
int v18; // ebx@17
int v19; // ebx@19
int v20; // ebx@21
char v21; // ST08_1@21
unsigned int v22; // ST04_4@21
unsigned int v23; // esi@21
unsigned int result; // eax@22
unsigned __int8 v25; // [sp+10h] [bp-20h]@4
int v26; // [sp+18h] [bp-18h]@0
int v27; // [sp+1Ch] [bp-14h]@0
signed int v28; // [sp+20h] [bp-10h]@4
signed int v29; // [sp+20h] [bp-10h]@15
signed int v30; // [sp+20h] [bp-10h]@17
signed int v31; // [sp+20h] [bp-10h]@19
int v32; // [sp+24h] [bp-Ch]@4
unsigned __int8 v33; // [sp+2Dh] [bp-3h]@11
unsigned __int8 v35; // [sp+2Fh] [bp-1h]@8
v3 = a2;
LOBYTE(a2) = 0;
v4 = this;
*((_DWORD *)v4 + 1) ^= (unsigned int)&unk_FFFFFF & (sub_710890(a2) ^ *((_DWORD *)v4 + 1));
LOBYTE(a2) = 0;
*((_DWORD *)v4 + 3) ^= (unsigned int)&unk_FFFFFF & (sub_710890(a2) ^ *((_DWORD *)v4 + 3));
LOBYTE(a2) = 0;
*((_DWORD *)v4 + 5) ^= (unsigned int)&unk_FFFFFF & (sub_70A5C0(a2) ^ *((_DWORD *)v4 + 5));
BYTE3(a2) = 0;
CDataStore::GetInt8((char *)&a2 + 3);
v5 = BYTE3(a2);
v7 = (unsigned int)v5 >> 7;
v8 = 2 * v5;
v9 = 1;
v10 = (int)((char *)v4 + 156);
v25 = v8;
*((_BYTE *)v4 + 52) = v7 != 0;
v32 = (int)((char *)v4 + 156);
v28 = 4;
while ( 1 )
{
if ( v9 == 8 )
{
BYTE3(a2) = 0;
CDataStore::GetInt8((char *)&a2 + 3);
v11 = BYTE3(a2);
}
else
{
v12 = v9;
v13 = (unsigned int)v8 >> v9;
v35 = 0;
CDataStore::GetInt8(&v35);
v11 = (v13 << v12) | ((unsigned int)v35 >> (8 - v12));
v10 = v32;
v25 = 2 * v35;
}
LOBYTE(v27) = 0;
*(_DWORD *)(v10 - 32) ^= (unsigned int)&unk_FFFFFF & ((sub_70A480(v27) | 8 * v11) ^ *(_DWORD *)(v10 - 32));
v33 = 0;
CDataStore::GetInt8(&v33);
v14 = 2 * ((unsigned int)v25 >> 1) | ((unsigned int)v33 >> 7);
v25 = 2 * v33;
LOBYTE(v26) = 0;
*(_DWORD *)v32 ^= (unsigned int)&unk_FFFFFF & ((sub_70A480(v26) | 8 * v14) ^ *(_DWORD *)v32);
v10 = v32 + 8;
v15 = v28-- == 1;
v32 += 8;
if ( v15 )
break;
v9 = 1;
v8 = v25;
}
v16 = (int)((char *)v4 + 120);
a2 = 4;
do
{
sub_BF2C70(v3, (unsigned int)&unk_FFFFFF & *(_DWORD *)(v16 + 4), a3);
sub_BF2C70(v3, (unsigned int)&unk_FFFFFF & *(_DWORD *)(v16 + 36), a3);
v16 += 8;
--a2;
}
while ( a2 );
v17 = (int)((char *)v4 + 88);
v29 = 2;
do
{
a2 = 0;
CDataStore::GetInt32(&a2);
*(_DWORD *)v17 = a2;
v17 += 4;
--v29;
}
while ( v29 );
a2 = 0;
CDataStore::GetInt32(&a2);
*((_DWORD *)v4 + 6) = a2;
a2 = 0;
CDataStore::GetInt32(&a2);
*((_DWORD *)v4 + 7) = a2;
a2 = 0;
CDataStore::GetInt32(&a2);
*((_DWORD *)v4 + 8) = a2;
v18 = (int)((char *)v4 + 96);
v30 = 2;
do
{
a2 = 0;
CDataStore::GetInt32(&a2);
*(_DWORD *)v18 = a2;
v18 += 4;
--v30;
}
while ( v30 );
v19 = (int)((char *)v4 + 104);
v31 = 4;
do
{
a2 = 0;
CDataStore::GetInt32(&a2);
*(_DWORD *)v19 = a2;
v19 += 4;
--v31;
}
while ( v31 );
a2 = 0;
CDataStore::GetFloat(&a2);
*((_DWORD *)v4 + 9) = a2;
a2 = 0;
CDataStore::GetFloat(&a2);
*((_DWORD *)v4 + 10) = a2;
a2 = 0;
CDataStore::GetFloat(&a2);
*((_DWORD *)v4 + 11) = a2;
a2 = 0;
CDataStore::GetFloat(&a2);
*((_DWORD *)v4 + 12) = a2;
a2 = 0;
CDataStore::GetInt32(&a2);
v20 = (int)((char *)v4 + 56);
sub_6B5570(a2);
a2 = 0;
CDataStore::GetInt32(&a2);
*((_DWORD *)v4 + 19) = a2;
a2 = 0;
CDataStore::GetInt32(&a2);
*((_DWORD *)v4 + 20) = a2;
a2 = 0;
CDataStore::GetInt32(&a2);
v21 = a3;
v22 = (unsigned int)&unk_FFFFFF & *((_DWORD *)v4 + 1);
*((_DWORD *)v4 + 21) = a2;
sub_BF2C70(v3, v22, v21);
sub_BF2C70(v3, (unsigned int)&unk_FFFFFF & *((_DWORD *)v4 + 3), a3);
sub_BF2C70(v3, (unsigned int)&unk_FFFFFF & *((_DWORD *)v4 + 5), a3);
v23 = 0;
while ( 1 )
{
result = *(_DWORD *)(v20 + 16);
if ( result == -1 )
result = *(_DWORD *)v20;
if ( v23 >= result )
break;
a3 = 0;
CDataStore::GetInt32(&a3);
if ( *(_DWORD *)(v20 + 16) == -1 )
*(_DWORD *)(*(_DWORD *)(v20 + 4) + 4 * v23++) = a3;
else
*(_DWORD *)(v20 + 4 * v23++) = a3;
}
return result;
}