UnitIsDead 0x594370
Code:
signed int __cdecl wowlua_UnitIsDead(int luastate)
{
int ST2C_4_0; // ST2C_4@0
int luastate_c; // esi@1
int object; // eax@3
int v5; // ecx@4
int v6; // eax@8
char *unitkeyword; // eax@3
double v8; // ST24_8@7
__int64 guid; // [sp+14h] [bp-8h]@3
__int64 guid_c; // [sp+Ch] [bp-10h]@3
luastate_c = luastate;
if ( !lua_isString(luastate, 1) )
{
lua_reportError(luastate_c, "Usage: UnitIsDead(\"unit\")", ST2C_4_0);
return 0;
}
unitkeyword = (char *)lua_toString(luastate_c, 1, 0);
guid = 0i64;
getGuidByKeyword(unitkeyword, &guid, 0);
guid_c = guid;
object = getObjectByGuidFiltered(guid, 8);
if ( object )
{
v5 = *(_DWORD *)(object + 0xD0);
if ( *(_DWORD *)(v5 + 0x44) <= 0
|| (*(_DWORD *)(v5 + 0x120) >> 5) & 1 && (guid = **(_QWORD **)(object + 8), !sub_4B2B40(&guid)) )
{
LABEL_7:
__asm
{
fld1
fstp [esp+1Ch+var_1C]
}
lua_pushNumber(luastate_c, v8);
return 1;
}
}
else
{
v6 = sub_4B3A10(&guid_c);
if ( v6 && *(_BYTE *)(v6 + 8) & 4 )
goto LABEL_7;
}
lua_pushNil(luastate_c);
return 1;
}