__int16 result; // ax@32 signed int v5; // [sp+24h] [bp-28h]@16 int v6; // [sp+28h] [bp-24h]@22 char v7; // [sp+2Ch] [bp-20h]@10 int v8; // [sp+30h] [bp-1Ch]@1 float v9; // [sp+34h] [bp-18h]@1 int v10; // [sp+38h] [bp-14h]@10 int creatureType; // [sp+3Ch] [bp-10h]@1 signed int slot; // [sp+40h] [bp-Ch]@10 int a3a; // [sp+44h] [bp-8h]@1 int v14; // [sp+48h] [bp-4h]@33 creatureType = *(_BYTE *)(a1 + 3); a3a = (unsigned __int8)((unsigned __int8)(*(_WORD *)(a1 + 4) >> 8) >> -5); v8 = ((unsigned __int8)(*(_WORD *)(a1 + 4) >> 8) >> -5) & 0; v9 = (double)getArmyStrength((ArmyInfo *)(a2 + 101), (Hero *)a2, 0, 0, 0, 0) / (double)(a3a * creature_table[creatureType].fight_value); if ( ArmyInfo::hasRoomForCreatureType((ArmyInfo *)(a2 + 101), creatureType) && !Hero::hasArtifact((Hero *)a2, ARTIFACT_HIDEOUS_MASK) && v9 > 2.0 && creatureType != 59 && creatureType != 62 && creatureType != 63 && creatureType != 64 && creatureType != 65 ) { if ( !v8 ) { if ( !*(_BYTE *)(a2 + 120) ) goto LABEL_28; if ( *(_BYTE *)(a2 + 120) == 3 )
ui64 CGHeroInstance::getTotalStrength() const { double ret = getFightingStrength() * getArmyStrength(); return (ui64) ret; }