- signed int __cdecl sub_8A6E70(int a1, int a2, int a3, int a4)
- {
- void *v4; // eax@1
- int v5; // esi@1
- int v6; // eax@3
- int v7; // eax@4
- int v9; // eax@7
- int v10; // edi@7
- int v11; // eax@11
- int v12; // eax@12
- QWORD v13; // [sp+64h] [bp-8h]@1
- CDataStore::GetWowGUID(a4, &v13);
- v4 = ClntObjMgrObjectPtr(v13, 8, "Unit_C.cpp", 1620);
- v5 = (int)v4;
- if ( v4 && *((_DWORD *)v4 + 732) )
- {
- v6 = *((_DWORD *)v4 + 1157);
- if ( v6 )
- {
- v7 = *(_DWORD *)(v6 + 396);
- if ( !(v7 & 1) )
- {
- if ( v7 )
- {
- *(_DWORD *)(v5 + 3008) |= 0x200000u;
- return 1;
- }
- }
- }
- *(_DWORD *)(v5 + 3008) &= 0xFFDFFFFFu;
- sub_898D50(1);
- *(_DWORD *)(v5 + 2928) = 0;
- v9 = CGUnit_C::IsMountSelf(0);
- v10 = v9 == 0;
- if ( *(_DWORD *)(v5 + 2928) )
- {
- CGUnit_C::CreateUnitMount(v5);
- if ( v10 )
- sub_881890(v5);
- }
- else
- {
- if ( v9 == 0 )
- {
- v11 = sub_6DFCD0(*(_DWORD *)(v5 + 3212));
- if ( v11 )
- {
- v12 = sub_7D4410(0, 0, v11, 8);
- sub_8B5A50(v12);
- }
- *(_DWORD *)(v5 + 3212) = 0;
- }
- }
- sub_8E61C0(v5, 0);
- CGUnit_C::CheckLoopSound(v5);
- (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 272))(v5);
- PlayerNameTriggerNameRegenerate(*(_DWORD *)(*(_DWORD *)(v5 + 188) + 84));
- CGUnit_C::CreateOrDestroyObjectEffectManager(v5);
- sub_8E6700(v5);
- }
- return 1;
- }