1. void __thiscall CGUnit_C__Dismount(int this)
  2. {
  3. WGUID v1; // [email protected]
  4. int v2; // [email protected]
  5. int v3; // [email protected]
  6. int v4; // [email protected]
  7. int v5; // [email protected]
  8. int v6; // [email protected]
  9. int v7; // [email protected]
  10. int v8; // [sp+Ch] [bp-18h]@4
  11. int v9; // [sp+10h] [bp-14h]@4
  12. int v10; // [sp+14h] [bp-10h]@4
  13. int v11; // [sp+18h] [bp-Ch]@4
  14. int v12; // [sp+1Ch] [bp-8h]@4
  15. int v13; // [sp+20h] [bp-4h]@4
  16. v3 = this;
  17. v4 = *(_DWORD *)(this + 8);
  18. v2 = *(_DWORD *)(v4 + 4);
  19. v5 = *(_DWORD *)v4;
  20. v1 = ClntObjMgrGetActivePlayer();
  21. if ( v5 == v1.guid_low )
  22. {
  23. if ( v2 == v1.guid_high )
  24. {
  25. if ( !((*(_DWORD *)(*(_DWORD *)(v3 + 208) + 212) >> 20) & 1) )
  26. {
  27. v8 = (int)off_9E0E24;
  28. v9 = 0;
  29. v10 = 0;
  30. v11 = 0;
  31. v12 = 0;
  32. v13 = -1;
  33. CDataStore__PutInt32((int)&v8, 885);
  34. v13 = 0;
  35. ClientServices__SendPacket_0((int)&v8);
  36. if ( *(_DWORD *)(v3 + 2496) )
  37. {
  38. v6 = *(_DWORD *)(v3 + 3932);
  39. if ( v6 && (v7 = *(_DWORD *)(v6 + 376), !(v7 & 1)) && v7 )
  40. {
  41. *(_DWORD *)(v3 + 2608) |= 0x10000000u;
  42. }
  43. else
  44. {
  45. *(_DWORD *)(v3 + 2608) &= 0xEFFFFFFFu;
  46. CGUnit_C__DestroyUnitMount(v3, -1, 0, 1);
  47. *(_DWORD *)(v3 + 2496) = 0;
  48. CGUnit_C__CheckLoopSound((void *)v3);
  49. (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 88))(v3);
  50. PlayerNameTriggerNameRegenerate(*(_DWORD *)(v3 + 176));
  51. CGUnit_C__CreateOrDestroyObjectEffectManager(v3);
  52. }
  53. }
  54. v8 = (int)off_9E0E24;
  55. if ( v11 != -1 )
  56. CDataStore__InternalDestroy(&v8, &v9, &v10, &v11);
  57. }
  58. }
  59. }
  60. }
Comments powered by Disqus