Not sure where you got the 'auraCount > 80' from but here is how wow handles auras
Code:
void Unit::UpdateAllAuras()
{
auras.clear();
uint64_t table = address() + offsetof(CGUnit, AuraCount); // 0x600
int32_t count = unit_data->AuraFirst; // 0x1080
if (count == -1)
{
table = unit_data->AuraTable; // 0x608
count = unit_data->AuraCount; // 0x600
}
for (int32_t i = 0; i < count; ++i)
{
// sizeof CGAura = 0xA8
Aura aura = Aura(_process->memory().Read<CGAura>(table + (sizeof(CGAura) * i)));
// spell_id is at 0x88
if (aura.GetSpellId() > 0)
auras.emplace_back(Aura(aura));
}
}
You can reverse the UnitBufff API function and it will call a function that has this:
Code:
v5 = sub_D65700(v3, *(unsigned int *)(v2 + 0x10), *(unsigned __int8 *)(v2 + 0x14));
v6 = v5;
if ( (v5 & 0x80000000) != 0 )
goto LABEL_13;
v7 = v3 + 0x600;
v8 = 0xA8i64 * v5;
if ( *(_DWORD *)(v3 + 0x1080) == -1 )
v7 = *(_QWORD *)(v3 + 0x608);
v9 = *(_DWORD *)(v8 + v7 + 0x88);
v10 = (signed int *)sub_465050(&off_28D8B40, *(unsigned int *)(v8 + v7 + 0x88), 0i64, &v21);
if ( v10 )
{
v11 = sub_B79EA0(v3, v6);
result = sub_166DDE0(v9, v11, v20, v4, v10, v3);
}
which is similar to the code above